Split Brain (Informatik)
# Split Brain (Informatik)

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

## Formen

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 zwei ungleiche Teile
* der Auftrennung eines Mehr-Knoten-Clusters (>2) in zwei gleiche Teile
* der Auftrennung eines Mehr-Knoten-Clusters (>2) in mehr als zwei Teile. Diese letzte Situation wird jedoch als mehrere einzelne Split-Brain-Szenarien betrachtet.

## Zustandekommen

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 mehr unterscheiden, ob es sich um einen partiellen Ausfall oder eine Trennung handelt. Alle diese (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

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; der Cluster verhält sich aus Anwendersicht wie im Normalbetrieb. 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. Die Wiederherstellung aller Daten nach einer solchen Situation ist im Normalfall nicht mehr mit vertretbarem Zeitaufwand machbar oder gar gänzlich unmöglich.

## Gegenmaßnahmen

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 – für die 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):

* der Teil/Knoten mit der Sicht auf die meisten der Quoren
* 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 wir sehen 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 oder Tod des Knotens. Die oben genannte Entscheidungsliste wird erweitert:

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

Es kann einem Clusterknoten eine höhere Wertung (Stimme) im Quorum gegeben werden, so dass dieser immer überlebt; der überlebende Knoten zwingt den oder die anderen Knoten dann zur Aufgabe (reboot), siehe STONITH. Um eine höhere Sicherheit zu gewährleisten, wird manchmal ein Zeuge (Witness) eingeführt, somit sind immer mindestens 2 Quellen verfügbar bzw. findet eine Gewichtung statt.

