Redis - Cluster 알아보기

     

     

    이번 포스팅에서는 Redis Cluster 에 대해서 알아보도록 하겠습니다.

     

     

     

     

       Redis 이전글

     

     

     

     

    https://server-talk.tistory.com/471 - Redis - In-Memory - 알아보기​

     

     

    https://server-talk.tistory.com/472 - Redis - 서버 설치 및 기본설정 알아보기

     

     

    https://server-talk.tistory.com/473 - Redis - Redis-cli 기본 사용법

     

     

    https://server-talk.tistory.com/474 - Redis - Redis Desktop Manager Tool

     

     

    https://server-talk.tistory.com/475 - phpredis 설치 알아보기

     

     

     

     

       Redis - Cluster 란?

     

     

     

     

     

    Cluster 란? 여러 대의 서버를 하나로 묶어서 1개의 시스템처럼 동작하게 하는 것을 의미합니다

     

    그래서 여러 대의 서버에 데이터를 분산하여 저장하기 때문에 1대의 서버에 부하를 여러 대의 서버로 분산시키므로 더 빠른 속도로 사용자에게 서비스를 제공하게 됩니다

     

     

     

     

     

    특정 서버의 장애가 발생하게 되면 다른 서버로 연결하여 서비스의 중단과 데이터의 손실이 없이 계속해서 사용자에게 서비스를 제공할 수 있는 장점이 있습니다.

     

     

     

     

       Redis - 샤딩(Sharding) 지원

     

     

     

     

    이제는 서비스의 규모가 점점 더 커지고 수년동안 데이터를 쌓으면서 수십만, 수백만 건의 데이터가 1개의 테이블에 저장되는 것은 어려운 일이 아닙니다

     

    그리고 수십만, 수백만 건의 데이터가 있는 테이블에 데이터를 불러들인다면 데이터 저장, 삭제는 물론 조회 또한 오랜 시간이 소요되게 됩니다

     

    Redis 같은 Single thread 경우에는 Key의 많이 데이터가 있는 경우 서비스가 중단으로 심각한 장애가 생길 수 있습니다

     

     

     

    이러한 문제를 해결하기 위해 1개의 테이블의 데이터를 물리적으로 여러 파티션에 나누어 저장하고 조회, 저장, 삭제 등등 성능이 크게 향상되며, 이러한 기능을 수평적 파티셔닝(Horizontal Partitioning) 또는 샤딩(Sharding)이라고 합니다.

     

     

     

     

       Redis - Cluster의 구성방법

     

     

     

     

    1. Master로만 구성된 Cluster

     

     

    위 그림과 같이 3대의 Master가 구성되어 하게되면 데이터가 저장될때마다 M1, M2, M3 으로 순차적으로 변경하여 저장됩니다.

     

     

     

     

    2. Master와 Slave로 구성되어 있는 Cluster

     

     

    Master로만 이루어진 Cluster는 Master 중에 1대의 Node만이라도 장애가 발생한다면 서비스 중단과 데이터 손실이 발생하게 됩니다

    즉 Master로 되어 있는 Cluster는 Slave 서버와 같이 구축해야 됩니다.

     

     

     

     

     

    Master와 Slave 서버로 구성되어 있는 Cluster로 구성하면 Master Node의 있는 데이터를 복제하여 가지고 있으므로 Master Node가 장애가 발생해도 Slave Node가 Master Node로 승격하여 중단없이 사용자에게 서비스를 제공할 수 있게 됩니다

    그리고 Master와 Slave는 동일한 물리적 장비가아닌 다른 장비로 구성하는것을 권장하고 있습니다.

    Posted by 서버이야기