Was ist Quorum in einem Pacemaker-Cluster (Verständnis von Quorumoperationen)

Was ist Quorum?

Damit ein Cluster wie erwartet funktioniert, müssen sich die Knoten auf bestimmte Fakten einigen, z. B. welche Computer derzeit Clustermitglieder sind, wo Dienste ausgeführt werden und welche Computer welche Ressourcen verwenden.

Die Methode, in der dies im Red Hat High Availability Add-On implementiert wird, ist die Verwendung eines Mehrheitswahlverfahrens. Jeder Clusterknoten gibt eine Stimme ab, wenn er erfolgreich an der corosync-Netzwerkkommunikation teilnimmt und mit den anderen Knoten kommunizieren kann, die bereits am Cluster teilnehmen.

Der Cluster ist betriebsbereit, wenn mehr als die Hälfte aller möglichen Stimmen erfolgreich abgegeben wurden. Die Mindestanzahl von Stimmen, die erforderlich sind, um mehr als die Hälfte der Stimmen zu erreichen, wird als Quorum bezeichnet. Wenn das Quorum erreicht ist, gilt der Cluster als quorate. Ein Cluster verliert das Quorum, wenn mindestens die Hälfte der Knoten nicht miteinander kommunizieren kann.

Wenn ein Cluster gestartet wird, versuchen alle Clusterknoten miteinander zu kommunizieren und das Quorum zu erreichen. Sobald eine Mehrheit gebildet wird, gibt es einen quorate Cluster. Alle anderen Knoten, die dem Quoratcluster nicht erfolgreich beigetreten sind, werden von einem Knoten mit Quorum eingezäunt. Wenn ein Knoten, der Teil des Quorate-Clusters ist, nicht mehr mit dem Cluster kommunizieren kann, wird der Knoten eingezäunt.

Warum ist eine Quorumberechnung erforderlich?

Quorum ist in Situationen erforderlich, in denen einige Knoten in einem Cluster nicht mit bestimmten anderen Knoten kommunizieren können. Die folgende Abbildung zeigt einen Cluster mit fünf Knoten, der aus den Knoten A, B, c, D und E mit einem Dienst besteht, der ein ext4-Dateisystem auf gemeinsam genutztem Speicher verwendet. Dieser Dienst wird derzeit auf Knoten A ausgeführt.

Ohne Quorum entscheiden diese beiden Knoten, dass A, B und C alle ausgefallen sind und eingezäunt werden müssen (remote ausgeschaltet), damit ihre Ressourcen wiederhergestellt werden können. Auf diese Weise fungiert Quorum als wichtiges Tor vor dem Fechten.

Wenn der Cluster kein Fencing-Gerät hätte, würden die Knoten D und E sofort mit der Wiederherstellung von Ressourcen beginnen, was dazu führte, dass dasselbe ext4-Dateisystem an zwei Stellen gleichzeitig gemountet wurde. Diese Situation, in der zwei Hälften eines Clusters unabhängig voneinander arbeiten, wird als Split-Brain bezeichnet.

Split-Brain ist ein besonderes Problem in Clustern mit zwei Knoten, da bei einem Ausfall eines Knotens der andere Knoten nicht aus einer Mehrheit der Knoten im Cluster besteht. Es müssen spezielle Schritte unternommen werden, um einen Clusterbetrieb mit zwei Knoten zu ermöglichen und dennoch Split-Brain zu vermeiden.“

Unter der Annahme, dass alle Knoten in diesem Beispiel eine Stimme haben, kann diese Situation nicht auftreten, da Knoten D und Knoten E nur zwei Stimmen zusammen haben, was nicht mehr als die Hälfte der Gesamtstimmen (fünf) ausmacht. Dies würde dazu führen, dass Knoten D und Knoten E nicht mehr funktionieren, bis mindestens eine weitere Stimme hinzugefügt wurde. Die Knoten A, B und c hingegen bleiben aktiv und bieten Dienste an, da sie zusammen drei Stimmen haben, was mehr als der Hälfte der Gesamtstimmen entspricht.

Berechnung des Quorums

Das Quorum wird im Red Hat High Availability Add-on von der Corosync-Komponente votequorum berechnet und verwaltet. Die votequorum-Komponente verwendet zwei Werte, um zu berechnen, ob der Cluster quorate ist:

  1. Erwartete Stimmen: Die Anzahl der Stimmen, die erwartet werden, wenn alle Clusterknoten voll funktionsfähig sind und miteinander kommunizieren.
  2. Gesamtstimmen: Die Anzahl der derzeit vorhandenen Stimmen. Dies kann niedriger sein als die Anzahl der erwarteten Stimmen, wenn einige Knoten nicht aktiv sind oder nicht mit dem Cluster kommunizieren.

Die Anzahl der Stimmen, die erforderlich sind, um das Quorum zu erreichen, basiert auf den erwarteten Stimmen. Die folgende Formel zeigt, wie viele Stimmen für das Quorum erforderlich sind. In dieser Berechnung bedeutet floor() immer abzurunden.

Quorum = floor(expected votes + 2 + 1)

Quorum-Berechnungsbeispiel

Im folgenden Beispiel wird ein Cluster mit drei Knoten angenommen. Ein Cluster mit drei Knoten hat eine erwartete Anzahl von Stimmen von drei.

Quorum= floor(expected votes + 2 + 1)Quorum = floor(3 + 2 + 1) Quorum = floor(1.5 + 1) Quorum = floor(2.5) Quorum = 2 

Im Cluster mit drei Knoten müssen mindestens zwei Knoten ausgeführt werden, um das Quorum zu erreichen.

Im folgenden Beispiel wird ein Cluster mit vier Knoten angenommen. Ein Cluster mit vier Knoten hat eine erwartete Anzahl von Stimmen von vier.

Quorum = floor(expected votes + 2 + 1} Quorum = floor(4 + 2 + 1) Quorum = floor(2 + 1} Quorum = floor(3) Quorum = 3

Im Cluster mit vier Knoten müssen mindestens drei Knoten ausgeführt werden, um das Quorum zu erreichen.

Anzeigen des Quorumstatus

Das Red Hat High Availability Add-on bietet ein umfassendes Dienstprogramm zur Anzeige des aktuellen Quorumstatus in einem Cluster: corosync-quorumtool. Das corosync-quorumtool bietet einen Überblick über quorumbezogene Informationen, z. B. Gesamtstimmen und erwartete Stimmen, und zeigt auf einen Blick an, ob der Cluster quoriert ist.

  1. Der Eintrag Nodes gibt die Anzahl der Knoten an, die zum Cluster gehören.
  2. Der Eintrag Node ID zeigt die ID des Knotens an, auf dem corosync-quorumtool ausgeführt wurde.
  3. Der Quorate-Eintrag zeigt an, ob der Cluster quorate ist.
  4. Der Eintrag Erwartete Stimmen zeigt die Anzahl der Stimmen an, die vorhanden sind, wenn alle konfigurierten Clustermitglieder im Cluster aktiv sind.
  5. Der höchste erwartete Eintrag zeigt die größte Anzahl erwarteter Stimmen im Cluster.
  6. Der Eintrag Gesamtstimmen zeigt die Anzahl der Stimmen an, die derzeit im Cluster vorhanden sind.
  7. Der Quorumeintrag zeigt an, wie viele Stimmen mindestens vorhanden sein müssen, damit der Cluster quorativ bleibt.
  8. Der Eintrag Flags zeigt alle quorumbezogenen Eigenschaften an, die derzeit für den Cluster festgelegt sind. Wenn der Cluster quorate ist, wird die Eigenschaft Quorate angezeigt. Zusätzliche Sonderfunktionen werden in diesem Feld ebenfalls angezeigt, wenn sie festgelegt sind, z. B. LastManstanding oder WaitForAll.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.