2017-11-22 27 views
1

클러스터 장애 조치 중에 소프트웨어 동작을 테스트하려고하는데, 가장 간단한 클러스터 (하나의 마스터와 2 개의 슬레이브)를 구성하려고합니다. 나는 나무 파일 7000.conf이 - 다음과 같은 내용의 7002.conf을 :Redis 클러스터 장애 조치 : 슬레이브가 마스터가되지 않습니다.

port 7000 
cluster-config-file nodes.7000.conf 
appendfilename appendonly.7000.aof 
dbfilename dump.7000.rdb 
pidfile /var/run/redis_7000.pid 

include cluster.conf 

cluster.conf를의 내용 : 나는 7000 것을 다음 구성한

cluster-enabled yes 
appendonly yes 
maxclients 100 
daemonize yes 
cluster-node-timeout 2000 
cluster-slave-validity-factor 0 

0에서 16383까지의 모든 슬롯을 실행하며, 7001과 7002는 7000의 복제본입니다.

XXX 127.0.0.1:7002 slave YYY 0 1511389011347 4 connected 
YYY 127.0.0.1:7000 myself,master - 0 0 4 connected 0-16383 
ZZZ 127.0.0.1:7001 slave YYY 0 1511389011246 4 connected 

그런 다음 나는 shutdown 명령을 사용하거나 프로세스를 죽이는 방법을 통해 7000을 제거하려고합니다. 노예 중 하나는 주인에게 자신을 홍보해야하지만, 아무도하지 않습니다 :

ZZZ 127.0.0.1:7001 slave YYY 0 0 3 connected 
YYY 127.0.0.1:7000 master,fail? - 1511389104442 1511389103933 4 disconnected 0-16383 
XXX 127.0.0.1:7002 myself,slave YYY 0 1511389116543 4 connected 

내가 좋아하는 분 동안 기다렸다, 나의 노예가 주인이 될 싶지 않다. 슬레이브가 cluster failover takeover을 통해 마스터가되도록 강제하면 그렇게하는 것이 행복합니다 (마스터를 다시 시작하면 슬레이브가됩니다). 그러나 자동으로되지는 않습니다.

cluster-node-timeout으로 게임을 시도했지만 도움이되지 않습니다.

내가 잘못 했나요? Redis 버전은 3.2.11입니다.

답변

0

자동 장애 조치 작업을 수행하기 위해 redis-cluster의 최소 크기는 3 마스터입니다. 그것은 서로를 주시하고 장애 조치를 감지하는 마스터 노드이므로 클러스터의 단일 마스터에서 하나의 마스터가 작동 중지되었음을 감지 할 수있는 프로세스가 없습니다. 최소 3 개는 다운 된 노드의 경우 대다수의 전체 클러스터가 동의해야하기 때문에 최소 3 개 노드가 필요하며 그 중 절반 이상이 여전히 과반수에 도달하도록해야합니다 실패한 경우보기.

레디 스 클러스터 튜토리얼은 다음 섹션에서 언급 : https://redis.io/topics/cluster-tutorial#creating-and-using-a-redis-cluster

"Note that the minimal cluster that works as expected requires to contain at least three master nodes."