Redis 6개 인스턴스로 Cluster와 장애 전환 실습하기

목차

원노트의 단일 서버 실습을 기준으로 Redis Cluster의 샤딩과 복제본 선출을 확인합니다. 한 서버의 6개 프로세스는 서버 자체의 장애에 대비하는 이중화가 아니며, 운영은 호스트·전원·네트워크 장애 영역을 나누어 설계합니다.

인스턴스 6개 준비

포트 6000·6001·6002·7000·7001·7002를 각각 사용합니다. 각 인스턴스의 데이터 디렉터리, 로그, PID와 nodes 파일은 분리해야 합니다. Cluster 데이터 포트 외에 기본적으로 데이터 포트+10000의 버스 포트도 사용합니다.

TERMINAL / CONFIG
port 6000
bind 127.0.0.1
cluster-enabled yes
cluster-config-file nodes-6000.conf
cluster-node-timeout 5000
dir /var/lib/redis/6000

나머지 5개도 포트와 경로를 바꿔 준비합니다. 데이터가 비어 있는 실습 인스턴스인지 확인합니다. ACL·암호·영속성 설정은 모든 노드에 일관되게 적용해야 하며 원본 노드들 사이에서 자동 공유된다고 가정하지 않습니다.

클러스터 생성

원본 3개와 각 원본의 복제본 1개가 되도록 한 번에 구성하는 예시입니다. 실제 생성 전 화면에 표시되는 노드 배치와 slot 할당을 확인합니다.

TERMINAL / CONFIG
redis-cli --cluster create 127.0.0.1:6000 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 --cluster-replicas 1
redis-cli -p 6000 CLUSTER NODES
redis-cli -p 6000 CLUSTER INFO
redis-cli --cluster check 127.0.0.1:6000

리다이렉트와 장애 전환 확인

-c를 지정한 클라이언트는 키의 슬롯을 가진 노드로 리다이렉트할 수 있습니다. Cluster 대응 라이브러리를 사용하지 않는 애플리케이션은 MOVED 오류를 처리하지 못할 수 있습니다.

TERMINAL / CONFIG
redis-cli -c -p 6000 SET app:cluster-test hello
redis-cli -c -p 6000 GET app:cluster-test

실습 원본 프로세스 하나를 중지한 뒤 CLUSTER NODES와 로그에서 복제본 승격을 확인합니다. 노드의 역할과 실제 데이터 조회를 검증하고 중지한 노드를 다시 기동해 새 역할을 확인합니다. KEYS *로 전체 데이터를 반복 조회하기보다 필요한 시험 키나 SCAN을 사용합니다.

DB › Redis
Redis 목록