Split-Brain-Cluster
Dies geschieht, wenn einer oder mehrere Knoten eines Clusters von den anderen Knoten getrennt werden, was zur Bildung von Unterclustern oder einem Split-Brain-Cluster führt.
Im Wesentlichen handelt es sich bei Split-Brain um eine Terminologie, die auf einer Analogie zum medizinischen Split-Brain-Syndrom basiert. Dieser Zustand stellt die Inkonsistenz der Daten oder ihrer Verfügbarkeit dar, die aus der Pflege zweier separater Datensätze mit überlappendem Umfang entstehen kann. Dies kann auf die Server in einem Netzwerkdesign zurückzuführen sein oder auf einen Fehlerzustand, der durch Fehlkommunikation und Desynchronisierung der Daten zwischen den entsprechenden Servern im Netzwerk verursacht werden kann. Dies wird üblicherweise auch als Netzwerkpartition bezeichnet.
Da NCache Da es sich ebenfalls um einen verteilten Cache handelt, der mehrere Knoten und Cluster umfassen kann, ist auch das Auftreten eines Split-Brain-Clusters möglich NCache.
Wenn ein Split-Brain auftritt, besteht die Möglichkeit, dass sich Subcluster bilden. Daher muss einer der Untercluster entfernt werden, um sicherzustellen, dass alle Clients zu einem fehlerfreien Cluster umgeleitet werden. Da das Entfernen von Sub-Clustern einen Datenverlust zur Folge hat, wird der zu entfernende Sub-Cluster nach folgenden Kriterien ausgewählt:
- Falls die Sub-Cluster unterschiedlich groß sind, wird der Sub-Cluster mit der geringsten Anzahl an Knoten entfernt. Dadurch soll ein minimaler Datenverlust gewährleistet werden, da der kleinere Cluster weniger Daten enthält.
- Bei gleicher Größe der Cluster wird der Subcluster entfernt, dessen Koordinatorknoten die höhere IP-Adresse hat. Beispielsweise lauten die IPs der Koordinatorknoten der Untercluster A und B 20.200.20.38 bzw. 20.200.20.40. In diesem Fall wird der Subcluster mit der Koordinatorknoten-IP 20.200.20.40 entfernt.
Ein Split-Brain kann Dateninkonsistenzen oder Verfügbarkeitsprobleme darstellen, die aus der Pflege zweier separater Datensätze mit überlappendem Umfang resultieren. Außerdem kann dies zu erheblichen Problemen führen und für den Administrator eine ernste Situation darstellen. Aus diesem Grund ist es äußerst wichtig sicherzustellen, dass kein Risiko von Split-Brain und Datenkorruption besteht.
Es gibt einige gängige Ansätze, um mit dem Problem der Netzwerkpartition umzugehen, nachdem ein Split-Brain aufgetreten ist.
- Optimistischer Ansatz
- Pessimistischer Ansatz
Beim optimistischen Ansatz wird der Kommunikationskanal zwischen den Knoten einfach wiederhergestellt, während die partitionierten Knoten vorübergehend wie gewohnt arbeiten. Dabei wird davon ausgegangen, dass sich die Knoten in kurzer Zeit automatisch synchronisieren. Dieser Ansatz ist möglicherweise nur ein einfacher Ausweg, da bei Split-Brain immer die Gefahr einer Datenkorruption besteht.
Andererseits erfordert der pessimistische Ansatz, die Systemverfügbarkeit aufzugeben oder einfach zu opfern, um die Datenkonsistenz aufrechtzuerhalten. Bei Erkennung einer Netzwerkpartitionierung ist der Zugriff auf die Unterpartitionen eingeschränkt. Dies geschieht, um die Datenkonsistenz sicherzustellen. In diesem Fall kann nur eine Komponente weiterhin Lese-/Schreibanforderungen an den Speicher stellen, um Verlaufsdivergenzen zu vermeiden.
Umgang mit Split-Brain-Clustern durch NCache
Wenn ein Split-Brain auftritt, werden die Cluster-Knoten im Netzwerk einer Reihe von Prüfungen unterzogen, bevor wichtige Entscheidungen getroffen werden, z. B. welche Knoten heruntergefahren, neu gestartet, erneut verbunden oder aus dem Netzwerk entfernt werden sollen. NCache bietet eine Funktion namens Split-Brain Auto-Recovery, die standardmäßig deaktiviert ist. Es kann jedoch je nach Datensensibilität und Benutzeranforderungen aktiviert werden, falls ein Split-Brain im Netzwerk auftritt.
NCache bietet diese Funktion nur für die Partition-of-Replica-Topologie an. Um dies im Detail zu verstehen, werfen wir einen Blick auf die Clusterkonnektivität, die Partitions-Replikat-Topologie und die Szenarien hinter der Knotentrennung.
Cluster-Konnektivität
Zwei oder mehr Knoten können sich verbinden und zusammenarbeiten, um einen Cluster zu bilden. Jeder Knoten des Clusters wird als Mitglied bezeichnet. Ein Cluster in NCache kann als Gruppenkanal betrachtet werden, in dem Mitglieder miteinander kommunizieren können, indem sie Nachrichten senden oder empfangen. Ein Cluster wird immer in einer Mesh-Topologie gebildet, das heißt, alle Knoten sind miteinander verbunden.
Jeder Cluster besteht aus einem Koordinatorknoten und den verbleibenden Nicht-Koordinator- oder Teilnehmerknoten. Der Koordinatorknoten ist der ranghöchste Knoten, d. h. der Knoten, der zuerst gestartet ist, und ist für die meisten Aufgaben verantwortlich, wie z. B. das Hinzufügen oder Entfernen von Knoten. Immer wenn ein Knoten zum Cluster hinzugefügt oder daraus entfernt wird, informiert er den Koordinatorknoten, der die restlichen Vorgänge verwaltet, um eine verbindbare Umgebung im Cluster aufrechtzuerhalten. Zu den weiteren Aufgaben, die der Koordinatorknoten ausführt, gehören die Bucket-Verteilung, das Auslösen des Cache-Loaders und die Verbindungspflege.
Ein Cluster kann wie folgt kategorisiert werden:
- Vollständig verbundener Cluster
- Teilweise verbundener Cluster
- Cluster gestoppt
Vollständig verbundener Cluster
Ein Cluster wird als vollständig verbunden bezeichnet, wenn der Cluster n Knoten hat und jeder Knoten im Cluster über fehlerfreie n-1 Verbindungen mit allen anderen Knoten verfügt. In diesem Zustand können alle Knoten miteinander kommunizieren und befinden sich daher in einem stabilen Zustand.
Die folgende Abbildung zeigt einen vollständig verbundenen Cluster im Idealzustand.
Wenn sich ein Cluster in einem vollständig verbundenen Zustand befindet und ein Knoten dem Cluster beitritt, wird er Teil/Mitglied des entsprechenden Clusters. Wenn ein Knoten den Cluster verlässt oder teilweise von einem oder mehreren Mitgliedsknoten getrennt wird, bildet er einen separaten Cluster. Alle vorhandenen Knoten werden vom Koordinatorknoten über diese Änderung im Netzwerk informiert. Dadurch wird ein Statustransfer ausgelöst, der darauf abzielt, die Daten im neuen Cluster auszugleichen. Basierend auf der Topologie werden die Client-Verbindungen auf neue Knoten verteilt.
Client-Konnektivität
Wenn sich ein Cluster in einem fehlerfreien Zustand befindet, sind in der PoR-Topologie alle Clients mit allen Knoten des Clusters verbunden. Bei Split-Brain, das für das Partition-Replica (PoR) relevant ist, werden Clients mit allen Knoten des Clusters verbunden. Wenn ein Knoten beitritt, verbinden sich die Clients auch mit dem neuen Knoten. Wenn ein Knoten verlässt, kann der Client die Vorgänge weiterhin ausführen.
Gestoppt
Wenn ein Knoten den Cluster ordnungsgemäß verlässt, also heruntergefahren wurde und für den entsprechenden Knoten kein Hostprozess vorhanden ist, gilt der Knoten als gestoppt (bezogen auf den Rest des Clusters). Das Stoppen eines Knotens führt zu einem Statustransfer, der zum Datenausgleich führt. Dies wiederum gleicht die Anzahl der Clients auf die übrigen Knoten aus. Diese Funktion ist jedoch spezifisch für die REP-Topologie.
Client-Konnektivität
Clients, die zuvor mit dem gestoppten Knoten verbunden waren, verbinden sich nun mit anderen verbundenen Knoten.
Teilweise verbundener Cluster
Es kann Situationen geben, in denen ein oder mehrere Knoten eines Clusters keine Verbindung zu anderen Knoten herstellen können, beispielsweise aufgrund einer Netzwerkstörung.
Nehmen wir an, es gibt einen vollständig verbundenen Cluster mit drei Knoten. Wenn ein Fehler auftritt, sodass zwei der drei Knoten weiterhin miteinander kommunizieren können; Wenn der dritte Knoten jedoch das Netzwerk nicht erreichen kann, bilden die beiden verbundenen Knoten einen einzelnen Untercluster, beispielsweise Untercluster 3. Der dritte, nicht verbundene Knoten bildet einen unabhängigen Untercluster, beispielsweise Untercluster 1. Jeder Unterknoten -cluster verfügt nun über seine Koordinatorknoten. In dieser Situation verliert der Cluster seinen idealen Verbindungszustand. Es existieren nun zwei Cluster, die nicht miteinander kommunizieren können, aber innerhalb ihrer Sub-Cluster vollständig verbunden sind. Dieser Zustand wird als teilweise Konnektivität eines Clusters bezeichnet, wie in der folgenden Abbildung zu sehen ist.
Im oben genannten Szenario sind die Knoten in Sub-Cluster 1 und Sub-Cluster 2 so, dass Sub-Cluster 1 vollständig mit sich selbst verbunden und vollständig von Sub-Cluster 2 getrennt ist und umgekehrt.
Nehmen wir in einem komplexeren Fall einen 5-Knoten-Cluster an, bei dem ein Netzwerkfehler dazu führt, dass Knoten 5 seine Verbindung zu allen Knoten außer Knoten 3 unterbricht. In diesem Fall ist Knoten 3 immer noch mit Knoten 5 verbunden, und Knoten 3 bleibt bestehen auch mit Knoten 1, Knoten 2 und Knoten 4 verbunden. Nun ist Knoten 3 ein gemeinsames Mitglied für Sub-Cluster 1 (Knoten 1, Knoten 4 und Knoten 2) und Sub-Cluster 2 (Knoten 5).
Die folgende Abbildung zeigt die teilweise laufende Konnektivität.
Jeder Cluster benachrichtigt Knoten 3 und fordert ihn auf, seine Verbindung nur zu einem Cluster aufrechtzuerhalten. Beim Empfang von Benachrichtigungen beurteilt Knoten 3, woher die Benachrichtigungen kommen, und stellt eine Verbindung zu dem Sub-Cluster her, der den ranghöchsten Knoten enthält, bevor die Haupt-Cluster-Trennung erfolgte, was in diesem Szenario Sub-Cluster 2 ist.
Die folgende Abbildung zeigt die teilweise Konnektivität eines Clusters im Endzustand.
Verbindungsversuche
Jeder Clustervorgang verfügt über einen Timeout-Wert, der standardmäßig 60 Sekunden beträgt und im konfiguriert werden kann NCache Managementzentrum. Jeder Cluster verfügt über Verbindungswiederholungen (Standardwert 2) und Wiederholungsintervalle (Standardwert 2). Beide Werte sind auch im konfiguriert NCache Managementzentrum.
Immer wenn die Verbindung eines Knotens zu einem Cluster unterbrochen wird, versucht der vorherrschende Koordinatorknoten zuerst, die Verbindung wiederherzustellen. Wenn der erneute Versuch zu einer erfolgreichen Verbindung führt und keine Zeitüberschreitung auftritt, wechselt der Cluster in einen normalen, vollständig verbundenen Zustand. Wenn die Verbindung jedoch aus irgendeinem Grund nicht wiederhergestellt werden kann, bilden alle Knoten des Clusters mehrere Untercluster, was zu einer teilweisen Konnektivität führt.
Neuer Knotenbeitritt
Wenn sich ein Cluster in einem teilweise verbundenen Zustand befindet, erfolgt das Hinzufügen eines neuen Knotens zu dem Teil des Subclusters, der über die entsprechende Konnektivität im Netzwerk verfügt. Falls es mit beiden Sub-Clustern verbunden ist, schließt es sich dem Sub-Cluster mit der größeren Größe an, dh dem Sub-Cluster mit der größeren Anzahl an Knoten. Wenn die Anzahl der Knoten gleich ist, vergleicht er die IPs mit dem Koordinatorknoten und verbindet sich mit dem Koordinator mit einer größeren IP.
Client-Konnektivität
Im Falle einer teilweisen Konnektivität kann es bei den Clientanwendungen zu abruptem und unsicherem Verhalten kommen, da sich der Cluster in einer instabilen Umgebung befindet. Wenn ein Client-Computer mit beiden Sub-Clustern verbunden ist, stellen einige der Clients möglicherweise eine Verbindung zu Sub-Cluster 1 und andere zu Sub-Cluster 2 her. Möglicherweise besteht die Möglichkeit, dass die Netzwerkkonnektivität so ist, dass alle Clients eine Verbindung zu einem Sub-Cluster herstellen. Nur Cluster. Auch im Cluster besteht keine Datenkonsistenz.
Behebung eines teilweisen Verbindungsproblems
Um das Split-Brain-Problem zu lösen, NCache bietet sowohl manuelle als auch automatische Wiederherstellungsoptionen, wie unten erläutert.
Manuelle Auflösung
Wenn ein Cluster in einen teilweise verbundenen Zustand gerät, muss er neu gestartet werden. Die erste Empfehlung besteht darin, zu versuchen, das Problem zu identifizieren und zu beheben, das zu diesem Zustand geführt hat. Wenn es sich um Netzwerkprobleme handelt, versuchen Sie, das Netzwerk zu stabilisieren. Nachdem Sie die Probleme behoben haben, schließen Sie die Knoten, sodass ein einzelner Cluster entsteht, und starten Sie sie nacheinander.
Betrachten Sie beispielsweise den Cluster in Abbildung 3. Es ist ersichtlich, dass Knoten 1, Knoten 2 und Knoten 4 im Untercluster 1 vollständig verbunden sind, während Knoten 3 und Knoten 5 im Untercluster 2 vollständig verbunden sind. Da ein Netzwerk Da der Fehler zur Erstellung von Subcluster 2 führte, müssen Sie Knoten 3 und Knoten 5 herunterfahren. Versuchen Sie, das Problem zu beheben, das den Netzwerkfehler verursacht hat. Wenn Sie fertig sind, starten Sie jeden Knoten einzeln. Die gestarteten Knoten werden Teil des Unterclusters1, der sich dann in einen vollständig verbundenen Cluster verwandelt.
Automatische Split-Brain-Wiederherstellung
Um Split-Brain gerecht zu werden, NCache bietet auch eine automatische Methode, nämlich die Split-Brain Auto Recovery-Option über die NCache Managementzentrum. Da Daten unterschiedlicher Art sein und unterschiedliche Vertraulichkeitsstufen aufweisen können, ist diese Option standardmäßig deaktiviert. Es hängt vollständig vom Administrator des ab NCache Das Management Center entscheidet, ob es je nach Situation aktiviert werden soll oder nicht. Informationen zum Aktivieren der automatischen Split-Brain-Wiederherstellung für Cluster finden Sie unter Aktivieren der automatischen Split-Brain-Wiederherstellung mit NCache Management Center.
Siehe auch
Aktivieren Sie die automatische Wiederherstellung von Split-Brain mit NCache Management Center
Cache-Cluster-Einstellungen konfigurieren