Redis ‐ Redis Cluster Mode - dnwls16071/Backend_Study_TIL GitHub Wiki
📚 Redis Cluster
[ Standalone 모드 ]
[ Sentinel 모드 ]
- Sentinel은 Redis의 Master/Slave를 모니터링하는 서버다.
- Sentinel은 Redis의 고가용성을 보장하기 위해 Master, Replica(Slave) 노드들의 상태를 지속적으로 모니터링하는 시스템이다.
- Master 노드가 비정상적으로 종료됐을 때, Slave를 Master로 승격시키기 위해 자동 FailOver를 진행한다.
- Master 노드의 다운을 감지한다
- Replica(Slave) 중에서 새로운 Master를 선출한다.
- 다른 Replica들에게 새로운 Master 정보를 전파한다.
- 애플리케이션에게 새로운 Master 정보를 제공한다.
- 각 Sentinel은 Redis 모든 노드와 연결되어 있다.
- 최소 3개의 인스턴스가 필요하고 홀수개로 구성해야 한다.
- 과반수 투표 방식으로 의사결정을 하기 때문에 홀수개로 구성해야 하는 것이다.
[ Cluster 모드 ]
- Redis Cluster는 여러 노드에 데이터를 자동 분산하고 일부 노드에 결함이 있어도 계속 운영되는 가용성을 제공한다.
- 또한 고성능으 보장하면서 선형 확장성을 제공한다.
- Redis 클러스터 모드는 아키텍처의 변경 없이 Redis 인스턴스 간 수평 확장이 가능하게 해준다.
- 또 데이터의 분산 처리, 복제, 자동 FailOver 기능을 제공한다.
📚 Redis Cluster 동작

- 클러스터 구조에서 모든 데이터는 해시 슬롯에 저장된다. Redis는 총 16,384개의 해시 슬롯을 가지고 마스터 노드는 이 해시 슬롯을 나눠 갖는다.
- 마스터 A: 0-5500
- 마스터 B: 5501-11000
- 마스터 C: 11001-16383
- 모든 키는 CRC16 알고리즘을 통해 해시 슬롯에 매핑된다.
- Sentinel 모드와 마찬가지로 Cluster 구조에서도 복제와 FailOver를 통해 고가용성을 보장한다.
- Cluster 모드에서는 Sentinel 인스턴스 대신에 일반 Redis 노드가 Cluster 버스를 통해 통신하고 서로를 감시하며, 인스턴스에 문제가 생겼을 때 자동으로 구조를 재구성한다.
[ Auto FailOver 방식 ]

- Master1 노드에 장애가 생겼을 때 Replica1 노드가 다른 Master 노드들에게 FailOver를 시도해도 될지 투표 요청을 보낸다.
- 그리고 과반수 이상 투표를 받을 시 Replica1 노드가 Master1 노드를 대체해 승격된다.
[ Auto Replica Migration 방식 ]

- Master1 노드에 장애가 발생하며 Replica1 노드가 Master1 노드를 대체하며 승격되었다.
- 이 때, 복제본이 없는 현상이 발생하는데, Master3 노드와 연결된 2개의 복제본 중 Replica4 노드를 Replica1 노드의 복제본이 되도록 이동시킨다.
- 이를 통해 모든 Master 노드가 적어도 1개 이상의 복제본에 의해 복제가 된다는 것을 보장하며 클러스터 전체의 안정성을 향상시킨다.