2016-07-26 11 views
0

Hallo Stack-Community,Redis Sentinel mit 2 Master nach multi az netsplit

Ich habe eine Frage zu Redis Sentinel für einen bestimmten Problemfall. Ich verwende AWS mit Multi AZ, um einen sensu-Cluster zu erstellen.

Auf eu-central-1a habe ich eine sensu + redis (M), eine RBMQ + Sentinel und 2 andere Sentinels. Gleich auf eu-central-1b aber das Redis ist mein Sklave auf diesem AZ.

Was passiert, wenn es ein Problem gibt und eu-central-1a nicht mit eu-central-1b kommunizieren kann? Was ich denke ist, dass Sentinel auf eu-central-1b meinen redis-sklaven zum master befördern sollte, weil er meinen redismaster nicht kontaktieren kann. Also sollte ich 2 Redis Master haben, die zusammen auf 2 verschiedenen AZ laufen.

Aber wenn die Verbindung zwischen AZ abgerufen wird, habe ich noch 2 Master, mit 2 verschiedenen Daten. Was wird in diesem Fall passieren? Ein Master wird zum Slave und die Daten werden ohne Verlust repliziert. Müssen wir einen Master neu starten und er wird ein Sklave sein?

Antwort

0

Sentinel erkennt Änderungen an den Master zum Beispiel

Wenn der Master geht nach unten und ist nicht erreichbar ein neuer Slave gewählt wird. Dies basiert auf der quorum, wo mehrere Sentinels zustimmen, dass der Master gesunken ist. Die failover tritt dann auf.

Sobald der Sentinel erkennt, dass der Master wieder online ist, dann ist es ein Slave, ich glaube also, der neue Master geht weiter, glaube ich. Sie verlieren Daten in der Umschaltung vom Master zum neuen Master, die unvermeidlich sind.

Wenn Sie die Verbindung verlieren dann funktioniert yes Sentinel nicht korrekt, da es auf mehrere Sentinels angewiesen ist, um die Master-Redis zu akzeptieren ist unten. Sie sollten Sentinel nicht in einem 2-Sentinel-System verwenden.

Grundlegende Lösung wäre für Sie, eine zusätzliche Sentinel auf einem anderen Server möglicherweise der Client/Anwendungsserver, der nicht redis/sentinel auf diese Weise können Sie die quorum und Sentinels Zustimmung der Master ist down setzen.