Split Brain (Informatik)

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Split Brain ist in der Informatik ein unerwünschter Zustand eines Computerclusters, bei dem alle Zwischenverbindungen zwischen den Clusterteilen gleichzeitig unterbrochen sind.

Formen[Bearbeiten]

Grundsätzlich unterscheidet man zwischen

  • der (Ab-)Trennung eines Einzelknotens, ein Extrembeispiel dafür ist die Teilung eines 2-Knoten-Clusters
  • der Auftrennung eines Mehr-Knoten-Clusters (>2) in ungleiche Teile
  • der Auftrennung eines Mehr-Knoten-Clusters (>2) in gleiche Teile
  • der Auftrennung eines Mehr-Knoten-Clusters (>2) in mehrere Teile. Diese letzte Situation wird jedoch als mehrere einzelne Split-Brain-Szenarien betrachtet.

Zustandekommen[Bearbeiten]

Zur Koordination der Transaktionen im Cluster wird in der Regel ein Cluster Interconnect oder ein Quorum verwendet – je nach eingesetzter Technologie. Wird die Verbindung zwischen einem oder mehreren Teilen des Clusters über diesen Weg unterbrochen, kann keines noch unterscheiden ob es sich um einen partiellen Ausfall oder eine Trennung handelt. Alle dieser (nun isolierten) Clusterfragmente arbeiten für sich weiter, um die Bereitstellung des Dienstes (auch „Service“) aufrechtzuerhalten. Da im Normalfall die Netzwerkanbindung in das öffentliche Netz (also in Richtung Benutzer) noch funktioniert, ergeben sich Probleme:

Auswirkungen[Bearbeiten]

Das Grundproblem von Split Brain ist der Umstand, dass mindestens zwei Teile noch funktionieren, jedoch keine Koordination zwischen ihnen mehr möglich ist. Während dies bei reinen Lesezugriffen noch nicht unmittelbar problematisch scheint, führt ein Schreibzugriff zu massiven Konflikten: Die Schreibvorgänge verteilen sich über die (zwar funktionierenden aber voneinander isolierten) Teile des Clusters, wobei aber die Logikschicht (engl. middle tier) bzw. der Benutzer nichts ungewöhnliches bemerkt; das Cluster verhält sich im Normalbetrieb aus Anwendersicht gleich. Dabei kann jedoch durch die unterbrochene Zwischenverbindung der von Knoten/Teil A geschriebene Block durch Knoten/Teil B nicht gelesen werden – und umgekehrt.

Die Datenstände laufen daher auseinander, die Konsistenz der Daten ist nicht mehr gewährleistet. Eine Wiederherstellung aus dieser Situation ist im Normalfall nur unter indiskutablem Zeitaufwand machbar oder gar gänzlich unmöglich.

Gegenmaßnahmen[Bearbeiten]

Die Grundlage aller Gegenmaßnahmen ist der gleichzeitige Einsatz von Quorum und Cluster Interconnect: Die Trennung einer der beiden Koordinationsmöglichkeiten erlaubt noch immer die Unterscheidung zwischen Teilung und partiellem Ausfall.

Die Abdeckung paralleler Ausfälle (gleichzeitiger Verlust mehrerer betriebskritischer Teile) erhöht den Aufwand enorm – im Falle Split-Brain-Verhütung fängt beispielsweise die Verwendung mehrerer Quoren und der Einsatz parallelisierter / gebondeter Interconnects den Ausfall von Interconnect und einer Storage ab.

Im Zusammenspiel zwischen Quoren und Interconnect ist eine zuverlässig automatisierte Entscheidungsfindung notwendig, so wird beispielsweise bei der Oracle Clusterware die Entscheidung folgendermaßen getroffen:

Es überlebt nach dem Verlust des Interconnects (Reihenfolge wird beachtet):

  1. der Teil/Knoten mit der Sicht auf die meisten der Quoren
  2. der Teil/Knoten mit der höchsten Arbeitslast.

Um nicht das eben durch mehrere Quoren vermeintlich gelöste Problem zu wiederholen (Ich sehe zwei Quoren, Du siehst zwei Quoren, aber sehen wir zwei verschiedene Paare!) verwendet Oracle eine ungerade Anzahl dieser Quoren. Alle Knoten die sich im Quorum treffen, müssen sich auch im Interconnect sehen. Ist dies nicht der Fall, entscheiden die Last- und Topologieinformationen in der Voting Disk über Leben und Tod des Knotens. Die eben genannte Entscheidungsliste wird erweitert:

  1. der Teil/Knoten mit der Sicht auf die meisten der Quoren
  2. der Teil mit den meisten Knoten
  3. der Teil/Knoten mit der höchsten Arbeitslast.

Siehe auch[Bearbeiten]