10

わかりました。重要な情報が不足しているように感じます。

ローカルでは、1つのマスターと1つのスレーブredisサーバーが異なるポートで実行されています http://redis.io/topics/sentinel

私も3人の歩哨を持っていますが、それらはすべてお互いを認識していて、期待どおりに機能しているようです。

これで、マスターredisサーバーがある127.0.0.1:6379を指す大きなJavaコードができました。

マスターを降ろすと、センチネルは期待どおりにすべてを実行してスレーブをマスターに昇格させるので、新しいマスターがオンになります

127.0.0.1:6380

私の質問は、私のコードがこれをどのように認識し、自動切り替えするのかということです。

4

1 に答える 1

7

pubsubチャネルの1つでセンチネルメッセージをサブスクライブする必要があります。あなたが投稿したリンクで、番兵が次のようなメッセージを公開することがわかります

+odown <instance details> -- The specified instance is now in Objectively Down state.
-odown <instance details> -- The specified instance is no longer in Objectively Down state.
+failover-takedown <instance details> -- 25% of the configured failover timeout has elapsed, but this sentinel can't see any progress, and is the new leader. It starts to act as the new leader reconfiguring the remaining slaves to replicate with the new master.
+failover-triggered <instance details> -- We are starting a new failover as a the leader sentinel.

したがって、これらのチャネルの1つでセンチネルが公開されているのを確認したら、メッセージを解析し、それに応じてクライアントに応答させる必要があります。Redisは賢くありません-クライアントライブラリを使用してこれらを処理する必要があります。

具体的には、最も有用なチャネルは

+odown
+failover-detected
+switch-master
于 2013-03-15T16:26:37.623 に答える