web-dev-qa-db-ja.com

マスターがRedisクラスターで失敗した後、Redisスレーブがマスターを引き継がないのはなぜですか?

2つのマスターと4つのスレーブ(各マスターに2つのスレーブ)を持つRedisクラスターがあります。マスターを手動でクラッシュさせた後(つまり、redis-cli -p 6379 debug segfault)スレーブは何もしません。彼らはマスターに何か問題があることを検出しましたが、何もしていません(私は20分間待ちました)。

これがクラスターノードの出力です(つまり、redis-cli cluster nodes):

08dfd1bdd470a8831b33b7b0409a40bf45ee22d0 192.168.0.15:6379 myself,slave 55787eb63780365a0c7d4a0ed72cac4b97a55ed0 0 0 1 connected
7fedf234aba8d906dca5a4725a54d1cc5c979c18 192.168.0.18:6379 slave a739cfbcd9b804345808bb3a78b6a00b2d6050f9 0 1477865886164 2 connected
a739cfbcd9b804345808bb3a78b6a00b2d6050f9 192.168.0.14:6379 master,fail? - 1477865551940 1477865548392 0 disconnected 8192-16383
5dcc0a0a3f13ea9343171a13fbf0ec7054dfc2ab 192.168.0.19:6379 slave a739cfbcd9b804345808bb3a78b6a00b2d6050f9 0 1477865884135 5 connected
55787eb63780365a0c7d4a0ed72cac4b97a55ed0 192.168.0.16:6379 master - 0 1477865885150 2 connected 0-8191
601a5e0dd9d40d8c01119714e89be63eaee87900 192.168.0.17:6379 slave 55787eb63780365a0c7d4a0ed72cac4b97a55ed0 0 1477865882100 3 connected

ここにあるように、失敗したマスターノードがあります192.168.0.14:6379これはmaster,fail? 。なぜ疑問符が表示されるのかわかりません。しかし、私は20分待っていて、何も変わりませんでした。なぜスレーブはマスターを引き継がないのですか?

1
Oleksandr

Redisクラスターを形成するには、少なくとも3つのマスターが必要です。マスターの大多数が同時に死ぬと、クラスターは使用できなくなります。マスターの大部分が利用できない場合、フェイルオーバーは発生しません。

3
Pankaj Makhija

純粋なredisはそれ自体ではフェイルオーバーを実行できないためです。 redisに関するマスターとスレーブは、負荷分散のためだけのものです。自動フェイルオーバーを実現するには、Sentinel(デフォルトでredisに付属しているredis用モジュール)を使用する必要があります。

0