2

マスタースレーブをセットアップして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 セクションの下に、ダウンしたマスターが新しく選出されたマスターのスレーブとして追加されることが記載されています。しかし、マスターを倒すと、スレーブがマスターになります。しかし、古いマスターはまだ新しいマスターのスレーブではありません. センチネルの正しい使い方ですか..?

センチネルを使用してフェイルオーバーを処理する方法を見つけるための提案はありますか? または、ノード用の他のセンチネルクライアントパッケージ..?

4

4 に答える 4

1

私に関する限り(redisの初心者)、センチネルはスレーブフォームマスターの情報を取得できます。したがって、便宜上、次のようにすることができます:

  1. マスタースレーブ設定;
  2. Sentinelモニターマスター。これは、スレーブの情報が sentinel.conf にないことを意味します。
  3. 「redis-cli」をsentinelに送り、コマンド「sentinel failover mymaster」(ご存じのとおり、「mymaster」はマスターの名前)を実行すると、マスターとスレーブが切り替わったことがわかります。

さらに、センチネルの数が十分であることを確認する必要があります。たとえば、quonum が 2 の場合、sentinel の数が少なくとも 3 であることを確認します。いずれかのsentinel に接続し、exec " SENTINEL sentinels< master name> "、または exec " SENTINEL ckquorum < master name> " を確認します。

于 2015-12-02T03:28:47.290 に答える
0

2.8 を使用する以外に、sentinel 構成はマスター ノードのみを監視する必要があります。スレーブはすべて自動検出されます。

したがって、センチネル構成の唯一のものは

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
于 2014-07-24T19:05:29.823 に答える
0

Windows では redis とセンチネルが適切にサポートされていません。最新の redis-stable バージョンを使用して仮想 ubuntu で同じことを確認すると、すべて正常に動作します。

于 2014-05-07T10:02:27.027 に答える