ZooKeeper-Wartung

Edge for Private Cloud v4.18.01

ZooKeeper-Ensembles sind so konzipiert, dass sie auch bei Ausfall eines oder mehrerer ZooKeeper-Knoten ohne Datenverlust funktionieren. Diese Ausfallsicherheit kann effektiv genutzt werden, um Wartungen an ZooKeeper-Knoten ohne Systemausfall durchzuführen.

ZooKeeper und Edge

In Edge enthalten ZooKeeper-Knoten Konfigurationsdaten zum Speicherort und zur Konfiguration der verschiedenen Edge-Komponenten und benachrichtigen die verschiedenen Komponenten über Konfigurationsänderungen. Für alle unterstützten Edge-Topologien für ein Produktionssystem ist die Verwendung von mindestens drei ZooKeeper-Knoten erforderlich.

Verwenden Sie die Eigenschaften ZK_HOSTS und ZK_CLIENT_HOSTS in der Edge-Konfigurationsdatei, um die ZooKeeper-Knoten anzugeben. Für die Prüfung

ZK_HOSTS="$IP1 $IP2 $IP3" 
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3" 

Dabei gilt:

  • ZK_HOSTS: Gibt die IP-Adressen der ZooKeeper-Knoten an. Die IP-Adressen müssen auf allen ZooKeeper-Knoten in derselben Reihenfolge aufgeführt sein.

    In einer Umgebung mit mehreren Rechenzentren alle ZooKeeper-Knoten aus allen Rechenzentren auflisten.
  • ZK_CLIENT_HOSTS: Gibt die IP-Adressen der ZooKeeper-Knoten an, die nur von diesem Rechenzentrum verwendet werden. Die IP-Adressen müssen auf allen ZooKeeper-Knoten im Rechenzentrum in derselben Reihenfolge aufgeführt sein.

    Bei einer einzelnen Data Center-Installation sind dies dieselben Knoten wie in ZK_HOSTS angegeben. In einer Umgebung mit mehreren Rechenzentren sollten in der Edge-Konfigurationsdatei für jedes Rechenzentrum nur die ZooKeeper-Knoten für dieses Rechenzentrum aufgeführt sein.

Standardmäßig werden alle ZooKeeper-Knoten als Abstimmungsknoten bezeichnet. Das bedeutet, dass alle Knoten an der Wahl des ZooKeeper-Leiters teilnehmen. Sie können den Modifikator „:observer“ in ZK_HOSTS einfügen, um anzugeben, dass es sich bei der Notiz um einen Beobachterknoten und nicht um einen Knoten handelt, der abstimmen darf. Ein Beobachterknoten nimmt nicht an der Wahl des Leaders teil.

Sie geben den Modifikator „:observer“ in der Regel an, wenn Sie mehrere Edge-Rechenzentren erstellen oder ein einzelnes Rechenzentrum eine große Anzahl von ZooKeeper-Knoten hat. In einer Edge-Installation mit 12 Hosts und zwei Rechenzentren ist beispielsweise ZooKeeper auf Knoten 9 im Rechenzentrum 2 der Beobachter:

Verwenden Sie dann die folgenden Einstellungen in Ihrer Konfigurationsdatei für Rechenzentrum 1:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

Und für das Rechenzentrum

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"

Leiter, Follower, Wähler und Beobachter

In einer ZooKeeper-Installation mit mehreren Knoten wird einer der Knoten als Leiter bezeichnet. Alle anderen ZooKeeper-Knoten werden als Follower bezeichnet. Lesevorgänge können von jedem ZooKeeper-Knoten ausgeführt werden, alle Schreibanfragen werden jedoch an den führenden Knoten weitergeleitet. Beispiel: Edge wird ein neuer Message Processor hinzugefügt. Diese Informationen werden in den ZooKeeper-Leiter geschrieben. Alle Follower replizieren dann die Daten.

Bei der Edge-Installation weisen Sie jeden ZooKeeper-Knoten als Wähler oder Beobachter zu. Der Leader wird dann von allen ZooKeeper-Knoten gewählt, die als Wähler fungieren. Die einzige Anforderung für die Wahl eines Leaders ist, dass ein Quorum von aktiven ZooKeeper-Wählerknoten verfügbar sein muss. Ein Quorum bedeutet, dass mehr als die Hälfte aller ZooKeeper-Knoten, die in allen Rechenzentren abstimmen, funktionsfähig sind.

Wenn kein Quorum an Knoten zur Stimmabgabe verfügbar ist, kann kein Clusterleiter gewählt werden. In diesem Szenario kann Zookeeper keine Anfragen bearbeiten. Das bedeutet, dass Sie keine Anfrage an den Edge-Verwaltungsserver senden, keine Management API-Anfragen verarbeiten und sich nicht in der Edge-Benutzeroberfläche anmelden können, bis das Quorum wiederhergestellt ist.

Beispiel für eine einzelne Rechenzentrumsinstallation:

  • Sie haben drei ZooKeeper-Knoten installiert.
  • Alle ZooKeeper-Knoten sind Abstimmende
  • Das Quorum besteht aus zwei aktiven Knoten, die abstimmen.
  • Wenn nur ein Knoten für die Abstimmung verfügbar ist, kann das ZooKeeper-Ensemble nicht funktionieren.

Bei einer Installation mit zwei Rechenzentren:

  • Sie haben drei ZooKeeper-Knoten pro Rechenzentrum installiert, insgesamt also sechs Knoten.
  • Rechenzentrum 1 hat drei Abstimmende Knoten
  • Rechenzentrum 2 hat zwei Knoten mit Stimmrecht und einen Beobachterknoten
  • Das Quorum basiert auf den fünf Abstimmenden in beiden Rechenzentren und entspricht daher drei funktionierenden Abstimmendenknoten.
  • Wenn nur zwei oder weniger Abstimmende Knoten verfügbar sind, kann das ZooKeeper-Ensemble nicht funktionieren.

Knoten als Wähler oder Beobachter hinzufügen

Je nach Systemanforderungen müssen Sie Ihrer Edge-Installation möglicherweise zusätzliche ZooKeeper-Knoten hinzufügen. In der Dokumentation ZooKeeper-Knoten hinzufügen wird beschrieben, wie Sie Edge zusätzliche ZooKeeper-Knoten hinzufügen. Beim Hinzufügen von ZooKeeper-Knoten müssen Sie den Typ der Knoten berücksichtigen: Wähler oder Beobachter.

Sie sollten genügend Voter-Knoten haben, damit das ZooKeeper-Ensemble auch dann funktionieren kann, wenn ein oder mehrere Voter-Knoten ausfallen. Das bedeutet, dass immer ein Quorum von Voter-Knoten verfügbar sein muss. Wenn Sie Stimmknoten hinzufügen, erhöhen Sie das Quorum und können daher mehr ausgefallene Stimmknoten tolerieren.

Das Hinzufügen zusätzlicher Knoten, die abstimmen, kann sich jedoch negativ auf die Schreibleistung auswirken, da für Schreibvorgänge das Quorum für die Auswahl des Leaders erforderlich ist. Die Zeit, die für die Bestimmung des Leaders benötigt wird, hängt von der Anzahl der Abstimmendenknoten ab. Je mehr Abstimmende Knoten hinzugefügt werden, desto länger dauert es. Daher sollten nicht alle Knoten als Wähler festgelegt werden.

Anstatt Abstimmende-Knoten hinzuzufügen, können Sie Beobachter-Knoten hinzufügen. Durch das Hinzufügen von Beobachterknoten wird die Leseleistung des gesamten Systems erhöht, ohne dass der Overhead für die Wahl eines Leaders steigt. Beobachterknoten stimmen nicht ab und haben keine Auswirkungen auf die Größe des Quorums. Wenn also ein Beobachterknoten ausfällt, hat das keine Auswirkungen auf die Fähigkeit des Ensembles, einen Anführer zu wählen. Wenn jedoch Beobachterknoten ausfallen, kann die Leseleistung des ZooKeeper-Ensembles sinken, da weniger Knoten für die Bearbeitung von Datenanfragen verfügbar sind.

In einem einzelnen Rechenzentrum empfiehlt Apigee, unabhängig von der Anzahl der Beobachterknoten nicht mehr als fünf Abstimmende zu verwenden. In zwei Rechenzentren empfiehlt Apigee, nicht mehr als neun Stimmen zu haben (fünf in einem Rechenzentrum und vier im anderen). Sie können dann so viele Beobachterknoten hinzufügen, wie für Ihre Systemanforderungen erforderlich sind.

Wartungsaspekte

Die ZooKeeper-Wartung kann bei einem voll funktionsfähigen Ensemble ohne Ausfallzeit durchgeführt werden, wenn sie jeweils nur auf einem einzelnen Knoten ausgeführt wird. Wenn immer nur ein ZooKeeper-Knoten ausfällt, ist immer ein Quorum von abstimmenden Knoten verfügbar, um einen Leader zu wählen.

Wartung in mehreren Rechenzentren

Wenn Sie mit mehreren Rechenzentren arbeiten, denken Sie daran, dass das ZooKeeper-Ensemble keine Unterscheidung zwischen Rechenzentren vornimmt. In ZooKeeper-Assemblies werden alle ZooKeeper-Knoten in allen Rechenzentren als Ensemble betrachtet.

Der Standort der Knoten, die bei Abstimmungen mitwirken, spielt bei der Quorumberechnung durch ZooKeeper keine Rolle. Einzelne Knoten können in Rechenzentren ausfallen, aber solange ein Quorum im gesamten Ensemble erhalten bleibt, funktioniert ZooKeeper weiter.

Auswirkungen auf die Wartung

Gelegentlich müssen Sie einen ZooKeeper-Knoten zu Wartungszwecken herunterfahren, entweder einen Knoten mit Stimmrecht oder einen Beobachterknoten. Beispielsweise müssen Sie möglicherweise die Edge-Version auf dem Knoten aktualisieren, der Computer, auf dem ZooKeeper gehostet wird, kann ausfallen oder der Knoten kann aus einem anderen Grund wie einem Netzwerkfehler nicht mehr verfügbar sein.

Wenn der ausgefallene Knoten ein Beobachterknoten ist, ist mit einer leichten Leistungsminderung des ZooKeeper-Ensembles zu rechnen, bis der Knoten wiederhergestellt ist. Wenn der Knoten ein Knoten mit Stimmrecht ist, kann dies die Lebensfähigkeit des ZooKeeper-Ensembles beeinträchtigen, da ein Knoten verloren geht, der an der Leader-Wahl teilnimmt. Unabhängig vom Grund für den Ausfall des Knotens ist es wichtig, ein Quorum verfügbarer Knoten aufrechtzuerhalten.

Wartungsvorgehen

Sie sollten nur dann Wartungsvorgänge ausführen, wenn Sie sich vergewissert haben, dass ein ZooKeeper-Ensemble funktioniert. Dabei wird davon ausgegangen, dass Beobachterknoten funktionsfähig sind und während der Wartung genügend Knoten zur Stimmabgabe verfügbar sind, um ein Quorum aufrechtzuerhalten.

Wenn diese Bedingungen erfüllt sind, kann ein ZooKeeper-Ensemble beliebiger Größe den Verlust eines einzelnen Knotens jederzeit ohne Datenverlust oder nennenswerte Auswirkungen auf die Leistung tolerieren. Das bedeutet, dass Sie Wartungsarbeiten an jedem Knoten im Ensemble ausführen können, solange es sich um einen einzelnen Knoten handelt.

Führen Sie während der Wartung die folgenden Schritte aus, um den Typ eines ZooKeeper-Knotens (Leiter, Wähler oder Beobachter) zu ermitteln:

  1. Wenn es auf dem ZooKeeper-Knoten nicht installiert ist, installieren Sie nc:
    > sudo yum install nc
  2. Führen Sie den folgenden nc-Befehl auf dem Knoten aus:
    > echo stat | nc localhost 2181

    Dabei ist 2181 der ZooKeeper-Port. Die Ausgabe sollte in etwa so aussehen:
    Zookeeper-Version: 3.4.5-1392090, compiled on 09/30/2012 17:52 GMT
    Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Latency min/avg/max: 0/0/0
    Received: 1
    Sent: 0
    Connections: 1
    Outstanding: 0
    Zxid: 0xc00000044
    Mode: follower
    Node count: 653


    In der Zeile Mode der Ausgabe für die Knoten sollte je nach Knotenkonfiguration observer, leader oder follower (d. h. ein Wähler, der nicht der Leader ist) angezeigt werden.

    Hinweis: Bei einer eigenständigen Installation von Edge mit einem einzelnen ZooKeeper-Knoten ist der Modus auf standalone festgelegt.
  3. Wiederholen Sie die Schritte 1 und 2 auf jedem ZooKeeper-Knoten.

Zusammenfassung

Die Wartung eines ZooKeeper-Ensembles sollte am besten Knoten für Knoten durchgeführt werden. Denk daran:

  • Während der Wartung muss ein Quorum von abstimmenden Knoten aufrechterhalten werden, damit das ZooKeeper-Ensemble funktionsfähig bleibt.
  • Das Herunterfahren eines Beobachterknotens hat keine Auswirkungen auf das Quorum oder die Möglichkeit, einen Leiter zu wählen.
  • Das Quorum wird für alle ZooKeeper-Knoten in allen Rechenzentren berechnet.
  • Wartung des nächsten Servers nach Inbetriebnahme des vorherigen Servers durchführen
  • ZooKeeper-Knoten mit dem Befehl „nc“ prüfen