DB

Redis Cluster란?

Raconer 2025. 6. 17. 18:41
728x90
고가용성과 수평 확장을 지원하는 Redis의 분산 시스템 기능

📌 1. 왜 Redis Cluster인가?

기존 Redis는 단일 노드 구조로, 다음과 같은 한계를 가짐:

  • 메모리 한계: 한 노드에 모든 데이터를 담아야 함
  • 장애 발생 시 전체 서비스 영향
  • 수평 확장 불가
👉 Redis Cluster는 이러한 문제를 해결하며, 데이터 샤딩(sharding)장애 자동 전환(failover) 을 지원함.

🧱 2. 구성 요소와 역할

Redis Cluster는 보통 다음 구성으로 운영됨:

 

역할 설명
마스터 노드 (Master) 데이터를 직접 저장하고 클라이언트 요청 처리
슬레이브 노드 (Replica/Slave) 특정 마스터의 복제본, 마스터 장애 시 자동 승격
클러스터 슬롯 (Slots) 0 ~ 16383까지 총 16384개의 슬롯으로 분산 저장

 


🎯 3. 데이터 분산 방식

Redis Cluster는 슬롯 기반 샤딩(Slot-based Sharding) 방식을 사용:

  • Redis는 key의 해시값을 기반으로 0~16383 슬롯 중 하나를 계산
  • 전체 슬롯을 여러 마스터가 나누어 담당함

예:

  • master-1: 슬롯 0 ~ 5460
  • master-2: 슬롯 5461 ~ 10922
  • master-3: 슬롯 10923 ~ 16383
슬레이브는 각 마스터에 대응되어 데이터 백업 및 장애 대응을 수행

🔄 4. 장애 복구와 자동 Failover

  • 마스터가 다운되면, 해당 마스터의 슬레이브가 자동으로 승격
  • 클러스터 내 다른 노드들이 gossip protocol로 상태를 주기적으로 확인
  • 정족수(quorum)에 의해 장애 여부를 판단하고 조치

🕸 5. 노드 간 통신

Redis Cluster는 두 가지 포트를 사용:

포트 설명
Redis 포트 (예: 7001) 클라이언트와의 기본 통신
클러스터 버스 포트 (예: 17001) 노드 간 통신용 (클러스터 메타 정보 공유, failover 처리 등)

🔗 6. 클라이언트 연결 방식

Redis Cluster는 일반 Redis와 달리 다음 특징이 있음:

  • 클러스터 모드 지원 클라이언트를 사용해야 함 (redis-cli -c, Lettuce, Jedis 등)
  • 키에 따라 자동으로 해당 마스터 노드로 redirection (MOVED 응답)
클러스터를 구성하지 않은 노드에서 cluster-enabled yes만 설정하면 오류가 발생할 수 있음.

✅ 7. 클러스터 장점 요약

기능 설명
샤딩 데이터를 자동 분산 저장
고가용성 마스터 장애 시 슬레이브 자동 승격
확장성 노드 추가로 쉽게 수평 확장 가능
자가 치유 노드 간 상태 확인 및 자동 회복 기능

🧩 8. 관계 구조 예시

[master-7001] ← replicates ← [slave-7005]
[master-7002] ← replicates ← [slave-7006]
[master-7003] ← replicates ← [slave-7004]
  • 각 마스터는 약 5461개의 슬롯을 담당
  • 각 슬레이브는 마스터의 복제본으로 백업 및 장애 전환 준비
  • 클러스터 구성 시 --cluster-replicas 1 옵션으로 자동 매핑 가능
728x90