2017-11-22 7 views
1

クラスタフェールオーバー中にソフトウェアの動作をテストしようとしているため、最も単純なクラスタを構成したいと考えています。私は、ツリーファイル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マスターであることです。お互いを監視し、フェールオーバーを検出するのはマスターノードであるため、クラスタ内の単一のマスターでは、実行中のプロセスが1つのマスターがダウンしていることを検出できません。最低3つは、ダウンしたノードの場合、クラスタ全体の大半が合意する必要があることを確認することです。最低でも3つのノードが必要です。失敗した場合の表示

Redisのクラスタのチュートリアルは、次のセクションでこれを言及: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." 
関連する問題