Kubernetes: warum ungerade Master?

Schuriko

Bekanntes Mitglied
Bzgl. Ausfallsicherheit habe ich jetzt über Kubernates 2 Aussagen gehört

  • der Master sollte eine um ungerade Anzahl höher sein als die Nodes
  • der Master sollte +1 höhere Anzahl der Nodes haben
welche Aussage ist denn jetzt korrekt?
 

LimDul

Top Contributor
Das einzige was ich finde, die Zahl der master soll ungerade sein. Irgendwie scheinst du da aber noch was reingemischt zu haben.

Ungerade soll die Zahl wegen der Ausfallsicherheit sein, damit immer klar ist, wer nach einem Ausfall (was auch ein Split sein kann) die Hoheit hat.
 

Schuriko

Bekanntes Mitglied
Das einzige was ich finde, die Zahl der master soll ungerade sein. Irgendwie scheinst du da aber noch was reingemischt zu haben.

Ungerade soll die Zahl wegen der Ausfallsicherheit sein, damit immer klar ist, wer nach einem Ausfall (was auch ein Split sein kann) die Hoheit hat.
Aber wenn einer von den ungeraden Anzahl von Mastern ausfällt sind es wieder gerade Anzahl von Mastern. Das würde in dem Fall dann ja bedeuten, das 2 (wenn es vorher 3 waren) um den Masterrang streiten, oder?
 

mrBrown

Super-Moderator
Mitarbeiter
Aber wenn einer von den ungeraden Anzahl von Mastern ausfällt sind es wieder gerade Anzahl von Mastern. Das würde in dem Fall dann ja bedeuten, das 2 (wenn es vorher 3 waren) um den Masterrang streiten, oder?

Um mal ein Beispiel zu geben (Kubernetes unabhängig):

Dein System ist für irgendeine wichtige Aufgaben verantwortlich, die nacheinander abgearbeitet werden müssen, aber jede darf nur genau einmal ausgeführt werden, und um das ganze sicherer zu machen, kümmern sich mehrere drum.

Erstmal angenommen, es kümmern sich A und B darum: solange die beide sich absprechen können, ist alles gut und sie können sicherstellen, dass nicht einer das gleiche macht, wie der andere.
Probleme gibt es dann, wenn einer von beiden ausfällt, zB B: A sieht dann nur, dass B nicht mehr erreichbar ist, weiß aber nicht warum. Weil A nicht weiß, ob B weiter macht, kann er selbst aber auch nicht weiter machen, um zu verhindern, dass beide das gleiche machen.


Jetzt das gleiche Szenario mit A, B und C:
B fällt wieder aus, aber A und C erreichen sich noch gegenseitig. Weil man vorher festgelegt hat, dass man weiter machen kann, solange es mehr als die Hälfte ist, können A und C jetzt weiter machen, weil sie sich darauf verlassen können, dass B nicht weiter macht. Und gleiches aus Sicht von B: wenn es A und X nicht erreichen kann: es macht dann nicht weiter, weil es weniger als die Hälfte ist.



Wichtig ist es dann, wenn sie @LimDul schon gesagt hat, das Netzwerk in zwei Teile zerfällt. Beide Teile sind dann selbst noch lauffähig und sehen nur, dass der Rest nicht mehr erreichbar ist – es darf aber nur einer der Teile weiterarbeiten, um Probleme zu vermeiden, und das ist eben am einfachsten über die Mehrheit entscheidbar.
 

LimDul

Top Contributor
Aber wenn einer von den ungeraden Anzahl von Mastern ausfällt sind es wieder gerade Anzahl von Mastern. Das würde in dem Fall dann ja bedeuten, das 2 (wenn es vorher 3 waren) um den Masterrang streiten, oder?
Nein, sie streiten nicht um den Masterrang. Es geht darum, ob eine Menge von X Nodes gemeinsam entscheiden kann, ob sie noch wirklich der Master sind oder ob sie es unter Umständen nicht mehr sind. Und dabei ist wichtig, dass diese Entscheidung über alle Nodes hinweg so ist, das immer maximal eine Menge sich entscheiden kann, das sie der Master sind.

Wie @mrBrown schon zeigte, ist das bei einer ungeraden Zahl an Knoten einfacher. Jetzt könnte man argumentieren, dass man einfach die Master Zahl erhöht - bei 8 Mastern ist es doch unwahrscheinlich das auf einmal 4 ausfallen, sprich bei einer genügend hohen Zahl an Mastern ist das Problem doch akademisch? Und das stimmt nämlich meines Erachtens nicht, zwar ist unwahrscheinlich das bei 8 Knoten davon 4 gleichzeitig per Hardwaredefekt ausfallen. Aber man versucht ja solche Systeme redundant zu halten (Es geht ja oft um Hochverfügbarkeit). Das heißt, man teilt die Knoten auf verschiedene Rechenzentren auf. Und das macht man in der Regel ca. 50/50. Wenn nun die Verbindung zwischen den beiden RZ ausfällt und in jedem RZ genau 4 Master stehen, sind zwar alle Master technisch funktionionsfähig, aber das gesamte Cluster ist lahmgelegt, weil keiner der beiden Gruppen von 4 Mastern weiß, ob er sich nun zuständig fühlen kann. Hat man 9 oder 7 Master, so hat bei einem Ausfall der Verbindung zwischen den beiden RZs immer noch die Garantie, dass der Teil des Clusters der in dem RZ wo die Mehrheit der Master steht, lauffähig bleibt.

Natürlich könnte man jetzt hingehen und sicherstellen, dass von den 8 Mastern 5 im eine RZ und 3 im anderen sind - aber das ist deutlich komplexer und fehleranfälliger sicherzustellen, als einfach eine ungerade Zahl zu wählen.
 

Neue Themen


Oben