Redis Sentinel

Redis Sentinel

Nehmen Sie ein Szenario an, in dem Sie nur eine Redis -Instanz in Ihrer Produktion haben und es irgendwann aus irgendeinem Grund versagt. Ihre Anwendung richtungssetzt Daten im Redis -Datenspeicher und jetzt ist Ihre einzige Datenquelle tot. Eine Möglichkeit, diese Art von Szenarien zu kontrollieren. Redis-Cluster unterstützen die hohe Verfügbarkeit bis zu einem gewissen Grad mit dem Master-Replica-Ansatz. Redis Sentinel ist ein weiterer Ansatz, der eine zuverlässigere Möglichkeit bietet, die hohe Verfügbarkeit von Redis -Instanzen aufrechtzuerhalten. Es überwacht den Redis -Meisterknoten für Fehler und löst den Failover -Prozess sofort aus, der einen vorhandenen Sklavenknoten für einen brandneuen Master fördert.

Darüber hinaus fungiert Redis Sentinel als Mittelmann, in dem Clients die neueste IP-Adresse des Masterknotens verbinden und fragen. Der angeschlossene Sentinel liefert also sofort die Masterknotenadresse.

Darüber hinaus wird ein Master -Knotenfehler bestätigt, wenn mehrere Sentinels einig waren, dass ein bestimmter Master nicht erreichbar oder verfügbar ist. Dadurch schließt sich die Phase der Ausfallerkennung und der Failover -Prozess sofort beginnt. Daher kann der Redis -Sentinel als verteiltes System mit spezifischen Eigenschaften angesehen werden.

Die Vereinbarung von Sentinels basiert auf einem Quorumwert, der im folgenden Abschnitt erörtert wird.

Quorumwert

Der Quorum -Wert ist die maximale Anzahl von Sentinels, die vereinbart werden müssen. Dieser Wert wird nur verwendet, um einen Fehler im Masterknoten zu identifizieren. Der Failover -Prozess beginnt mit der Genehmigung mehrerer verfügbarer Sentinel -Knoten, um mit einem ausgewählten Sentinel als Leiter fortzufahren.

Merkmale von Redis Sentinel

Der Sentinel ist dafür bekannt, einen hohen Verfügbarkeitsmechanismus für den Redis -Datenspeicher bereitzustellen. Abgesehen davon können mehrere andere Funktionen aufgeführt werden.

  • Sentinel überwacht kontinuierlich den Status von Master- und Sklavenknoten in Ihrem Redis -System.
  • Immer wenn ein Fehler oder etwas mit Ihren Redis -Instanzen nicht stimmt, kann der Sentinel den Administrator oder die angeschlossenen Anwendungen mithilfe der Sentinel -API benachrichtigen.
  • Die Failover -Phase wird vom Sentinel durch Förderung einer Replik als neuer Meister geleitet. Verbleibende Replikate, die für die Verwendung des neuen Masters konfiguriert sind. Schließlich werden die entsprechenden Clients über die neue Masterknotenadresse informiert.
  • Außerdem ist der Redis Sentinel ein Konfigurationsanbieter für verbunden.

Im nächsten Abschnitt konfigurieren wir Redis-Sentinels mit Master-Replica-Instanzen und verwenden die Sentinel-API, um die Knoten zu überwachen.

Sentinel -Konfiguration

Zunächst erstellen wir zwei Redis -Instanzen in den Ports 7000 und 7001. Port 7000 wird der Masterknoten sein und der andere reproduziert den Master. Beide Instanzen verwenden jeweils folgende Konfigurationsdateien:

Master -Knotenkonfiguration

Port 7000
Cluster-fähige Nr
Cluster-Config-Dateiknoten.Conf
Cluster-Knoten-Timeout 5000
Appendonly ja

Sklavenknotenkonfiguration

Port 7001
Cluster-fähige Nr
Cluster-Config-Dateiknoten.Conf
Cluster-Knoten-Timeout 5000
Appendonly ja

Beide Instanzen werden zunächst die jeweils zugeordnete Konfigurationsdatei bereitgestellt. Wir können den folgenden Befehl verwenden, um Redis -Instanzen separat zu starten:

Redis-Server Redis.Conf

Lassen Sie uns eine Verbindung zur Redis -Instanz herstellen, die bei Port 7001 wie folgt gestartet wurde:

Redis -Cli -p 7001

Jetzt können wir diese Instanz zu einer Nachbildung des Meisters machen, die in Port 7000 ausgeführt wird. Der Replikof -Befehl kann wie folgt verwendet werden:

Replicaof 127.0.0.1 7000

Wie erwartet wurde die Instanz, die in Port 7001 ausgeführt wurde.

Jetzt sind wir bereit, drei Redis -Sentinels zu konfigurieren, um die oben genannte Master -Instanz zu überwachen. Wir müssen drei Konfigurationsdateien haben, um drei Sentinel -Instanzen an den Ports 5000, 5001 und 5002 zu erstellen, wie im Folgenden gezeigt.

Jede Wächter.Conf Die Datei sieht wie folgt aus, außer dass die Portnummer geändert wird:

Port 5000
Sentinel Monitor Masternode 127.0.0.1 7000 2
Sentinel Down-After-Milliseconds Masternode 5000
Sentinel Failover-Timeout Masternode 60000

Jetzt ist es Zeit, die drei Wachposten zu betreiben. Sie können die ausführbare Redis-Sentinel zusammen mit dem Weg zu verwenden Wächter.Conf Konfigurationsdatei zum Erstellen einer Sentinel -Instanz. Andernfalls können wir die Redis-Server-Datei immer noch aufrufen, indem wir den Pfad an angeben Wächter.Conf und die Flagge -Wächter.

Beginnen wir jeden Sentinel mit dem folgenden Befehl:

Redis-Server-Sentinel.Conf -Sentinel

Der erste Sentinel wurde in Port 5000 gestartet. Ebenso können Sie auch die beiden anderen Instanzen starten.

Jetzt ist unser Redis -Sentinel -Setup in Betrieb, wie in der folgenden Abbildung gezeigt:

Im folgenden Abschnitt werden wir mehr über die Sentinel -API untersuchen und wie wir sie verwenden können, um Informationen im Zusammenhang mit dem Redis -Masterknoten abzurufen.

Sentinel -API

Redis bietet eine separate Sentinel -API zur Überwachung der zugehörigen Meister und Replikate, zeichnen Sie Benachrichtigungen und ändern Sie die Sentinel -Einstellungen. Darüber hinaus sind im Folgenden mehrere Verwendungen aufgeführt.

  • Überprüfen Sie den Status der überwachten Redis -Master- und Slave -Instanzen
  • Details zu anderen Sentinels
  • Erhalten Sie Benachrichtigungen im Push-Stil von Sachen in einem Ereignis eines Failovers

Der Sentinel -Befehl kann mit seinen zugehörigen Unterbewohnern verwendet werden, um Redis -Sentinels und überwachte Knoten abzufragen, zu aktualisieren oder festzulegen.

Überprüfen Sie den Status des Masterknotens

Es ist sehr wichtig, von Zeit zu Zeit die Gesundheit der Masterknoten zu überwachen oder zu überprüfen. Der folgende Befehl Sentinel API kann verwendet werden, um Masterdetails abzurufen:

Sentinel -Meister

maitored_master_name: Der Name des Masterknotens, der in der Sentinel -Konfigurationsdatei angegeben ist, die wir im früheren Schritt erstellt haben.

Verwenden wir diesen Befehl, um den Master -Status in unserem Setup abzufragen. In unserem Fall lautet der Name des Masterknotens "Masternode".

Sentinel Master Masternode

Es wurden mehrere Informationen abgerufen und einige von ihnen sind wichtig, wie z.

Der Flaggen Eigenschaft ist eingestellt auf Meister Was bedeutet, dass der Meister bei guter Gesundheit ist. Wann immer der Masterknoten unten ist, der, der s_down oder o_down Flag wird angezeigt. Die Eigenschaft Num-andere Sentinel ist auf 2 eingestellt, was bedeutet. zusätzlich Num-Sklaven Eigenschaft zeigt die verfügbaren Replikate für den Masterknoten an. In diesem Fall ist es auf 1 gesetzt, da wir nur eine Replik haben.

Informationen zu vernetzten Repliken erhalten

Wir können die mit dem Masterknoten verbundenen Replikate mit dem folgenden Sentinel -Subbefehl überprüfen:

Sentinel -Repliken

In diesem Beispiel lautet der Master -Name 'Masternode'.

Sentinel Replicas Masternode

Wie erwartet erkannte der Sentinel den Sklavenknoten, der an Port 7001 ausgeführt wurde.

Informationen zu den zugehörigen Sentinels erhalten

In ähnlicher Weise können wir die Details mit anderen Sentinels, die dem aktuellen Masterknoten zugeordnet sind, mit dem folgenden Sentinel -Unterbefehl abfragen:

Sentinel Sentinels

In diesem Fall werden wir die Informationen zum Masterknoten mit dem Namen "Masternode" abrufen.

Sentinel Sentinels Masternode

Rufen Sie die Master -Knotenadresse ab

Wie im früheren Abschnitt erwähnt, ist Redis Sentinel ein Konfigurationsanbieter für verbundene Clients. Daher ist es in der Lage, den angeforderten Clients die derzeit laufende IP -Adresse und den Port der Master -Knoten zu liefern. Der folgende Sentinel -API -Unterbefehl kann verwendet werden, um die genannten Informationen abzurufen.

Sentinel Get-Master-Addr-für-Namen

Führen Sie den obigen Befehl für unser Szenario wie folgt aus:

Sentinel Get-Master-Addr-by-Name Masternode

Wir haben nur einige Sentinel -API -Befehle besprochen. Mehrere andere Unterbefehle sind verfügbar wie Sentinel-Failover, Sentinel Info-Cache, Sentinel Masters usw. Darüber hinaus stehen viele Befehle auch für Verabreichungszwecke zur Verfügung. Im folgenden Abschnitt werden wir uns auf den Redis -Sentinel -Failover -Prozess konzentrieren.

Sentinel Failover -Prozess

Da unser Sentinel konfiguriert ist, können wir die Fehlerphase testen. Lassen Sie uns unseren Master -Knoten 300 Sekunden lang in den Schlaf schicken, was einen Fehler im Master -Knoten simuliert.

Debugug Sleep 300

Der Masterknoten, der in Port 7000 ausgeführt wird, sollte jetzt nicht erreichbar sein. Die zugehörigen Sentinels bemerken also, dass der Meister nicht mit dem verfügbar ist +sdown Fall. Dann wird dies auf eingestellt +Odown wobei 2 Wachposten bestätigen, dass der Masterknoten entsprechend dem Quorumwert sinkt. Schließlich beginnt die Failover -Phase und idealerweise sollte die Replik zum neuen Meister befördert werden.

Lassen Sie uns die IP -Adresse des Masterknotens und den Port erneut überprüfen.

Sentinel Get-Master-Addr-by-Name Masternode

Wie erwartet wurde die vorherige Nachbildung zum neuen Master befördert, was bedeutet, dass der Sentinel -Failover -Prozess erfolgreich ist. Damit ist der Einsatz und die Prüfung unserer drei Sentinel-Setups für einzelne Master-Replica-Paare abgeschlossen.

Abschluss

Redis Sentinel ist der zuverlässigste Ansatz, um die hohe Verfügbarkeit einer bestimmten Redis -Master -Replikatinstanz sicherzustellen. Ein Sentinel kann automatisches Failover ohne menschliche Intervention überwachen, benachrichtigen und initiieren. Außerdem sind sich mehrere Sentinels zusammen mit der Tatsache einig, dass der Masterknoten nicht erreichbar ist und der Quorumwert als maximale Anzahl von Sentinels verwendet wird, die bei der Überprüfung auf die Verfügbarkeit der Master -Instanz vereinbart werden müssen. Redis Sentinel bietet eine benutzerfreundliche API, um Informationen über die Gesundheit des Masterknotens und die zugehörigen Replikate abzurufen und auch Verwaltungsaufgaben auszuführen.