Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Wie geht Redis Cluster mit Knotenfehlern um?


Wie geht Redis Cluster mit Knotenfehlern um?


Redis -Cluster verarbeitet Knotenausfälle durch eine Kombination aus Fehlererkennung, Replikat -Promotion und Cluster -Statusverwaltung, um die fortgesetzte Betriebs- und Datenverfügbarkeit sicherzustellen. Es ist so konzipiert, dass es Fehler einiger Knoten überlebt, indem Repliken automatisch für den Ersatz von unerreichbaren Mastern fördern und die Integrität des Schlüsselraums beibehalten und gleichzeitig die Datenverlustrisiken minimieren.

Cluster -Kommunikation und Ausfallerkennung

Redis-Cluster-Knoten kommunizieren über ein dediziertes TCP-basiertes Binärprotokoll namens Redis Cluster-Bus. Jeder Knoten hält die Verbindungen mit jedem anderen Knoten im Cluster mit diesem Bus auf, wodurch kontinuierliche Gesundheitsprüfungen und die Ausbreitung des Zustands ermöglicht werden. Senden Sie regelmäßig Ping -Pakete, um den Betriebsstatus ihrer Kollegen zu bestätigen und Informationen über den Zustand des Clusters zu teilen. Diese Kommunikation verwendet ein Klatschprotokoll, um Clusterinformationen effizient zu verbreiten, was bei der Erkennung von Knotenfehlern unterstützt wird.

Knoten überwachen Gleichaltrige mit einem aktiven Ping -Mechanismus. Wenn ein Knoten nicht auf Pings innerhalb eines konfigurierten Zeitleitungszeitraums (NODE_Timeout) reagiert, wird er als möglicherweise mit einem PFAIL -Status fehlgeschlagen. Dies ist eine vorläufige Misserfolgsanzeige, was bedeutet, dass der Knoten möglicherweise nicht erreichbar ist oder nicht mehr erreichbar ist, aber noch nicht bestätigt wird. Wenn die PFAIL -Bedingung anhält und von einer Mehrheit der Masterknoten bestätigt wird, wird der Knoten als Fehler markiert, was darauf hinweist, dass er als unerreichbar oder vom Cluster unten angesehen wird. Dieser Konsens-basierte Ausfallerkennungsmechanismus hilft bei der Identifizierung fehlgeschlagener Knoten.

Handhabung Master -Knotenfehler

Wenn ein Master -Knoten als Fehlschlag gekennzeichnet ist, initiiert REDIS -Cluster einen Failover -Prozess, um eine seiner Repliken für den neuen Master zu fördern. Dieser Prozess wird durch den Fehlerdetektor des Clusters ohne administrative Intervention automatisch ausgelöst. Die beworbene Replik übernimmt die Verantwortung, die zuvor vom fehlgeschlagenen Meister verwalteten Hash -Slots zu bedienen, und stellt sicher, dass der Cluster die Anfragen ohne manuelle Neukonfiguration weiter stellt.

Failover tritt nur dann auf, wenn mindestens eine Replik verfügbar und erreichbar ist, um zu fördern. Wenn keine geeignete Nachbildung vorhanden ist, gibt der Cluster in einen Fehlerzustand ein, in dem die Annahme von Abfragen nicht mehr akzeptiert wird, um zu verhindern, dass inkonsistente Daten dienen. Dies unterstreicht, wie wichtig es ist, dass Replikate für jeden Master konfiguriert werden, um eine hohe Verfügbarkeit aufrechtzuerhalten.

Failovermechanik und Sicherheit

Während des Failovers wartet das Replikat darauf, vollständig mit dem Master zu synchronisieren, der ersetzt und sicherstellt, dass alle ausstehenden Aktualisierungen verarbeitet wurden, um Datenverluste zu vermeiden. Dies erreicht dies, indem es den Replikationsversatz mit dem Master entspricht, sodass es einen aktuellen Datensatz hat, bevor die Master-Rolle übernimmt.

Nach der Synchronisierung fordert die Replik eine neue Konfigurationsspoche von der Mehrheit der Meister an. Die Epoche ist ein logischer Zeitstempel, mit dem Konfigurationsänderungen im Cluster verfolgt werden. Nach dem Erhalten von Konsens überträgt die Replik die aktualisierte Konfiguration an alle Knoten und kündigt seine Werbung zum Master und die Herabstufung des alten Meisters zur Nachbildung oder Entfernung an.

Der alte Meister empfängt, wenn er sich erholt, dieses Konfigurationsaktualisierung und stellt die Dienste von Abfragen als Master nicht mehr. Es leitet Kundenanfragen an den neuen Master weiter und stellt sicher, dass die Kunden transparent weiterhin mit dem Cluster ohne manuelle Eingriffe interagieren.

Handling-Netzwerk-Partitionen und Split-Hirn-Szenarien

Redis Cluster verwendet einen Mehrheitsbasis-Konsens, um Probleme mit Split-Hirns während der Netzwerkpartitionen zu vermeiden. Ein Meister wird nur fehlgeschlagen, wenn er von mehr als der Hälfte der Meister im Cluster nicht erreichbar ist. Meister, die nicht mit der Mehrheit kommunizieren können, werden die Akzeptanz von Schreiben aufhören, wodurch unterschiedliche Datenzustände zwischen Partitionen verhindern.

Wenn jedoch eine Minderheitspartition Kunden enthält, die vor dem Failover weiterhin an einen Master schreiben, besteht ein Potenzial für Schreibverlust. Redis mindert dieses Risiko, indem es nach einer Auszeit und auf der Mehrheit die Schreibvorgänge auf der Minderheitenseite verweigert, indem er den unerreichbaren Meister schnell versagt.

Trotz dieser Vorsichtsmaßnahmen können Schreibvorgänge während Failover -Fenstern verloren gehen, da Redis eine asynchrone Replikation zwischen Masters und Repliken verwendet. Da Antworten zum Schreiben von Befehlen und Replikationsaktualisierungen nahezu gleichzeitig gesendet werden, ist das Fenster zum Verlust von Schreibvorgängen sehr eng, aber nicht unmöglich.

Konfigurationsoptionen, die die Fehlerbehandlung beeinflussen

Redis -Cluster enthält Konfigurationsoptionen, die die Verfügbarkeit und das Verhalten während der Knotenausfälle beeinflussen:

-`cluster-require-full-coverage` (Standard Ja): Der Cluster akzeptiert nicht mehr, wenn ein Teil des Schlüsselraums aufgrund von Knotenfehlern aufgedeckt wird, um eine starke Datenkonsistenz zu gewährleisten.
-`cluster-allow-reads-when-down` (Standardno): Steuerelemente, ob Lesevorgänge zulässig sind, wenn sich der Cluster in einem Fehlerzustand befindet. Wenn Sie dies aktivieren, können Sie auch bei teilweisen Ausfällen Lesevorgänge von Knoten ermöglichen, kann jedoch zu veralteten Daten riskieren, die bedient werden.

Diese Einstellungen ermöglichen es den Administratoren, die Verfügbarkeit und Konsistenz auf der Grundlage der Anwendungsanforderungen auszugleichen.

Manual Failover Support

Zusätzlich zum automatischen Failover bietet Redis Cluster einen manuellen Failover -Befehl, der auf Replikatknoten ausgestellt werden kann. Dies ist nützlich für Wartungs- oder Testszenarien, in denen ein Administrator die Master -Rollen auszutauschen möchte, ohne auf ein tatsächliches Fehlerereignis zu warten.

Manuelles Failover blockiert Kunden auf dem aktuellen Master, wartet darauf, dass die Replik vollständig aufholt und dann die Replik mit einem reibungslosen Atomübergang fördert. Dies gewährleistet keinen Datenverlust während der Rollenänderung und minimale Störung der Kunden.

Zusammenfassung

Redis -Cluster verhandelt mit Knotenfehlern hauptsächlich durch ein Fehlererkennungs- und Failover -System, das auf einer kontinuierlichen Überwachung über den Redis -Cluster -Bus und eines Klatschprotokolls basiert. Knoten erkennen unerreichbare Meister und fördern nach einem Konsensprozess automatisch Replikate, wonach die Mehrheit der Meister sich über den Fehler einigen. Failover wurde entwickelt, um den Datenverlust zu minimieren, indem die Repliken vor der Promotion vollständig synchronisiert werden. Netzwerkpartitionen werden über mehrheitsbasierte Entscheidungen verwaltet, um Auftriebsbedingungen zu verhindern, obwohl aufgrund einer asynchronen Replikation ein schmales Schreibverlustauftritt auftreten kann. Konfigurationsoptionen ermöglichen die Einstellung der Verfügbarkeit im Vergleich zu Konsistenz bei Fehlern, und manuelle Failover -Befehle ermöglichen den Bediener die Kontrolle über die Wartung.

Diese Architektur ermöglicht es REDIS -Cluster, eine hohe Verfügbarkeit und Partitionstoleranz mit automatischer Wiederherstellung von Master -Knotenfehlern bereitzustellen und sicherzustellen, dass der Cluster unter Versagenszenarien operativ und konsistent bleibt.