2016-12-22 4 views
7

Ich habe zwei Knoten, die ich als Server im Aktiv-Aktiv-Modus ausführen möchte und auch HA-Fähigkeit haben, dh wenn einer ausgefallen ist, sollte der andere alle Anfragen empfangen, aber beide sind beide aktiv sollte alle Anfragen übernehmen. Da Redis den Aktiv-Aktiv-Modus für den gleichen Hash-Satz nicht erlaubt und ich Sentinel nicht ausführen kann, da ich keinen dritten Knoten haben kann, ist es meine Idee, die beiden Knoten in der Replikation auszuführen und selbst zu entscheiden, ob Master-Knoten ist inaktiv und befördere den Slave zum Master. Gibt es irgendwelche Probleme damit? Wenn der ursprüngliche Master wieder verfügbar ist, gibt es eine Möglichkeit, ihn als Slave zu konfigurieren?2 Knoten Redis HA

Hört sich das nach einer guten Idee an? Ich bin offen für andere Vorschläge als Redis.

+0

Ich interessiere mich für das zu. Es sieht so aus, als ob es keine Möglichkeit gibt, zwei Knoten zuverlässig auf Failover zu konfigurieren, selbst bei redis 4, jedoch kann dies bei redis4 manuell durchgeführt werden. – kworr

Antwort

2

Ok, Teillösung mit SLAVEOF:

können manuell Slave fördern, indem sie laufen Master:

SLAVEOF NO ONE 

Sie manuell Master durch Ausführen von zum Slave übergehen kann:

SLAVEOF <HOST> <port> 

Clustering sollte deaktiviert sein.

1

Im Allgemeinen zwei Knoten laufen ist nie eine gute Idee, weil es Split-Brain Problem haben muss: Wenn das Netzwerk zwischen den beiden Knoten für einen Moment oder zwei ist, werden die beiden Knoten unweigerlich denken, dass jeder offline ist und wird fördern/sich selbst als Master zu halten und Anfragen von anderen Diensten anzunehmen. Dann passiert das geteilte Gehirn.

Und wenn Sie mit dieser möglichen Situation in Ordnung sind, dann können Sie in Setup einen Master-Slave mit Hilfe einer Skriptdatei und einem HA-Dienst wie Schrittmacher oder Keepalived suchen.

In der Regel müssen Sie den Cluster-Manager über eine vordefinierte Regel informieren, dass, wenn zwei Computer unter Split-Brain-Bedingung wieder zusammengeführt werden, welcher Ihrer bevorzugten Master ist.

Wenn ein Master gewählt wird, führen Sie das Skript aus und führen Sie im Grunde slaveof no one auf sich selbst und führen slaveof <new-master-ip> <port> auf dem anderen Knoten.

Sie könnten in Ihrer Skriptdatei noch einen Schritt weitergehen und versuchen, die beiden Datensätze zusammenzuführen. Ob dies jedoch möglich ist, hängt ganz davon ab, wie Sie Ihre Daten in Redis organisiert haben und wie lange Sie darauf warten um alle Daten synchron zu halten.

Ich habe diesen Weg schon einmal durch Schrittmacher + Corosync gemacht.

0

Ich würde empfehlen, mindestens 3 Knoten mit Sentinel Setup für die Aktivierung von Klatsch/Quorum für die automatische Förderung von Slave zu Master, wenn aktuelle Master-Knoten ausfällt.

Verwandte Themen