Inhaltsverzeichnis
Sentinel-Modus
1. Sentinel-Konzept" >1. Sentinel-Konzept
Master-Überlebenserkennung, Master- und Slave-Betriebsstatuserkennung" >Kontinuierlich prüfen, ob Master und Slave normal laufenMaster-Überlebenserkennung, Master- und Slave-Betriebsstatuserkennung
Failover" >BenachrichtigungFailover
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: Lassen Sie uns gemeinsam den Redis-Sentry-Modus analysieren" >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: Lassen Sie uns gemeinsam den Redis-Sentry-Modus analysieren
4.3 故障转移
Heim Datenbank Redis Lassen Sie uns gemeinsam den Redis-Sentry-Modus analysieren

Lassen Sie uns gemeinsam den Redis-Sentry-Modus analysieren

Mar 16, 2022 pm 05:44 PM
redis

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.

Lassen Sie uns gemeinsam den Redis-Sentry-Modus analysieren

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

    Lassen Sie uns gemeinsam den Redis-Sentry-Modus analysierenÜ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

  • Hinweis:
  • 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

    Lassen Sie uns gemeinsam den Redis-Sentry-Modus analysierenSentinel startenLassen Sie uns gemeinsam den Redis-Sentry-Modus analysieren
    redis-sentinel filename 
    #filename指的是配置文件名
    #每个哨兵都要配置自己的配置文件
    Nach dem Login kopieren
  • Sentinel konfigurieren und starten. Nachdem der Hauptserver ausgefallen ist, führt er

    automatisch Lassen Sie uns gemeinsam den Redis-Sentry-Modus analysieren Abstimmungen, 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) Lassen Sie uns gemeinsam den Redis-Sentry-Modus analysieren

  • 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: Lassen Sie uns gemeinsam den Redis-Sentry-Modus analysieren

    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 指令,得到他们的信息,然后在关系网中共享:

    Lassen Sie uns gemeinsam den Redis-Sentry-Modus analysieren

    4.3 故障转移

    断开宕机的master与slave的连接,选取一个slave作为master,将其他slave连接新的master,并告知客户端新的服务器地址。

    具体的流程如下所述:

    • 哨兵1始终得不到master的回应,主观判断master宕机,标记 sdown(仅有一个哨兵认为master宕机)

    • 哨兵1在关系网中传递消息,向其他哨兵发送图中左上角的消息

    • 其他哨兵得到消息之后,全部向master发送消息,确定master是否宕机,他们也会将自己得到的结果发送给关系网中的其他哨兵,确定master宕机后,将标记改为 odown(所有哨兵探测之后,超过一半的哨兵认为master宕机)

      Lassen Sie uns gemeinsam den Redis-Sentry-Modus analysieren
    • 当认定master宕机之后,此时需要选举新的master,由哪个哨兵完成这件事要通过哨兵之间的选举决定,具体过程如下所述:

      • 在选举的时候每个哨兵手里都有一票,每个哨兵都会发出一个指令,在内网里边告诉其他哨兵自己当选举人,比如说sentinel1和sentinel2发出这个选举指令,那么sentinel3接收到他们的申请之后,sentinel3就会把自己的一票投给其中一方,根据到达的先后顺序投票,获得票的那一方就会多一张选举票,按照这样的一种形式,最终会有一个选举结果,获得票数最多的哨兵会被获选
      • 在这个过程中有可能会存在失败的现象,比如第一轮没有选举成功,那就会接着进行第二轮第三轮直到完成选举
    • 当完成哨兵之间的选举之后,接下来就要由选举胜出的哨兵去slave中挑选一个,将其变成新的master,具体的流程如下所述:

      • 哨兵在服务器列表中挑选备选master的原则:先排除,后选择    
        • 不在线的OUT
        • 响应慢的OUT
        • 与原master断开时间久的OUT
        • 排除结束,开始进行选择
        • 优先级高的获选
        • offset较大的获选(比较大说明同步原来master的数据最多)
        • 若还没有选出,则最后根据runid选出
    • 选出新的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 sdown (nur ein Sentinel glaubte das). der Master war ausgefallen)
    • Sentinel 1 übermittelt die Nachricht im Beziehungsnetzwerk und sendet die Nachricht in der oberen linken Ecke des Bildes an andere Sentinels

    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
    1. 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:
    2. Das Prinzip, nach dem der Sentinel einen alternativen Master in der Serverliste auswählt: Zuerst eliminieren, später auswählen
    OUTs, die nicht online sind.

    OUTs, die langsam reagieren wird ausgewählt (relativ groß) Dies bedeutet, dass der ursprüngliche Master die meisten synchronisierten Daten hat)

    Wenn er noch nicht ausgewählt wurde, wird er schließlich basierend auf der Runid ausgewählt 🎜🎜🎜🎜🎜🎜🎜Nach Auswahl des neuen Masters , sendet der Sentinel den Befehl an den Server: 🎜🎜🎜🎜An den neuen Master Sende den Befehl 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!

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    Video Face Swap

    Video Face Swap

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

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    So erstellen Sie den Redis -Clustermodus So erstellen Sie den Redis -Clustermodus Apr 10, 2025 pm 10:15 PM

    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 So löschen Sie Redis -Daten Apr 10, 2025 pm 10:06 PM

    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.

    So lesen Sie Redis -Warteschlange So lesen Sie Redis -Warteschlange Apr 10, 2025 pm 10:12 PM

    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.

    So verwenden Sie den Befehl Redis So verwenden Sie den Befehl Redis Apr 10, 2025 pm 08:45 PM

    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).

    So verwenden Sie Redis Lock So verwenden Sie Redis Lock Apr 10, 2025 pm 08:39 PM

    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.

    So lesen Sie den Quellcode von Redis So lesen Sie den Quellcode von Redis Apr 10, 2025 pm 08:27 PM

    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.

    So verwenden Sie die Befehlszeile der Redis So verwenden Sie die Befehlszeile der Redis Apr 10, 2025 pm 10:18 PM

    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.

    So lösen Sie Datenverlust mit Redis So lösen Sie Datenverlust mit Redis Apr 10, 2025 pm 08:24 PM

    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.

    See all articles