Как сообщить клиенту, где новый мастер Redis использует Sentinel
хорошо, я чувствую, что мне не хватает какой-то важной информации.
локально у меня есть 1 главный и 1 ведомый сервер redis, работающий на разных портах http://redis.io/topics/sentinel
У меня также есть 3 часовых, и все они, похоже, знают друг о друге и работают, как ожидалось.
теперь у меня есть большой код java, указывающий на 127.0.0.1:6379, где находится мой главный сервер redis.
Если я сниму мастера, страж делает everthing, как и ожидалось, продвигая раба к хозяину, так что теперь новый хозяин включен
127.0.0.1:6380
мой вопрос в том, как мой код знает это и автоматический переключатель?
1 ответов
вы должны подписаться на сообщения sentinel на одном из своих каналов pubsub. Вы можете увидеть по ссылке, которую вы опубликовали, что sentinel опубликует такие сообщения, как
+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.
поэтому, когда вы видите публикацию sentinel на одном из этих каналов, вам нужно проанализировать сообщение и заставить вашего клиента ответить соответствующим образом. Redis не умный - вы должны обрабатывать эти вещи, используя клиентскую библиотеку.
в частности, наиболее полезными каналами являются
+odown
+failover-detected
+switch-master