In base ai messaggi di commit git, ServiceStack ha recentemente aggiunto il supporto per il failover. Inizialmente pensavo che questo significasse che potevo tirare giù una delle mie istanze di Redis, e il mio gestore clienti in pool gestiva il failover in modo elegante e prova a connettermi con una delle mie istanze Redis alternative. Sfortunatamente, il mio codice è appena uscito dagli errori e dice che non può connettersi con l'istanza iniziale di Redis.Come funziona il failover di ServiceStack PooledRedisClientManager?
Attualmente sto eseguendo istanze di Redis 2.6.12 su un Windows, con il master sulla porta 6379 e uno slave su 6380, con le sentinelle configurate per promuovere automaticamente lo slave su un master se il master va giù. Attualmente sto istanziare il gestore clienti in questo modo: gli host
PooledRedisClientManager pooledClientManager =
new PooledRedisClientManager(new string[1] { "localhost:6379"},
new string[1] {"localhost:6380"});
in cui il primo array viene letto-scrittura (per il master), e la seconda serie è di sola lettura ospiti (per lo slave).
Quando termino il master sulla porta 6379, le sentinelle promuovono lo slave su un master. Ora, quando provo a eseguire il mio codice C#, invece di fallire sulla porta 6380, si interrompe semplicemente e restituisce l'errore "Impossibile connettersi a Redis Instance su localhost: 6379".
C'è un modo per aggirare questo, o il failover semplicemente non funzionerà nel modo in cui lo voglio?
Hai trovato un modo @Vliu – jaxxbo
No, dalla maggior parte della ricerca che ho fatto, la maggior parte delle persone non si affida al codice per gestire il failover. Usano un livello proxy (linux) sul database redis come HAProxy @jaxxbo – Vliu