次のように3つのredisサーバーがセットアップされています。
Node1: Default Redis Master & Running Redis Sentinel Software
Node2: Redis Slave & Running Redis Sentinel Software
Node3: Redis Slave & Running Redis Sentinel Software
node1 に移動し、redis-server を停止するコマンド (service redis-server stop) を発行すると、センティネルはマスター上の redis がダウンしたことをすぐに検出し、Node2 または Node3 をマスターに昇格させます (まさに私たちが望むもの/予想)。
ここで、ノード 1 に戻って、再び起動したとします (service redis-server start)。「redis-cli info | grep ^role」を発行すると、数秒間 (10 ~ 15 秒) Node1 がまだ自分をマスターと見なしていることがわかります。
その結果、短い期間、マスターが 2 人いることになります。最終的に数秒後、センチネルが状況を整理し、Node1 がスレーブに降格されます。ただし、マスターが 2 つあると (数秒間でも)、データの整合性の問題が発生する可能性があると思います。
ノード 1 がまだマスターであると認識しているときにノード 1 に送信されたデータがスレーブに降格されるとどうなりますか。それに送信されたそのデータは失われますか?
これを回避する方法はありますか?センチナルがスレーブ/マスターであると通知するまで、redis-server が接続を受け入れないようにする設定はありますか? 他にどのように対処できますか?
ありがとうブラッド