2013-03-15 14 views
9

Ok, mi sento come se mi mancasse qualche informazione cruciale.Come dire a un cliente dove il nuovo master Redis sta usando Sentinel

Localmente Ho 1 master e 1 Redis schiavi server in esecuzione su porte diverse http://redis.io/topics/sentinel

Ho anche 3 sentinelle e tutti sembrano essere consapevoli di ogni altro e di lavoro come previsto.

Ora ho un grosso codice java che punta a 127.0.0.1:6379 dove si trova il mio server redis master.

Se prendo giù il maestro, sentinella fa everthing come previsto promuovere lo schiavo di padroneggiare così ora il nuovo padrone è in

127.0.0.1:6380

La mia domanda è come fa il mio codice conosce questo e cambio automatico?

risposta

7

Devi iscriverti ai messaggi sentinella su uno dei loro canali pubsub. Si può vedere al link che hai postato che la sentinella pubblicherà i messaggi come

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

Quindi quando vedete una sentinella pubblicare su uno di quei canali, è necessario analizzare il messaggio e il vostro rispondere client di conseguenza. Redis non è intelligente - devi gestire queste cose usando una libreria client.

In particolare, i canali più utili sono

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

Cosa succede ad usare un sistema di bilanciamento del carico sul master Redis/slave .. unico problema che ho con questo è che non posso scrivere lo schiavo corretto? –

+0

Non si desidera caricare il bilanciamento usando lo slave. Se si desidera bilanciare il carico, è necessario avere più nodi in esecuzione e creare logica nel client per gestire le chiavi in ​​cui passare i nodi. –

+0

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

Problemi correlati