2013-03-15 8 views
9

[OK]を、私はいくつかの重要な情報が欠落しているように感じる。新しいRedisマスタがSentinelを使用しているクライアントを教える方法

は、ローカルIは、1つのマスタと異なるポートで http://redis.io/topics/sentinel

を実行している1つのスレーブRedisのサーバーは、私はまた、3人の歩哨を持っており、それらすべてが期待通りに互いを認識し、作業のように見えます。

私は127.0.0.1:6379を指している大きなJavaコードを持っています。ここでは、私のマスターredisサーバーがあります。

新しいマスターが

127.0.0.1:6380

である私は、マスターをテイクダウンした場合、予想通り、センチネルはそうマスタースレーブを促進everthingを行い、今私の質問はどのように私のコードはこれを知っているんですオートスイッチ?

答えて

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. 

のようなメッセージを公開することを掲示リンクで見ることができます。 Redisはスマートではありません。クライアントライブラリを使用してこれらの処理を行う必要があります。

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

+odown 
+failover-detected 
+switch-master 
+0

はRedisのマスター/スレーブにロードバランサを使用することについて..私はそれを持っている唯一の問題は、私が正しいスレーブに書き込むことはできませんとは何ですか? –

+0

スレーブを使用してロードバランスを行いたくないです。ロードバランシングを実行するには、複数のノードを実行し、どの鍵がどのノードに入るかを処理するためにクライアントのロジックを用意する必要があります。 –

+0

http://stackoverflow.com/questions/29210039/getting-redis-master-address-from-sentinel-c-sharp/29211741#29211741 – atikot

関連する問題