如何告诉客户新Redis主站使用Sentinel的位置

时间:2013-03-15 16:21:36

标签: java redis sentinel

好的,我觉得我错过了一些重要的信息。

本地我在不同的端口上运行1个主服务器和1个从服务器redis服务器 http://redis.io/topics/sentinel

我也有3个哨兵,他们似乎彼此都知道并按预期工作。

现在我有一大堆指向127.0.0.1:6379的java代码,其中我的主redis服务器是。

如果我取下主人,哨兵会按预期继续推进奴隶掌握,所以现在新主人已经开启了

127.0.0.1:6380

我的问题是我的代码如何知道这一点并自动切换?

1 个答案:

答案 0 :(得分:7)

您必须在其pubsub频道之一订阅哨兵消息。您可以在发布的链接中看到哨兵将发布消息,如

+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