2013-03-15 5 views
9

좋아, 나는 중요한 정보를 놓치고있는 것처럼 느껴진다.새로운 Redis 마스터가 Sentinel을 사용하고있는 클라이언트를 알려주는 방법

로컬로 나는 한 마스터 1 슬레이브 레디 스 서버는 또한 3 센티넬을 가지고 있고 그들은 모두 서로를 인식하고 예상대로 작동 것으로 보인다 다른 포트 http://redis.io/topics/sentinel

에서 실행해야합니다.

이제 내 마스터 redis 서버가있는 127.0.0.1:6379를 가리키는 자바 코드가 있습니다. 내가 마스터를 가지고가는 경우에 예상대로

, 감시는 이제 새로운 주인이 내 질문에 내 코드는 이것을 알고 않는 방법입니다

127.0.0.1:6380

에 마스터 슬레이브를 홍보 모든게 좋을 꺼 않습니다 및 자동 스위치?

답변

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 
+0

은 레디 스 마스터/슬레이브에 부하 분산 장치를 사용하는 방법에 대한 .. 내가 그와 함께있는 유일한 문제는 내가 올바른 슬레이브에 쓸 수 없습니다 무엇입니까? –

+0

슬레이브를 사용하여로드 밸런스를 원하지 않을 것입니다. 로드 밸런싱을 원할 경우 여러 노드가 실행 중이어야하며 클라이언트에서 어떤 키가 어떤 노드로 이동하게 할 것인지를 결정하는 로직이 있어야합니다. –

+0

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