Heim > Datenbank > Redis > Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...

Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...

咔咔
Freigeben: 2020-08-28 17:31:30
Original
1929 Leute haben es durchsucht

Sentinel zielt hauptsächlich auf Lösungen für Einzelknotenausfälle ab, die nicht automatisch wiederhergestellt werden können. Dieser Artikel verwendet den offiziell bereitgestellten Redis-Cluster Am Ende des Artikels gibt es etwas, das Sie möchten. Richten Sie den SSH-Hintergrund ein! Artikel gemäß dieser Roadmap Ich habe einige Wissenspunkte gefunden, die noch nicht hinzugefügt wurden, und freue mich darauf, Sie im Kommentarbereich zu sehen.

Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...
Hier Bildbeschreibung einfügen

Dieser Artikel stellt den Cluster hauptsächlich unter folgenden Gesichtspunkten vor:

  • Einführung in. Cluster
  • Die Rolle des Clusters
  • Konfigurieren Sie den Cluster.
  • Manuelles und automatisches Failover
  • re dis 4.0

Redis-Arbeitsverzeichnis /usr /local/redisAlle Vorgänge werden in der Simulation einer virtuellen Maschine ausgeführt

  • 1. Cluster-Einführung
  • Der Cluster soll das Speicherlimit und die Parallelität einzelner Maschinen lösen Probleme bei der Master-Slave-Replikation. Wenn dieser Speicher erreicht ist, ist Redis nicht mehr in der Lage, Dienste bereitzustellen Die geschriebenen Daten werden sehr groß sein, was leicht zu einem Pufferüberlauf führen kann und dazu führen kann, dass unbegrenzte vollständige Kopien vom Master und Slave nicht ordnungsgemäß funktionieren
  • .
    Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...
    Hier Bildbeschreibung einfügen

    Dann müssen wir den Master-Slave einer einzelnen Maschine in einen Viele-zu-Viele-Modus ändern und alle Masterknoten werden miteinander verbunden, um miteinander zu kommunizieren. Diese Methode kann nicht nur den Speicher einer einzelnen Maschine gemeinsam nutzen, sondern auch Anfragen verteilen und die Verfügbarkeit des Systems verbessern.

    Wie im Bild gezeigt: Wenn eine große Anzahl von Schreibanforderungen vorliegt, werden Anweisungen nicht mehr an einen einzelnen Masterknoten gesendet, sondern die Anweisungen werden an verschiedene Masterknoten verteilt, um den Speicher gemeinsam zu nutzen und eine große Anzahl zu vermeiden von Anfragen.

    Wie werden also Anweisungen weitergeleitet und gespeichert? Wir müssen mehr über die Cluster-Speicherstruktur herausfinden. Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...

    2. Cluster-Funktion

    • verteilt die Speicherkapazität einer einzelnen Maschine und kann auch problemlos erweitert werden.
    • Umleitung von Zugriffsanfragen von einer einzelnen Maschine
    • Verbesserung der Systemverfügbarkeit

    Wie ist der Satz zur Verbesserung der Systemverfügbarkeit zu verstehen? Schauen wir uns das Bild unten an, die Auswirkungen auf das System wird nicht so groß sein.

    Zu diesem Zeitpunkt wird jemand fragen: Wie funktioniert der Cluster, wenn Master1 ausfällt? Diese Frage wird im folgenden Failover für Sie beantwortet. Und dieses Problem wird im Hauptkapitel ausführlich erläutertAls ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...

    3. Cluster-Speicherstruktur

    Die Speicherstruktur des Clusters ist nicht so einfach. Erstens: Was muss getan werden, wenn der Benutzer einen Tastenbefehl auslöst? Ein Wert wird über CRC16 (Schlüssel) berechnet.

    Verwenden Sie diesen Wert modulo 16384, und Sie erhalten zunächst einen Wert von 28 Schlüssel ist gespeichert Jetzt kommt die Frage, in welchem ​​Redis-Speicherplatz soll dieser Schlüssel gespeichert werden?

    Tatsächlich hat Redis den Speicherplatz bereits nach dem Start des Clusters aufgeteilt16384 Kopien, jeder Host speichert einen Teil.

    Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...Hier muss beachtet werden, dass die Nummer, die ich jedem Redis-Speicherplatz gegeben habe, einem kleinen Speicherplatz entspricht (Der Fachbegriff "Hash-Slot"), man kann darunter die Zahl innerhalb eines Gebäudes verstehen, und ein Gebäude ist der gesamte Lagerraum davon Redis. Die Nummer jedes Hauses entspricht einem Speicherplatz. Dieser Speicherplatz verfügt über einen bestimmten Bereich zum Speichern des entsprechenden Schlüssels, was nach der Aufnahme des Modells im obigen Bild nicht der Fall ist.

      Die 28, auf die der Pfeil zeigt, bedeutet, dass 28 in diesem Bereich gelagert werden. Dieses Haus kann 29, 30, 31 usw. lagern.
    • Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...Nun stellt sich die Frage: Was sollen wir tun, wenn wir eine Maschine hinzufügen oder entfernen? Schauen Sie sich Bilder an, um zu sprechen, und versuchen Sie, keine Worte zu verwenden, wenn Sie Bilder zur Erklärung verwenden können.

      Nach dem Hinzufügen einer neuen Maschine werden der neuen Maschine bestimmte Slots aus den anderen drei Speicherplätzen zugewiesen. Hier können Sie einstellen, wie viele Slots Sie in die neue Maschine einbauen möchten.

      In ähnlicher Weise werden nach dem Reduzieren einer Maschine die entfernten Slots anderen vorhandenen Maschinen neu zugewiesen. Genau wie beim Hinzufügen eines neuen Knotens können Sie den Node-Empfangsslot angeben.

      Das sogenannte Hinzufügen eines Knotens oder Entfernen eines Knotens besteht darin, den Speicherort des Slots zu ändern. Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...Nachdem wir die Speicherstruktur des Clusters verstanden haben, müssen wir eine weitere Frage klären: Wie gestaltet man die interne Kommunikation des Clusters? Ein Wert kommt, ein Schlüssel wird erhalten, woher kommen die Daten, und wir werden uns diese Frage weiter unten ansehen.

      2. Kommunikationsdesign

      Jeder Knoten im Cluster sendet in einem bestimmten Zeitraum Ping-Nachrichten an andere Knoten, und andere Knoten geben Pong als Antwort zurück. Nach einer gewissen Zeit kennen alle Knoten die Slot-Informationen aller Knoten im Cluster.

      Wie in der Abbildung unten gezeigt, werden die 16384 Hash-Slots bei drei Knoten in drei Teile unterteilt.

      Sie lauten 0-5500, 5501-11000 bzw. 11001-16384

      Wie verarbeitet der Cluster die Anfrage, wenn ein Benutzer eine Schlüsselanforderung initiiert?

      Das schwarze Kästchen im Bild unten stellt die Slot-Informationen aller Knoten im Cluster dar und enthält viele weitere Informationen. Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...

      Wie in der Abbildung gezeigt, initiiert der Benutzer eine Schlüsselanforderung, Redis berechnet nach Erhalt die Steckplatzposition des Schlüssels und findet den entsprechenden Knoten basierend auf der Steckplatzposition.

      Wenn sich der Zugriffssteckplatz auf dem Knoten selbst befindet Dann werden die dem Schlüssel entsprechenden Daten direkt zurückgegeben.

      Andernfalls wird ein verschobener Umleitungsfehler beantwortet und der richtige Knoten wird an den Client zurückgegeben.

      Dann den Tastaturbefehl erneut senden

      Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...
      Bildbeschreibung hier einfügen

      4. Cluster konfigurieren

      1. Konfigurationsdatei ändern

      Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...Einfach bezahlen Achtung Klicken Sie einfach auf die Konfigurationsinformationen im Kreis

      • cluster-enabled ja: Cluster-Modus aktivieren
      • cluster-config-file nodes-6379.conf: Cluster-Konfigurationsdatei
      • clustre-node-timeout 10000: Knoten-Timeout, hier zur Vereinfachung des Testens , es ist auf 10s eingestellt Ersetzen Sie die Datei sed 's/6380 /g' 6379-redis.conf > 6380-redis.conf
      • Erstellen Sie auf diese Weise Konfigurationsdateien für 6 verschiedene Ports
      Bildbeschreibung hier einfügenÖffnen Sie eine beliebige Konfigurationsdatei, um zu prüfen, ob die Ersetzung erfolgreich istBildbeschreibung hier einfügen ps -ef | grep redisAls ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...
      Sie können sehen, dass nach dem Start ein zusätzliches Cluster-Logo angezeigt wird, was bedeutet, dass es sich bei allen Knoten um Knoten im Cluster handelt. Alle Knoten wurden gestartet und die Anweisungen zum Cluster-Start müssen auf Ruby basieren (Kaka verwendet Redis Version 4.0). Lass es uns gemeinsam installieren

      3. 安装ruby

      执行命令wget https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.1.tar.gzwget https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.1.tar.gz

      解压:tar -xvzf ruby-2.7.1.tar.gz 根据自己下载的版本来解压

      安装:./configure | make | make install这三个指令一气呵成。

      查看ruby和gem版本:ruby -v

      解压:tar -xvzf ruby-2.7.1.tar.gz Beschreibung:./configure | machen | make install这三个指令一气呵成.🎜🎜查看ruby和gem版本:ruby -v🎜
      Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...
      Hier Bildbeschreibung einfügen

      4. Starten Sie den Cluster

      Der Ausführungsbefehl des Clusters ist in /usr/local/redis/src/redis-trib.rb/usr/local/redis/src/redis-trib.rb

      注意如果需要直接使用redis-trib.rb命令,需要ln到bin目录下,否则就必须使用./redis-trib.rb的方式。

      如果按照步骤走,这里会出现一个错误Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...执行gem install redis很不幸的是在这里也会出现错误。Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...随后需要安装yum install zlib-develyum install openssl-devel

      Hinweis: redis-trib.rb , muss in das bin-Verzeichnis verschoben werden, andernfalls müssen Sie ./redis -trib.rbway. 🎜🎜Wenn Sie die Schritte befolgen, wird hier ein Fehler angezeigtBildbeschreibung hier einfügengem install redisLeider treten auch hier Fehler auf. Bildbeschreibung hier einfügenSie müssen es später installierenyum install openssl-devel🎜

      安装完成后,在/ruby-2.7 .1/ext/openssl und /ruby-2.7.1/ext/zlib  分别执行ruby extconf.rb并且执行make | make install/ruby-2.7.1/ext/openssl/ruby-2.7.1/ext/zlib  分别执行ruby extconf.rb并且执行make | make install

      然后在执行gem install redis就OKAls ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...这时在回头来执行./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...「信息解读」

      创建集群,并且给6个节点分配哈希槽,后三个节点配置为前三个节点的从节点Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...显示每个节点的哈希槽信息和节点ID,最后一步需要输入yesAls ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...然后在执行gem install redis就OKAls ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...这时在回头来执行显示每个节点的哈希槽信息和节点ID,最后一步需要输入yesAls ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...来到data目录下查看配置文件的变化Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...「查看主机点的运行日志」

      Die hier gegebenen Hauptinformationen beziehen sich auf den geänderten Clusterstatus: ok Der Clusterstatus ist normalAls ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...

      5. Clustereinstellungen und Datenerfassung

      Beim direkten Festlegen der Daten wird ein Fehler gemeldet und der Steckplatz angezeigt Die Position nach der Konvertierung des Namensschlüssels ist 5798 und es werden die IP-Adresse und die Portnummer angegeben. Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...Sie müssen den Befehl verwendenredis-cli -c

      Beim Festlegen des Werts werden Sie aufgefordert, zum Steckplatz 5798 umzuleiten.Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...Der nächste Schritt besteht darin, die Daten abzurufen, und der Knoten wird automatisch umgeschaltet. 5. Failover 9. Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...

      Der nächste Schritt besteht darin, 6383 offline zu schalten, um die Protokollinformationen von 6379 anzuzeigen.

      6379 meldet, dass die Verbindung 6383 verloren gegangen ist und markiert sie als fehlgeschlagen, was darauf hinweist, dass sie nicht verfügbar ist. Zu diesem Zeitpunkt funktioniert der Cluster noch normal.

      「Zusammenfassung: Offline-Slave-Knoten haben keinen Einfluss auf den Cluster」Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...Wenn Port 6383 online geht, löschen alle Knoten die FehlermarkierungAls ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...

      2 Der Cluster-Masterknoten geht offline

      Schalten Sie den Master-Knoten 6379 manuell offline und überprüfen Sie die Protokollinformationen des Slave-Knotens 6383. Zu diesem Zeitpunkt stellt der 6383-Knoten insgesamt zehnmal weiterhin eine Verbindung zu 6379 her. Warum dann 10 Mal! Es basiert auf den von uns konfigurierten Parameterncluster- Knoten – Dies wird durch Timeout 10 bestimmt. Hier ist eine Nachricht für uns: Stellen Sie einmal pro Sekunde eine Verbindung her, bis die Zeit abgelaufen ist, und starten Sie das Failover.

      Zu diesem Zeitpunkt war 6383 bei der Failover-Wahl erfolgreich, und der Slave drehte sich um und wurde zum Masterknoten. Bildbeschreibung hier einfügen Überprüfen Sie zu diesem Zeitpunkt die Knoteninformationen des Clusters, Befehlcluster nodes. cluster-node-timeout 10来决定的,这里给我们一个信息就是一秒连接一次

      直到时间到期后,开始故障转移。

      这时6383在故障转移选举中胜任,翻身奴隶把歌唱,成为了主节点。Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...此时在查看一下集群的节点信息,命令cluster nodes

      Sie werden feststellen, dass es hier vier Masterknoten gibt, aber einer der Masterknoten ist offline

      Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...„6379 ursprünglicher Masterknoten geht online“

      Nachdem 6379 online gegangen ist, löschen alle Knoten auch die Fehlerinformationen.

      Und die Knoteninformationen ändern sich ebenfalls. Zu diesem Zeitpunkt wechselt 6379 zum Slave-Knoten von 6383. Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...

      3. Fügen Sie einen neuen Masterknoten hinzu

      Führen Sie den neuen Befehl in den neuen beiden Ports 6385 und 6386 ausAls ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ..../redis-trib.rb add-node 127.0.0.1:6379, was hier gesendet wird ist meet message./redis-trib.rb add-node 127.0.0.1:6385 127.0.0.1:6379,这里发送的就是meet消息

      执行add-node命令,第一个参数为新节点的ip+端口   第二个参数为已存在集群中的节点。根据下图我们就可以看到新增的节点已经存在集群中了。

      「注意:虽说6385已经成为集群中的节点了,但是跟其它节点有区别。它没有数据,也就是没有哈希槽」Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...接下来我们就需要把集群中的某些哈希槽分配到这个新节点上,分配结束后这个节点才会成为真正意义上的主节点

      执行命令./redis-trib.rb reshard 127.0.0.1:6385

      会提示转移多少个哈希槽并填写接收节点的id

      最后一步询问是否从所有节点中转移:咔咔使用的是all

      Führen Sie den Befehl „add-node“ aus. Der erste Parameter ist die IP+Port des neuen Knotens und der zweite Parameter ist der Knoten, der bereits im Cluster vorhanden ist. Anhand der folgenden Abbildung können wir erkennen, dass die neu hinzugefügten Knoten bereits im Cluster vorhanden sind. 🎜🎜"Hinweis: Obwohl 6385 zu einem Knoten im Cluster geworden ist, unterscheidet er sich von anderen Knoten. Er hat keine Daten, also keinen Hash Slot 》Bildbeschreibung hier einfügen Als nächstes müssen wir diesem neuen Knoten einige Hash-Slots zuweisen , dieser Knoten wird zum echten Masterknoten🎜🎜Führen Sie den Befehl aus./redis-trib.rb reshard 127.0.0.1:6385🎜🎜 fragt ab, wie viele Hash-Slots übertragen werden sollen, und füllt den id🎜🎜Der letzte Schritt fragt, ob von allen Knoten: use Kaka The isalle🎜

      Anweisungen verwenden: cluster nodes> Überprüfen Sie, ob der Knoten 6385 bereits Hash-Slots in drei Bereichen hat<img src="https://img-blog.csdnimg.cn/2020061000064774.png" alt="Bildbeschreibung hier einfügen" style="max-width:90%" overflow-wrap: break-word margin: monospace wortumbruch: rgb hintergrund: h> ./ Redis-trib.rb add-node--Slave--master-id DCC0EC4D0C932AC5C35AE76F4F9C5D27A422D9F 127.0.0.1:6386 127.0.0.1:6385 <code style="overflow-wrap: break-word; margin: 0px 2px; font-family: " operator mono consolas monaco menlo monospace word-break: break-all color: rgb background: rgba padding: border-radius: height: line-height:>cluster nodes查看,6385的这个节点就已经拥有三个范围的哈希槽了Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...

      「主节点已经新增好了,接下来就需要给6385这个主节点配置一个从节点6386」

      命令:./redis-trib.rb add-node --slave --master-id dcc0ec4d0c932ac5c35ae76af4f9c5d27a422d9f 127.0.0.1:6386 127.0.0.1:6385

      master-id是6385的id,第一个参数为新节点的ip+端口    第二个为指定的主节点ip+端口Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...

      4. 手动故障迁移

      当想对集群中的主节点进行升级的话可以手动执行故障转移到从节点,避免集群可用性受影响。

      在从节点执行命令:cluster failover

      4. Manuelles Failover

      Wenn Sie If gruppieren möchten Wenn Sie den Master-Knoten aktualisieren, können Sie manuell ein Failover auf den Slave-Knoten durchführen, um eine Beeinträchtigung der Clusterverfügbarkeit zu vermeiden.

      Führen Sie den Befehl auf dem Slave-Knoten aus: Cluster-Failover

      「Ausführungsprozess」

      Sehen Sie sich die Knoteninformationen an und Sie können sehen, dass der Knoten 6386 zum Hostpunkt geworden ist. 🎜🎜Wenn der Cluster-Failover-Befehl an den Slave-Knoten gesendet wird, sendet der Slave-Knoten das CLUSTERMSG_TYPE_MFSTART-Paket an den Master-Knoten. Der Slave-Knoten fordert den Master-Knoten auf, den Zugriff zu stoppen, damit die Datenoffsets der beiden konsistent sind. 🎜

      Zu diesem Zeitpunkt stellt der Client keine Verbindung zum von uns entfernten Master-Knoten her. Gleichzeitig sendet der Master-Knoten den Replikations-Offset an den Slave-Knoten, der das Failover beginnt und dann benachrichtigt Der Master-Knoten führt einen Konfigurationswechsel durch. Wenn der Client den alten Master-Knoten entsperrt und sich erneut mit dem neuen Master-Knoten verbindet. Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...

      6. Failover-Prinzip

      Nachdem der Master-Knoten offline gegangen ist, wird der Slave-Knoten zum Master-Knoten.

      1. Fehlererkennung bis zur Bestätigung

      Jeder Knoten im Cluster sendet regelmäßig Ping-Nachrichten an andere Knoten und der Empfänger antwortet mit Pong.

      Wenn die Ping-Nachricht weiterhin innerhalb der Cluster-Knoten-Timeout-Zeit fehlschlägt, wird der empfangende Knoten mit dem Status „pfail“ markiert, was subjektiv als offline gilt.

      Kommt Ihnen dieser Offline-Zustand sehr bekannt vor? Ja, dies ähnelt in gewisser Weise der Beurteilung des Masterknotens durch den Sentinel. Wenn ein Sentinel ein Problem mit dem Masterknoten erkennt, markiert er den Masterknoten auch als objektiv offline (s_down). Plötzlich wurde mir klar, dass es mir peinlich war ...

      Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ... Lassen Sie mich die Sentinels erwähnen. Wenn ein Sentinel denkt, dass der Masterknoten abnormal ist, wird er subjektiv als offline markiert, aber wie können andere Sentinels dem nicht zustimmen? Sag, was du sagst. Sie alle werden versuchen, eine Verbindung zum abnormalen Masterknoten herzustellen. Wenn mehr als die Hälfte der Sentinels glauben, dass der Masterknoten abnormal ist, nehmen sie den Masterknoten objektiv direkt offline.

      In ähnlicher Weise beurteilt der Cluster nicht nur, dass sein Status aufgrund eines Knotens offline ist. Die Knoten werden durch Klatschnachrichten kontinuierlich weitergegeben. Die Knoten im Cluster sammeln kontinuierlich das Offline-Feedback des fehlerhaften Knotens und speichern es im lokalen Netzwerk Fehlerhafter Knoten-Offline-Bericht. Wenn mehr als die Hälfte der Cluster-Masterknoten als subjektiv offline markiert sind, ändert sich der Status in „objektiv offline“.

      Schließlich wird eine Fehlermeldung an den Cluster gesendet, die alle Knoten benachrichtigt, den ausgefallenen Knoten als objektiv offline zu markieren.

      Zum Beispiel: Knoten A sendet einen Ping an Knoten B und markiert Knoten B nach einer Kommunikationsstörung als pfail. Anschließend sendet Knoten A weiterhin Pings an Knoten C und überträgt die pfail-Informationen von Knoten B. Dann speichert Knoten C der Fehler von Knoten B im Offline-Bericht. Wenn die Anzahl der Offline-Berichte mehr als die Hälfte der Anzahl der Masterknoten mit Hash-Slots beträgt, wird versucht, objektiv offline zu gehen.

      2. Fehlerbehebung (der Slave-Knoten schaltet von nun an um und der Slave singt)

      Wenn der Fehlerknoten als objektiv offline definiert ist, tragen alle Slave-Knoten des Fehlerknotens die Verantwortung der Fehlerbehebung.

      Fehlerwiederherstellung ist ein Fehlerwiederherstellungsprozess, der ausgeführt wird, nachdem der Slave-Knoten durch geplante Aufgaben feststellt, dass sein Hostpunkt objektiv offline ist.

      『1. Qualifikationsprüfung』

      Alle Slave-Knoten überprüfen die letzte Verbindungszeit mit dem Master-Knoten. Wenn die Trennungszeit größer als Cluster-Node-Time*Cluster-Slave-Validity-Factor ist, gibt es keinen Failover-Qualifikationen.

      『2. Vorbereitungszeit für die Wahl』

      Lassen Sie uns zunächst darüber sprechen, warum es eine Vorbereitungszeit für die Wahl gibt.

      Wenn nach der Qualifikationsprüfung mehrere Slave-Knoten vorhanden sind, müssen zur Unterstützung der Priorität unterschiedliche Verzögerungswahlzeiten verwendet werden. Die Priorität hier ist Basierend auf dem Replikationsoffset gilt: Je größer der Offset, desto geringer ist die Verzögerung zwischen dem ausgefallenen Masterknoten und desto größer ist die Chance, den Masterknoten zu ersetzen.

      Die Hauptfunktion besteht darin, sicherzustellen, dass der Knoten mit der besten Datenkonsistenz die Wahl zuerst initiiert dies mit dem Wachposten zu verwechseln. Der Abstimmungsmechanismus des Clusters basiert auf den Hostpunkten, die die Slots halten.

      Der Slave-Knoten des ausgefallenen Knotens sendet ein FAILOVER_AUTH_REQUEST-Paket an alle Master-Knoten, die über Slots verfügen, um Stimmen anzufordern. Wenn der Master-Knoten auf FAILOVER_AUTH_ACK antwortet, um abzustimmen, kann er während des Zeitraums von NODE_TIMEOUT * 2 nicht für andere Slave-Knoten stimmen

      Nachdem der Slave-Knoten mehr als die Hälfte der Stimmen erhalten hat, geht er in die Fehlerwiederherstellungsphase über

      『4. Failover』

      Der erfolgreich ausgewählte Slave-Knoten bricht die Replikation ab und wird zum Master-Knoten.

      Löschen Sie den Slot von der ausgefallene Knoten und ersetzt den ausgefallenen Knoten. Der Steckplatz des Knotens wird ihm selbst anvertraut.

      sendet seine eigene Pong-Nachricht an den Cluster, benachrichtigt den Host über Punktänderungen und übernimmt die Steckplatzinformationen des ausgefallenen Knotens.

      Der SSH-Hintergrund, den Sie wollen! ! !

      Ein Redis-Sentinel-Artikel, dessen Fertigstellung zwei Nächte gedauert hat, aber es stellt sich heraus, dass Ihr Fokus nicht auf dem Artikel selbst liegt, ah! Das Herz des Redakteurs schmerzt

      Um allen Wünschen gerecht zu werden, erklärt Kaka widerstrebend, wie man einen hellen und blendenden Hintergrund einrichtet. Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...Das von Kaka verwendete Tool ist xsheel.Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...Öffnen Sie die Option zur Werkzeugauswahl.Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...Dann können Sie die xsheel-Transparenz festlegen, wenn Sie ein transparentes Fenster sehen. Als ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert ...Das stimmt! Sie haben Recht. Dies ist der Desktop-Hintergrund. Sind Sie bereit, mit der Einrichtung zu beginnen? Wie wäre es, wenn Sie nach der Einrichtung und dem Lesen des Artikels wiederkommen? Kaka braucht außerdem Experten aus allen Lebensbereichen, die technische Hinweise geben und Fehler korrigieren.

      Beharrlichkeit beim Lernen, Beharrlichkeit beim Bloggen und Beharrlichkeit beim Teilen sind die Überzeugungen, an denen Kaka seit seiner Karriere festhält. Ich hoffe, dass Kakas Artikel im riesigen Internet Ihnen ein wenig helfen können Sie in der nächsten Ausgabe.

Empfohlen: „Redis-Tutorial

Das obige ist der detaillierte Inhalt vonAls ich im Interview nach dem Redis-Cluster gefragt wurde, wurde ich zu Tode gefoltert .... Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage