k8s_redis_cluster_3
쿠버네티스 환경에서 Redis-Cluster 구축 실전 가이드 ③
Failover(장애조치) 테스트
🖧 1. Redis-Cluster 파드 다이어그램 (초기 상태)
1. Failover(장애조치) 테스트
Redis-0 파드를 다운시켜서 Redis-4가 Replica에서 Master로 전환(승격)되는지 확인
redis.conf replica-priority 값은 Redis-Cluster에서 사용되지 않는다.
Redis-Sentinel에서 사용된다.
대신 가장 최신 데이터를 받은 복제가 마스터가 된다.
여기서는 마스터별로 복제가 하나이므로 Redis-0의 복제인 Redis-4가 마스터가 된다.
💥 파드 다운 후 재시작하면 IP가 변경된다.
Redis-0 💥 다운(delete)
💻 Redis-0 LOG: Master -> Replica
① 24초 kill 시그널을 받고 레디스 다운 (+0초)
② 26초 레디스 자동 재시작 (+2초)
③ 35초 Master -> Replica(Slave)로 전환 (+11초)
Redis-0 전체 로그
💻 Redis-1 LOG: Master
① 28초 Redis-0 다운 확정(Fail/odown) (+4초) -> cluster-node-timeout 3000ms
② 29초 Redis-4 새 마스터 승격 (+5초)
💻 Redis-4 LOG: Replica -> Master
① 24초 Redis-0 다운 감지 (+0초)
② 29초 마스터로 승격 (+5초)
Redis-4 전체 로그
🧮 Failover(장애조치) 후 상황
Redis-0 IP가 '10.42.0.231'에서 '10.42.0.242'로 변경됐다.
🖧 Redis-Cluster 파드 다이어그램 (Failover 후)
2. Failback(원상복구) 테스트
현재 마스터인 Redis-4를 다운시켜서 Redis-0가 Replica에서 Master로 전환(승격)되는지 확인
📚 'Failback(원상복구) 테스트'는 Redis-0 파드가 다시 마스터가 되도록 한다는 의미에서 사용했다.
(Failover 테스트와 구분하기 위해서 사용했다)
💻 Redis-4 💥다운(delete)
💻 Redis-0 LOG: Replica -> Master
① 52초 Redis-4 연결 단절 (+0초)
② 56초 Redis-4 다운 확정(Fail/odown) (+4초)
③ 57초 Replica -> Master로 전환(승격) (+5초)
Redis-0 전체 로그
💻 Redis-1 LOG: Master
① 56초 Redis-4 다운 확정 (+4초)
② 57초 Redis-0 새 마스터로 승격 (+5초)
💻 Redis-4 LOG: Master -> Replica
① 19분 52초 kill 시그널을 받고 다운 (+0초)
② 19분 54초 파드(Redis) 재시작 (+2초)
③ 20분 02초 Master -> Replica(Slave)로 전환 (+10초)
Redis-4 전체 로그
🧮 Failback(원상복구) 후 상황
Redis-4 IP가 '10.42.0.239'에서 '10.42.0.243'로 변경됐다.
🧮 Cluster info 확인
🧮 Cluster nodes 확인
🖧 Redis-Cluster 파드 다이어그램 (Failback 후)
🧑💻 결론
Redis-Cluster Failover(장애 조치), Failback(원상 복구) 테스트 성공
파드(pod)를 다운, 재시작하면 IP가 변경되지만 아무 문제없이 처리된다.
Failover(장애조치) 테스트: Redis-0 SLEEP(멈춤)
SLEEP 테스트는 레디스가 어떤 이유로든 응답하지 못하는 상황을 만들어서,
이 경우도 제대로 Failover(장애 조치)가 되는지 확인하는 테스트이다.
💥 'Sleep 10'은 레디스를 10초 동안 멈추는 것이므로 IP는 변경되지 않는다.
1. Failover(장애조치) 테스트
• Failover(장애조치) 테스트: Redis-0 Sleep 10 -> Redis-4가 Replica에서 Master로 전환(승격)되는지 확인
Redis-0 SLEEP 10
💻 Redis-0 LOG: Master -> Replica
① 17초 SLEEP 시작 (+0초)
② 27초 SLEEP 종료 (+10초)
③ 27초 Master -> Replica로 전환 (+10초)
Redis-0 전체 로그
💻 Redis-1 LOG: Master
① 21초 Redis-0 다운 확정(Fail/odown) (+4초) -> cluster-node-timeout 3000ms
② 22초 Redis-4 Replica -> Master로 전환 (+5초)
③ 27초 Redis-0 재시작 (+10초)
💻 Redis-4 LOG: Replica -> Master
① 21초 Redis-0 다운 확정(Fail/odown) (+4초)
② 22초 Replica -> Master로 전환 (+5초)
Redis-4 로그 전체
🧮 Failover(장애조치) 후 상황
IP는 변경되지 않습니다. 파드 자체는 계속 살아있습니다. 'AGE' 항목 참조.
🧮 Cluster info 조회
🧮 Cluster nodes 조회
🖧 Redis-Cluster 파드 다이어그램 (Failover 후)
2. Failback(원상복구) 테스트
• Failback(원상복구) 테스트: Redis-4 Sleep 10 -> Redis-0가 Replica에서 Master로 전환(승격)되는지 확인
💻 Redis-4 SLEEP 10
💻 Redis-0 LOG: Replica -> Master
① 26초 SLEEP 명령 실행 (+0초)
② 30초 Redis-4 다운 확정(Fail/odown) (+4초)
③ 31초 Redis-0 Replica -> Master로 전환 (+5초)
④ 36초 Redis-4 재시작 (+10초)
Redis-0 전체 로그
💻 Redis-1 LOG: Master
① 30초 Redis-4 다운 확정(Fail/odown) (+4초)
② 31초 Redis-0 Replica -> Master로 전환(승격) (+5초)
③ 36초 Redis-4 재시작 (+10초)
💻 Redis-2 LOG: Redis-1 로그와 동일하여 생략함
💻 Redis-4 LOG: Master -> Replica
① 26초 SLEEP 명령 실행 (+0초)
① 36초 SLEEP 명령 종료 -> 복제(Redis-0)와 연결 끊김 (+10초)
② 36초 Master -> Replica로 전환 (+10초)
Redis-4 로그 전체
🧮 Failback(원상복구) 후 상황
🧮 Cluster info 조회
🧮 Cluster nodes 조회
🖧 Redis-Cluster 파드 다이어그램 (Failback 후)
🧑💻 결론
SLEEP 명령을 사용한 Redis-Cluster Failover(장애 조치), Failback(원상 복구) 테스트 성공
SLEEP 명령을 사용하면 레디스가 다운되지도 않고, IP가 변경되지도 않지만,
3초 이상 응답이 없으면 장애 조치가 실행된다.
➡ 여기까지는 Redis-Cluster 단독으로 테스트했습니다.
Java(Spring) App와 연결해서 작동하는 것까지 보려면 여기를 클릭하세요.
| << K8s Redis-Cluster 구축 ② | K8s Redis-Cluster App ① >> |
|---|
