Entsprechend den Git-Commit-Nachrichten hat ServiceStack kürzlich die Failover-Unterstützung hinzugefügt. Ich nahm zunächst an, dass dies bedeutete, dass ich eine meiner Redis-Instanzen herunterziehen konnte, und mein gepoolter Client-Manager würde das Failover elegant handhaben und versuchen, mich mit einer meiner alternativen Redis-Instanzen zu verbinden. Leider kommt mein Code nur fehl und sagt, dass er sich nicht mit der ursprünglichen Redis-Instanz verbinden kann.Wie funktioniert ServiceStack PooledRedisClientManager Failover?
Ich führe derzeit Instanzen von Redis 2.6.12 auf einem Windows, mit dem Master bei Port 6379 und einem Slave bei 6380, mit Sentinels eingerichtet, um automatisch den Slave zu einem Master zu fördern, wenn der Master ausfällt. Ich Instanziierung zur Zeit meiner Client-Manager wie folgen aus:
PooledRedisClientManager pooledClientManager =
new PooledRedisClientManager(new string[1] { "localhost:6379"},
new string[1] {"localhost:6380"});
, wo das erste Array wird Lese-Schreib-Hosts (für den Master) und das zweite Array sind schreibgeschützt Hosts (für den Slave).
Wenn ich den Master an Port 6379 beende, befördern die Sentinels den Slave zu einem Master. Wenn ich nun versuche, meinen C# -Code auszuführen, bricht er einfach ab und gibt den Fehler "Verbindung zu Redis-Instanz bei localhost: 6379 kann nicht hergestellt werden" zurück.
Gibt es einen Weg, oder funktioniert Failover einfach nicht so, wie ich es möchte?
Haben Sie einen Weg gefunden @Vliu – jaxxbo
Nein, von den meisten der Forschung, die ich getan habe, verlassen sich die meisten Menschen nicht auf den Code, um Failover zu behandeln. Sie verwenden einen (Linux) Proxy-Layer über die Redis-Datenbank wie HAProxy @jaxxbo – Vliu