Split-Brain-Recovery in NCache für 100 % Betriebszeit

NCache ist ein extrem schneller und skalierbarer In-Memory Distributed Cache für .NET / .NET Core. Die meiste Zeit, NCache läuft in Produktionsumgebungen für unternehmenskritische Anwendungen. Infolge, hohe Verfügbarkeit und 100 % Betriebszeit ist eine sehr wichtige Voraussetzung für NCache. Und, NCache zeichnet sich in diesem Bereich durch eine Vielzahl von Features sehr gut aus.

Eine dieser hochverfügbaren Funktionen ist die Split-Brain-Erkennung und -Wiederherstellung, um Ausfallzeiten zu vermeiden.

Was ist ein Split Brain im Cache-Cluster?

NCache schafft ein selbstheilender dynamischer Cache-Cluster bestehend aus mehreren Servern, die über TCP miteinander kommunizieren. Alle Cache-Server sind im Cluster miteinander verbunden, und die Cluster-Mitgliedschaft wird zur Laufzeit beibehalten und nicht nur an alle Cache-Server, sondern auch an alle Cache-Clients weitergegeben.

Wie bei jedem verteilten System NCache Der Cluster kann mit einer Situation konfrontiert werden, in der ein oder mehrere Cache-Server von den restlichen Servern im Cluster getrennt sind, aber beide Serversätze weiterhin ausgeführt werden. Dies tritt normalerweise aufgrund von Netzwerkstörungen oder -problemen auf.

Wenn dies geschieht, betrachtet sich jede Gruppe von Cache-Servern als die überlebenden Server des ursprünglichen Cache-Clusters und geht davon aus, dass die andere Gruppe von Cache-Servern ausgefallen ist (daher der Begriff Split Brain, was in medizinischer Hinsicht bedeutet, dass die linke Seite des Gehirns ausfällt). weiß nichts über die rechte Gehirnhälfte). Die Cache-Clients können auch auf ähnliche Weise aufgeteilt werden oder sie können basierend auf der ursprünglichen Cluster-Mitgliedschaft weiterhin mit allen Cache-Servern kommunizieren.

Dies ist offensichtlich kein gesunder und normaler Zustand und führt zu Fehlern in Cache-Operationen und vor allem zu Datenintegritätsproblemen. Jeder „geteilte Cluster“ hat nun seine eigene Datenkopie, die von den Clients unabhängig aktualisiert wird. Und am Ende haben Sie zwei oder mehr Kopien derselben Daten, die ohne Synchronisierung aktualisiert werden.

Wie wird Split Brain erkannt?

NCache hat die Fähigkeit, automatisch zu erkennen, wenn ein Split Brain auftritt. Die Cluster-Mitgliedschaft wird auf allen Cache-Servern im Cluster beibehalten. Wenn also ein Cluster aufgrund der Split-Brain-Situation in zwei oder mehr Sub-Cluster aufgeteilt wird, denkt jeder Sub-Cluster, dass er der überlebende Cluster ist, und arbeitet mit seinen Daten weiter.

Aber gleichzeitig weiß es, dass es andere Cache-Server gibt, die den Cluster auf anormale Weise verlassen haben. Eine normale Art und Weise ist, wenn der Cache-Administrator eine verwendet NCache Werkzeug um einen Cache-Server aus dem Cluster zu entfernen. Jeder Sub-Cluster versucht also weiterhin, sich wieder mit den „verlorenen Servern“ zu verbinden. Gleichzeitig wird jeder Untercluster protokolliert Ereignisse in das Windows-Ereignisprotokoll, das anzeigt, dass einige seiner ursprünglichen Mitglieder gegangen sind. Also, im Falle eines Split-Brain, die NCache Der Administrator sieht „node left“-Ereignisse für fast alle Cache-Server.

Erst wenn die Netzwerkverbindung zwischen den gesplitteten Sub-Clustern wiederhergestellt ist, erfahren sie, dass es tatsächlich zu einem Split-Brain gekommen ist. Bis zu diesem Zeitpunkt glauben sie, dass einige ihrer Mitglieder den Cluster verlassen hätten.

Sobald festgestellt wird, dass ein Split-Brain aufgetreten ist, protokolliert jeder Sub-Cluster Ereignisse im Windows-Ereignisprotokoll und kann auch den Cache-Administrator benachrichtigen Email Benachrichtigung dass ein Split Brain aufgetreten ist.

Wie funktioniert die automatische Wiederherstellung von Split Brain?

NCache ermöglicht es Ihnen, die automatische Wiederherstellung aus dem Split Brain zu konfigurieren. Wenn ja, wann immer NCache ein Split Brain erkennt, erholt es sich automatisch davon. Aktivieren Sie die Split-Brain-Recovery durch config.ncconf durch Hinzufügen der tag unter dem Schild. Sie können dann das Enable-Flag auf „true“ ändern und das Erkennungsintervall für Split Brain in Sekunden festlegen.

<cache-settings...>
  <split-brain-recovery enable="True" detection-interval="60"/>
</cache-settings>

Wenn ein Cluster in zwei oder mehr Sub-Cluster aufgeteilt wird und anschließend ihre Netzwerkverbindung wiederhergestellt wird, stellen sie schließlich fest, dass ein Split-Brain aufgetreten ist. Wenn der Benutzer die automatische Wiederherstellung konfiguriert hat, verhandeln an diesem Punkt alle Untercluster miteinander, um herauszufinden, welcher Untercluster zum „Master-Cluster“ werden soll, und die restlichen Untercluster treten dann diesem „Master“ bei Cluster“, indem sie ihre Daten wegwerfen und so tun, als ob sie neue Knoten wären, die einem bestehenden Cluster beitreten.

Die Regeln, die verwendet werden, um zu bestimmen, welcher Untercluster „Master“ werden soll, sind einfach. Es ist der Untercluster mit der größten Anzahl von Mitgliedsknoten. Und wenn mehrere Sub-Cluster die gleiche Anzahl von Mitgliedsknoten haben, dann gewinnt derjenige, dessen IP-Adresse des Koordinators am kleinsten ist, und wird zum „Master-Cluster“. Und der Rest des Unterclusters schließt sich ihm an, und das Endergebnis ist ein großer Cluster, der der Größe des ursprünglichen Clusters entspricht.

Was macht man als nächstes?

© Copyright Alachisoft 2002 - Alle Rechte vorbehalten NCache ist eine eingetragene Marke der Diyatech Corp.