cluster_failover
Redis CLUSTER FAILOVER
레디스 클러스터 교육 |
레디스 정기점검/기술지원 Redis Technical Support |
레디스 엔터프라이즈 서버 Redis Enterprise Server |
---|
Redis CLUSTER FAILOVER
CLUSTER FAILOVER [FORCE|TAKEOVER]는 슬레이브 노드를 마스터 노드로 역할을 바꾸어 주는 명령이다.
이 명령은 슬레이브 노드에서만 실행 수 있다.
이 문서는 버전 3.2.0을 기준으로 만들었습니다.
사용법
- No option: 마스터가 살아있을 때 사용한다.
- FORCE: 마스터가 다운되었을 때 사용한다.
- TAKEOVER: 마스터가 다운되었고, 마스터 개수가 2개 이하일 때 사용한다.
Master 1 - Slave 1 일때: cluster failover를 사용
- CLUSTER FAILOVER
- Master 7000번 서버 로그
- Master 7001번 서버 로그
- FAILOVER 결과
[redis-3.2.0]# src2/redis-cli -p 7001 cluster failover
OK
OK
22:07:25.759 # Manual failover requested by slave 7b93c61f5600b44fc123d4e553096264f9406520.
22:07:26.018 # Failover auth granted to 7b93c61f5600b44fc123d4e553096264f9406520 for epoch 2
22:07:26.018 # Connection with slave 127.0.0.1:7001 lost.
22:07:26.039 # Configuration change detected. Reconfiguring myself as a replica of 7b93c61f5600b44fc123d4e553096264f9406520
22:07:26.824 * Connecting to MASTER 127.0.0.1:7001
22:07:26.824 * MASTER <-> SLAVE sync started
22:07:26.824 * Non blocking connect for SYNC fired the event.
22:07:26.824 * Master replied to PING, replication can continue...
22:07:26.824 * Partial resynchronization not possible (no cached master)
22:07:26.825 * Full resync from master: e70c6ce94355b9cd5986c21930835ffc4fe92e6e:3891
22:07:26.894 * MASTER <-> SLAVE sync: receiving 1566 bytes from master
22:07:26.895 * MASTER <-> SLAVE sync: Flushing old data
22:07:26.895 * MASTER <-> SLAVE sync: Loading DB in memory
22:07:26.895 * MASTER <-> SLAVE sync: Finished with success
22:07:26.018 # Failover auth granted to 7b93c61f5600b44fc123d4e553096264f9406520 for epoch 2
22:07:26.018 # Connection with slave 127.0.0.1:7001 lost.
22:07:26.039 # Configuration change detected. Reconfiguring myself as a replica of 7b93c61f5600b44fc123d4e553096264f9406520
22:07:26.824 * Connecting to MASTER 127.0.0.1:7001
22:07:26.824 * MASTER <-> SLAVE sync started
22:07:26.824 * Non blocking connect for SYNC fired the event.
22:07:26.824 * Master replied to PING, replication can continue...
22:07:26.824 * Partial resynchronization not possible (no cached master)
22:07:26.825 * Full resync from master: e70c6ce94355b9cd5986c21930835ffc4fe92e6e:3891
22:07:26.894 * MASTER <-> SLAVE sync: receiving 1566 bytes from master
22:07:26.895 * MASTER <-> SLAVE sync: Flushing old data
22:07:26.895 * MASTER <-> SLAVE sync: Loading DB in memory
22:07:26.895 * MASTER <-> SLAVE sync: Finished with success
22:07:25.759 # Manual failover user request accepted.
22:07:25.821 # Received replication offset for paused master manual failover: 3890
22:07:25.891 # All master replication stream processed, manual failover can start.
22:07:25.891 # Start of election delayed for 0 milliseconds (rank #0, offset 3890).
22:07:25.992 # Starting a failover election for epoch 2.
22:07:26.018 # Failover election won: I'm the new master.
22:07:26.018 # configEpoch set to 2 after successful failover
22:07:26.018 # Connection with master lost.
22:07:26.018 * Caching the disconnected master state.
22:07:26.018 * Discarding previously cached master state.
22:07:26.825 * Slave 127.0.0.1:7000 asks for synchronization
22:07:26.825 * Full resync requested by slave 127.0.0.1:7000
22:07:26.825 * Starting BGSAVE for SYNC with target: disk
22:07:26.825 * Background saving started by pid 52834
22:07:26.841 * DB saved on disk
22:07:26.841 * RDB: 0 MB of memory used by copy-on-write
22:07:26.894 * Background saving terminated with success
22:07:26.894 * Synchronization with slave 127.0.0.1:7000 succeeded
22:07:25.821 # Received replication offset for paused master manual failover: 3890
22:07:25.891 # All master replication stream processed, manual failover can start.
22:07:25.891 # Start of election delayed for 0 milliseconds (rank #0, offset 3890).
22:07:25.992 # Starting a failover election for epoch 2.
22:07:26.018 # Failover election won: I'm the new master.
22:07:26.018 # configEpoch set to 2 after successful failover
22:07:26.018 # Connection with master lost.
22:07:26.018 * Caching the disconnected master state.
22:07:26.018 * Discarding previously cached master state.
22:07:26.825 * Slave 127.0.0.1:7000 asks for synchronization
22:07:26.825 * Full resync requested by slave 127.0.0.1:7000
22:07:26.825 * Starting BGSAVE for SYNC with target: disk
22:07:26.825 * Background saving started by pid 52834
22:07:26.841 * DB saved on disk
22:07:26.841 * RDB: 0 MB of memory used by copy-on-write
22:07:26.894 * Background saving terminated with success
22:07:26.894 * Synchronization with slave 127.0.0.1:7000 succeeded
[redis-3.2.0]# src2/redis-cli -p 7001 cluster slots
1) 1) (integer) 0
2) (integer) 16383
3) 1) "127.0.0.1"
2) (integer) 7001
3) "7b93c61f5600b44fc123d4e553096264f9406520"
4) 1) "127.0.0.1"
2) (integer) 7000
3) "3a452aae5e19b91f212eef18276325b13cd57513"
1) 1) (integer) 0
2) (integer) 16383
3) 1) "127.0.0.1"
2) (integer) 7001
3) "7b93c61f5600b44fc123d4e553096264f9406520"
4) 1) "127.0.0.1"
2) (integer) 7000
3) "3a452aae5e19b91f212eef18276325b13cd57513"
Master 1 이 다운되고 Slave 1 만 살아있을 일때 cluster failover takeover를 사용
- CLUSTER FAILOVER를 사용하면
- CLUSTER FAILOVER FORCE를 사용하면
- CLUSTER FAILOVER TAKEOVER: failover 성공
[redis-3.2.0]# src/redis-cli -p 7000 cluster failover
(error) ERR Master is down or failed, please use CLUSTER FAILOVER FORCE
(error) ERR Master is down or failed, please use CLUSTER FAILOVER FORCE
[redis-3.2.0]# src/redis-cli -p 7000 cluster failover force
7000번 서버 로그: failover는 되지 않는다.
22:31:50.126 # Forced failover user request accepted.
22:31:50.215 # Start of election delayed for 0 milliseconds (rank #0, offset 5795).
22:31:50.315 # Starting a failover election for epoch 3.
22:31:50.416 # Currently unable to failover: Waiting for votes, but majority still not reached.
22:31:50.215 # Start of election delayed for 0 milliseconds (rank #0, offset 5795).
22:31:50.315 # Starting a failover election for epoch 3.
22:31:50.416 # Currently unable to failover: Waiting for votes, but majority still not reached.
[redis-3.2.0]# src/redis-cli -p 7000 cluster failover takeover
7000번 서버 로그
22:32:13.557 # Taking over the master (user request).
22:32:13.557 # New configEpoch set to 4
22:32:13.557 * Discarding previously cached master state.
22:32:16.498 # Cluster state changed: ok
22:32:13.557 # New configEpoch set to 4
22:32:13.557 * Discarding previously cached master state.
22:32:16.498 # Cluster state changed: ok
명령문
CLUSTER FAILOVER [FORCE|TAKEOVER]
- 이 명령은 version 3.0.0 부터 사용할 수 있다.
- 논리적 처리 소요시간은 O(1)이다.
Clients for Java | Jedis, Lettuce | Clients for C | Hiredis |
<< CLUSTER SHARDS | CLUSTER FAILOVER | CLUSTER COUNT-FAILURE-REPORTS >> |
---|
Email
답글이 올라오면 이메일로 알려드리겠습니다.