マスタースレーブをセットアップしてredisの作業を開始しました。マスターとスレーブは、ポートが異なる同じマシンに設定されています。マスター/スレーブのフェイルオーバーを処理するために、redis にはセンチネルがあったようです。センチネルを実装しようとしています。
マスターの redis.conf:
bind 127.0.0.1(local Machine)
Port 6379
スレーブ用の私の redis1.conf:
bind 127.0.0.1
port 6380
slaveof 127.0.0.1 6379
私のsentinel.confには次のものがあります:
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
sentinel monitor resque 127.0.0.1 6380 1
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5
Sentinel クライアントにhttps://www.npmjs.org/package/redis-sentinel-clientを使用しています。
マスターとスレーブの両方に使用しているsentinel.confファイルは1つだけです。両方のサーバーを実行し、マスターサーバーを強制終了して確認しました。予想通り、スレーブがマスターになります。http://redis.io/topics/sentinel-oldの Resurrecting master セクションの下に、ダウンしたマスターが新しく選出されたマスターのスレーブとして追加されることが記載されています。しかし、マスターを倒すと、スレーブがマスターになります。しかし、古いマスターはまだ新しいマスターのスレーブではありません. センチネルの正しい使い方ですか..?
センチネルを使用してフェイルオーバーを処理する方法を見つけるための提案はありますか? または、ノード用の他のセンチネルクライアントパッケージ..?