Lassen Sie uns gemeinsam den Redis-Sentry-Modus analysieren
Dieser Artikel vermittelt Ihnen relevantes Wissen über Redis. Er stellt hauptsächlich Fragen im Zusammenhang mit dem Sentinel-Modus vor, einschließlich des Konzepts von Sentinels, der Rolle von Sentinels, der Aktivierung von Sentinels, des Prinzips von Sentinels usw. Ich hoffe, dass er hilfreich sein wird alle.
Empfohlenes Lernen: Redis-Tutorial
Sentinel-Modus
1. Sentinel-Konzept
-
Wenn in einer Master-Multi-Slave-Struktur der Master ausgefallen ist, müssen Sie aus mehreren Slaves auswählen Um einen neuen Master zu erstellen und eine solche Funktion auszuführen, müssen Sie den Sentinel-Mechanismus von Redis verwenden. Sentinel (Sentinel) ist ein verteiltes System, das zur Überwachung jedes Servers in der Master-Slave-Struktur verwendet wird. Überwachung , wenn ein Fehler auftritt, wählen Sie
einen neuen Master über den Abstimmungsmechanismus - aus und verbinden Sie alle Slaves mit dem neuen Master, wie in der Abbildung unten gezeigt:
2. Sentinel-Rolle
Überwachung
: Master und Slave überwachen
Kontinuierlich prüfen, ob Master und Slave normal laufenMaster-Überlebenserkennung, Master- und Slave-Betriebsstatuserkennung
-
- Benachrichtigung
- (Erinnerung): Wenn es ein Problem mit dem gibt überwachter Server, Benachrichtigungen an andere Sentinels und Redis-Server senden
- Failover
- : Trennen Sie den ausgefallenen Master vom Slave, wählen Sie einen Slave als Master aus, verbinden Sie andere Slaves mit dem neuen Master und informieren Sie den Client über den neuen Server Adresse
- Sentinel ist auch ein Redis-Server, der nur Überwachungsdienste und keine Datenverwaltungsdienste bereitstellt; normalerweise ist die Anzahl der Sentinels als ungerade Zahl konfiguriert (praktisch für Abstimmungen)
3. Sentinels aktivieren
Ändern Sie die Konfigurationsdatei von Sentinel. Die Konfigurationsdatei befindet sich im Redis-Verzeichnis, wie in der folgenden Abbildung dargestellt:
- Die Bedeutung einiger Konfigurationen ist in der folgenden Abbildung dargestellt :
-
sentinel.conf
Sentinel starten
redis-sentinel filename #filename指的是配置文件名 #每个哨兵都要配置自己的配置文件
Nach dem Login kopieren -
Sentinel konfigurieren und starten. Nachdem der Hauptserver ausgefallen ist, führt er
automatischAbstimmungen, Master-Slave-Umschaltung und andere Prozesse aus
- 4. Sentinel-Prinzip
Sentinel durchläuft während des Master-Slave-Umschaltprozesses drei Phasen:
Überwachung
BenachrichtigungFailover
- 4.1 Überwachung
- wird verwendet, um die Statusinformationen jedes Knotens zu synchronisieren Dazu gehören Master, Slave und Sentry, also die Informationen aller Server im gesamten System.
Hauptsächlich abgeschlossene Funktionen:
Erhalten Sie den Status jedes Sentinels (ob online oder nicht): Der neu hinzugefügte Sentinel muss mit den vorhandenen Sentinels im System interagieren.
Erhalten Sie den Status von der Master (über den Info-Befehl)
- Der erhaltene Inhalt ist wie folgt
1. master属性 runid role:master 2. 各个slave在master中保存的基本信息
Nach dem Login kopieren -
Erhalten Sie den Status aller Slaves (der Info-Befehl wird basierend auf den Slave-Informationen im Master an alle Slaves gesendet)
- Der erhaltene Inhalt ist wie folgt
slave属性 runid role:slave master_host、master_port offset
Nach dem Login kopieren
- Das spezifische Innenleben ist wie folgt:
- Nachdem Sentinel 1 den Info-Befehl an den Master gesendet hat, wird die erstellte Verbindung zum Senden von Befehlen verwendet.
- Nach dem Erstellen der cmd-Verbindung werden alle bisher erhaltenen Informationen gespeichert Sentinel 1-Seite und auf der anderen Seite speichert der Master auch die darin enthaltenen Informationen
- Dann sendet Sentinel 1 den Infobefehl an den Slave basierend auf den vom Master erhaltenen Informationen über die Salbe, ruft die Salbeninformationen ab und reichert sie an An diesem Ende gespeicherte Informationen
- Wenn ein neuer Sentinel 2 hinzugefügt wird, sendet Sentinel 2 einen Info-Befehl an den Master, um eine cmd-Verbindung herzustellen. Basierend auf den Informationen im Master kann er den zuvor vorhandenen Sentinel 1 abrufen und speichern die gewonnenen Informationen selbständig verarbeiten. Stellen Sie dann fest, ob Sentinel 1 online ist, und stellen Sie eine Verbindung mit Sentinel 1 her. Die beiden tauschen Informationen miteinander aus, und beide Parteien pingen weiterhin, um sicherzustellen, dass sie füreinander offen sind
- Sentinel 2 erhält die Slave-Informationen von Master und dann vom Slave Erhalten Sie Informationen und bereichern Sie die von Ihnen gespeicherten Informationen
- Beim Hinzufügen eines weiteren Sentinel 3 ähnelt es dem vorherigen Prozess. Schließlich bauten die drei Sentinels ein Beziehungsnetzwerk auf
- Im Beziehungsnetzwerk werden die drei Dieser Arbeitsmodus wird als „Publish-Subscribe-Modus“ bezeichnet. 4.2 Benachrichtigung: In der Benachrichtigungsphase muss der Sentinel kontinuierlich die Informationen des Masters und des Slaves abrufen Übertragen Sie die erhaltenen Informationen zwischen den verschiedenen Sentinels. Der spezifische Prozess ist wie folgt:
Der Sentinel sendet den Befehl hello
über die hergestellte cmd-Verbindung an den Master und den Slave, ruft deren Informationen ab und gibt sie dann im Beziehungsnetzwerk weiter: 
4.3 Failover
Trennen Sie den ausgefallenen Master vom Slave, wählen Sie einen Slave als Master aus, verbinden Sie andere Slaves mit dem neuen Master und teilen Sie dem Client die neue Serveradresse mit.
Der spezifische Prozess ist wie folgt: hello
指令,得到他们的信息,然后在关系网中共享:
4.3 故障转移
断开宕机的master与slave的连接,选取一个slave作为master,将其他slave连接新的master,并告知客户端新的服务器地址。
具体的流程如下所述:
哨兵1始终得不到master的回应,主观判断master宕机,标记
sdown
(仅有一个哨兵认为master宕机)哨兵1在关系网中传递消息,向其他哨兵发送图中左上角的消息
-
其他哨兵得到消息之后,全部向master发送消息,确定master是否宕机,他们也会将自己得到的结果发送给关系网中的其他哨兵,确定master宕机后,将标记改为
odown
(所有哨兵探测之后,超过一半的哨兵认为master宕机) -
当认定master宕机之后,此时需要选举新的master,由哪个哨兵完成这件事要通过哨兵之间的选举决定,具体过程如下所述:
- 在选举的时候每个哨兵手里都有一票,每个哨兵都会发出一个指令,在内网里边告诉其他哨兵自己当选举人,比如说sentinel1和sentinel2发出这个选举指令,那么sentinel3接收到他们的申请之后,sentinel3就会把自己的一票投给其中一方,根据到达的先后顺序投票,获得票的那一方就会多一张选举票,按照这样的一种形式,最终会有一个选举结果,获得票数最多的哨兵会被获选
- 在这个过程中有可能会存在失败的现象,比如第一轮没有选举成功,那就会接着进行第二轮第三轮直到完成选举
-
当完成哨兵之间的选举之后,接下来就要由选举胜出的哨兵去slave中挑选一个,将其变成新的master,具体的流程如下所述:
- 哨兵在服务器列表中挑选备选master的原则:先排除,后选择
- 不在线的OUT
- 响应慢的OUT
- 与原master断开时间久的OUT
- 排除结束,开始进行选择
- 优先级高的获选
- offset较大的获选(比较大说明同步原来master的数据最多)
- 若还没有选出,则最后根据runid选出
- 哨兵在服务器列表中挑选备选master的原则:先排除,后选择
-
选出新的master之后,哨兵发送指令给服务器:
向新的master发送
slaveof no one
指令向其他slave发送
slaveof 新masterIP端口
Sentinel 1 erhielt nie eine Antwort vom Master und kam subjektiv zu dem Schluss, dass der Master außer Betrieb war, und markierte ihn als - Sentinel 1 übermittelt die Nachricht im Beziehungsnetzwerk und sendet die Nachricht in der oberen linken Ecke des Bildes an andere Sentinels
sdown
(nur ein Sentinel glaubte das). der Master war ausgefallen)
Nachdem andere Sentinels die Nachricht erhalten haben, senden sie alle Nachrichten an den Der Master ermittelt, ob der Master ausgefallen ist, und die erhaltenen Ergebnisse werden an andere Sentinels im Beziehungsnetzwerk gesendet. Nachdem bestätigt wurde, dass der Master ausgefallen ist, wird die Markierung in odown
geändert (schließlich). Sentinels erkennen, mehr als die Hälfte der Sentinels glauben, dass der Master ausgefallen ist „Lassen Sie uns gemeinsam den Redis-Sentry-Modus analysieren“ width="90%"/>
Wenn festgestellt wird, dass der Master ausgefallen ist, muss zu diesem Zeitpunkt ein neuer Master gewählt werden Die Wahl unter den Wächtern ist wie folgt:
Während der Wahl hat jeder Wächter eine Anweisung, andere Wächter im Intranet als Wähler anzugeben Wahlanweisung. Nachdem sentinel3 seinen Antrag erhalten hat, wird die Abstimmung gemäß der „Ankunftsreihenfolge“ erfolgen, und die Partei, die die Stimme erhält, erhält dort eine weitere Wahlstimme Irgendwann wird es ein Wahlergebnis geben und der Wächter mit den meisten Stimmen wird gewählt.
- In diesem Prozess kann es zu Misserfolgen kommen. Wenn die Wahl beispielsweise im ersten Wahlgang nicht erfolgreich ist, werden der zweite und dritte Wahlgang fortgesetzt Die Wahl ist abgeschlossen
- Nachdem die Wahl unter den Wächtern abgeschlossen ist, wird der nächste Schritt sein: Der Wächter, der die Wahl gewinnt, wählt einen Sklaven aus und verwandelt ihn in einen neuen Herrn. Der spezifische Prozess ist wie folgt:
- Das Prinzip, nach dem der Sentinel einen alternativen Master in der Serverliste auswählt: Zuerst eliminieren, später auswählen
slaveof no one
🎜🎜🎜🎜Sende den Befehl slaveof new masterIP port
🎜🎜🎜 5. Zusammenfassung Problem, markiert abwechselnd subjektiv offline und objektiv offline. 🎜🎜Wählen Sie den verantwortlichen Wächter. 🎜 Bevorzugen Sie den neuen Master neuer Herr als Sklave🎜🎜🎜🎜Empfohlenes Lernen: 🎜Redis-Video-Tutorial🎜🎜Das obige ist der detaillierte Inhalt vonLassen Sie uns gemeinsam den Redis-Sentry-Modus analysieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Der Redis -Cluster -Modus bietet Redis -Instanzen durch Sharding, die Skalierbarkeit und Verfügbarkeit verbessert. Die Bauschritte sind wie folgt: Erstellen Sie ungerade Redis -Instanzen mit verschiedenen Ports; Erstellen Sie 3 Sentinel -Instanzen, Monitor -Redis -Instanzen und Failover; Konfigurieren von Sentinel -Konfigurationsdateien, Informationen zur Überwachung von Redis -Instanzinformationen und Failover -Einstellungen hinzufügen. Konfigurieren von Redis -Instanzkonfigurationsdateien, aktivieren Sie den Cluster -Modus und geben Sie den Cluster -Informationsdateipfad an. Erstellen Sie die Datei nodes.conf, die Informationen zu jeder Redis -Instanz enthält. Starten Sie den Cluster, führen Sie den Befehl erstellen aus, um einen Cluster zu erstellen und die Anzahl der Replikate anzugeben. Melden Sie sich im Cluster an, um den Befehl cluster info auszuführen, um den Clusterstatus zu überprüfen. machen

So löschen Sie Redis -Daten: Verwenden Sie den Befehl Flushall, um alle Schlüsselwerte zu löschen. Verwenden Sie den Befehl flushdb, um den Schlüsselwert der aktuell ausgewählten Datenbank zu löschen. Verwenden Sie SELECT, um Datenbanken zu wechseln, und löschen Sie dann FlushDB, um mehrere Datenbanken zu löschen. Verwenden Sie den Befehl del, um einen bestimmten Schlüssel zu löschen. Verwenden Sie das Redis-Cli-Tool, um die Daten zu löschen.

Um eine Warteschlange aus Redis zu lesen, müssen Sie den Warteschlangenname erhalten, die Elemente mit dem Befehl LPOP lesen und die leere Warteschlange verarbeiten. Die spezifischen Schritte sind wie folgt: Holen Sie sich den Warteschlangenname: Nennen Sie ihn mit dem Präfix von "Warteschlange:" wie "Warteschlangen: My-Queue". Verwenden Sie den Befehl LPOP: Wischen Sie das Element aus dem Kopf der Warteschlange aus und geben Sie seinen Wert zurück, z. B. die LPOP-Warteschlange: my-queue. Verarbeitung leerer Warteschlangen: Wenn die Warteschlange leer ist, gibt LPOP NIL zurück, und Sie können überprüfen, ob die Warteschlange existiert, bevor Sie das Element lesen.

Die Verwendung der REDIS -Anweisung erfordert die folgenden Schritte: Öffnen Sie den Redis -Client. Geben Sie den Befehl ein (Verbschlüsselwert). Bietet die erforderlichen Parameter (variiert von der Anweisung bis zur Anweisung). Drücken Sie die Eingabetaste, um den Befehl auszuführen. Redis gibt eine Antwort zurück, die das Ergebnis der Operation anzeigt (normalerweise in Ordnung oder -err).

Um die Operationen zu sperren, muss die Sperre durch den Befehl setNX erfasst werden und dann den Befehl Ablauf verwenden, um die Ablaufzeit festzulegen. Die spezifischen Schritte sind: (1) Verwenden Sie den Befehl setNX, um zu versuchen, ein Schlüsselwertpaar festzulegen; (2) Verwenden Sie den Befehl Ablauf, um die Ablaufzeit für die Sperre festzulegen. (3) Verwenden Sie den Befehl Del, um die Sperre zu löschen, wenn die Sperre nicht mehr benötigt wird.

Der beste Weg, um Redis -Quellcode zu verstehen, besteht darin, Schritt für Schritt zu gehen: Machen Sie sich mit den Grundlagen von Redis vertraut. Wählen Sie ein bestimmtes Modul oder eine bestimmte Funktion als Ausgangspunkt. Beginnen Sie mit dem Einstiegspunkt des Moduls oder der Funktion und sehen Sie sich die Codezeile nach Zeile an. Zeigen Sie den Code über die Funktionsaufrufkette an. Kennen Sie die von Redis verwendeten Datenstrukturen. Identifizieren Sie den von Redis verwendeten Algorithmus.

Verwenden Sie das Redis-Befehlszeilen-Tool (REDIS-CLI), um Redis in folgenden Schritten zu verwalten und zu betreiben: Stellen Sie die Adresse und den Port an, um die Adresse und den Port zu stellen. Senden Sie Befehle mit dem Befehlsnamen und den Parametern an den Server. Verwenden Sie den Befehl Hilfe, um Hilfeinformationen für einen bestimmten Befehl anzuzeigen. Verwenden Sie den Befehl zum Beenden, um das Befehlszeilenwerkzeug zu beenden.

Zu den Ursachen für Datenverluste gehören Speicherausfälle, Stromausfälle, menschliche Fehler und Hardwarefehler. Die Lösungen sind: 1. Speichern Sie Daten auf Festplatten mit RDB oder AOF Persistenz; 2. Kopieren Sie auf mehrere Server, um eine hohe Verfügbarkeit zu erhalten. 3. Ha mit Redis Sentinel oder Redis Cluster; 4. Erstellen Sie Schnappschüsse, um Daten zu sichern. 5. Implementieren Sie Best Practices wie Persistenz, Replikation, Schnappschüsse, Überwachung und Sicherheitsmaßnahmen.
