Wartung von ZooKeeper

Edge for Private Cloud v4.18.05

ZooKeeper-Gruppen sind so konzipiert, dass sie trotz des Verlusts eines oder mehrerer ZooKeeper-Knoten ohne Datenverlust funktionieren. Diese Ausfallsicherheit kann effektiv genutzt werden, um Wartungsarbeiten an ZooKeeper-Knoten ohne Systemausfall auszuführen.

Über ZooKeeper und Edge

In Edge enthalten ZooKeeper-Knoten Konfigurationsdaten über den Standort und die Konfiguration der verschiedenen Edge-Komponenten und benachrichtigen die verschiedenen Komponenten von Konfigurationsänderungen. Alle unterstützten Edge-Topologien für ein Produktionssystem geben an, dass mindestens drei ZooKeeper-Knoten verwendet werden sollen.

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

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

Wobei:

  • ZK_HOSTS gibt die IP-Adressen der ZooKeeper-Knoten an. Die IP-Adressen müssen auf allen ZooKeeper-Knoten in derselben Reihenfolge aufgelistet werden.

    Listen Sie in einer Umgebung mit mehreren Rechenzentren alle ZooKeeper-Knoten aus allen Rechenzentren auf.

  • ZK_CLIENT_HOSTS gibt nur die IP-Adressen der ZooKeeper-Knoten an, die von diesem Rechenzentrum verwendet werden. Die IP-Adressen müssen auf allen ZooKeeper-Knoten im Rechenzentrum in derselben Reihenfolge aufgelistet werden.

    In einer einzelnen Rechenzentrumsinstallation sind dies dieselben Knoten, die von ZK_HOSTS angegeben werden. In einer Umgebung mit mehreren Rechenzentren sollte die Edge-Konfigurationsdatei für jedes Rechenzentrum nur die ZooKeeper-Knoten für dieses Rechenzentrum auflisten.

Standardmäßig werden alle ZooKeeper-Knoten als voter-Knoten festgelegt. Das bedeutet, dass die Knoten alle an der Wahl des ZooKeeper-Leaders beteiligt sind. Sie können den Modifikator :observer in ZK_HOSTS einfügen, um anzugeben, dass die Notiz ein Beobachter-Knoten und kein Voter ist. Ein Beobachterknoten nimmt nicht an der Wahl des Leaders teil.

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

Anschließend verwenden Sie in Ihrer Konfigurationsdatei für Rechenzentrum 1 die folgenden Einstellungen:

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

Und für Rechenzentren

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

Führungskräfte, Follower, Wähler und Beobachter

In einer ZooKeeper-Installation mit mehreren Knoten wird einer der Knoten als Leader festgelegt. Alle anderen ZooKeeper-Knoten werden als Follower festgelegt. Lesevorgänge können zwar von jedem ZooKeeper-Knoten aus ausgeführt werden, aber alle Schreibanfragen werden an den Leader weitergeleitet. Beispielsweise wird Edge ein neuer Message Processor hinzugefügt. Diese Informationen werden an den ZooKeeper-Leiter geschrieben. Alle Follower replizieren dann die Daten.

Bei der Edge-Installation legen Sie jeden ZooKeeper-Knoten als Voter oder Beobachter fest. Der Leader wird dann von allen ZooKeeper-Knoten ausgewählt. Die einzige Voraussetzung für die Wahl eines Leaders besteht darin, dass ein quorum funktionsfähiger ZooKeeper-Wählerknoten verfügbar sein muss. Ein Quorum bedeutet, dass mehr als die Hälfte aller ZooKeeper-Knoten in allen Rechenzentren funktionsfähig sind.

Wenn keine Beschlussfähigkeit für Wähler verfügbar ist, kann kein Leader gewählt werden. In diesem Szenario kann Zookeeper keine Anfragen verarbeiten. Das bedeutet, dass Sie keine Anfrage an den Edge Management Server senden, Management API-Anfragen verarbeiten oder sich bei der Edge-UI anmelden können, bis das Quorum wiederhergestellt ist.

Beispiel für die Installation eines Rechenzentrums:

  • Sie haben drei ZooKeeper-Knoten installiert
  • Alle ZooKeeper-Knoten sind Voter
  • Das Quorum besteht aus zwei funktionierenden Wählerknoten
  • Wenn nur ein Voterknoten verfügbar ist, kann das ZooKeeper-Ensemble nicht funktionieren

In einer Installation mit zwei Rechenzentren:

  • Sie haben drei ZooKeeper-Knoten pro Rechenzentrum installiert (insgesamt sechs Knoten)
  • Rechenzentrum 1 hat drei Wählerknoten
  • Rechenzentrum 2 hat zwei Wählerknoten und einen Beobachterknoten
  • Das Quorum basiert auf den fünf Voter in beiden Rechenzentren und besteht daher aus drei funktionierenden Wählerknoten.
  • Wenn nur zwei oder weniger Voterknoten verfügbar sind, kann das ZooKeeper-Ensemble nicht funktionieren

Knoten als Voter oder Beobachter hinzufügen

Aufgrund Ihrer 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 zusätzliche ZooKeeper-Knoten zu Edge hinzugefügt werden. Beim Hinzufügen von ZooKeeper-Knoten müssen Sie berücksichtigen, welche Art von Knoten hinzugefügt werden soll: Voter oder Beobachter.

Sie möchten sicherstellen, dass genügend Voterknoten vorhanden sind, damit das ZooKeeper-Ensemble weiterhin funktionieren kann, wenn ein oder mehrere Voterknoten ausfallen, sodass immer noch ein Quorum von Wählerknoten verfügbar ist. Durch das Hinzufügen von Voterknoten erhöhen Sie die Größe des Quorums und können es daher tolerieren, dass mehr Wählerknoten nicht verfügbar sind.

Das Hinzufügen zusätzlicher Voterknoten kann sich jedoch negativ auf die Schreibleistung auswirken, da für Schreibvorgänge das Quorum erforderlich ist, um sich auf die führende Variante zu einigen. Die Zeit, die benötigt wird, um die führende Variante zu ermitteln, hängt von der Anzahl der Voterknoten ab, die sich mit zunehmender Anzahl von Wählerknoten erhöht. Daher möchten Sie nicht alle Knoten als Votter festlegen.

Anstatt Voterknoten hinzuzufügen, können Sie Beobachterknoten hinzufügen. Durch das Hinzufügen von Beobachterknoten wird die Leseleistung des Systems insgesamt erhöht, ohne den Aufwand bei der Auswahl eines Leaders zu erhöhen, da Beobachterknoten nicht abstimmen und die Quorumgröße nicht beeinflussen. Wenn ein Beobachterknoten ausfällt, wirkt sich dies nicht auf die Fähigkeit des Ensembles aus, einen Leader auszuwählen. Der Verlust von Beobachtungsknoten kann jedoch die Leseleistung des ZooKeeper-Ensembles beeinträchtigen, da weniger Knoten für Dienstdatenanfragen verfügbar sind.

Apigee empfiehlt, dass Sie in einem einzelnen Rechenzentrum nicht mehr als fünf Wähler auswählen, unabhängig von der Anzahl der Beobachterknoten. In zwei Rechenzentren empfiehlt Apigee, dass Sie nicht mehr als neun Wähler haben (fünf in einem Rechenzentrum und vier im anderen). Anschließend können Sie so viele Beobachterknoten hinzufügen, wie für Ihre Systemanforderungen erforderlich.

Hinweise zur Wartung

ZooKeeper-Wartungen können für ein voll funktionsfähiges Ensemble ohne Ausfallzeiten durchgeführt werden, wenn sie jeweils nur auf einem Knoten ausgeführt werden. Indem Sie dafür sorgen, dass immer nur ein ZooKeeper-Knoten ausfällt, können Sie dafür sorgen, dass immer ein Quorum von Wählerknoten verfügbar ist, um einen Leader auszuwählen.

Wartung mehrerer Rechenzentren

Denken Sie bei der Arbeit mit mehreren Rechenzentren daran, dass das ZooKeeper-Ensemble nicht zwischen Rechenzentren unterscheidet. In ZooKeeper-Assemblies werden alle ZooKeeper-Knoten in allen Rechenzentren als ein Ensemble betrachtet.

Der Standort der Wählerknoten in einem bestimmten Rechenzentrum ist kein Faktor bei der Durchführung von Quorumberechnungen durch ZooKeeper. Einzelne Knoten können über Rechenzentren hinweg ausfallen, aber solange ein Quorum im gesamten Ensemble beibehalten wird, bleibt ZooKeeper funktionsfähig.

Auswirkungen auf die Wartung

Manchmal müssen Sie einen ZooKeeper-Knoten zu Wartungszwecken abschalten, entweder einen Voter- oder einen Beobachterknoten. Es kann beispielsweise sein, dass Sie die Edge-Version auf dem Knoten aktualisieren müssen, der Computer, auf dem ZooKeeper gehostet wird, ausfällt oder der Knoten aus einem anderen Grund, z. B. aufgrund eines Netzwerkfehlers, nicht mehr verfügbar ist.

Wenn der ausfallende Knoten ein Beobachterknoten ist, können Sie mit einer leichten Leistungsbeeinträchtigung des ZooKeeper-Ensembles rechnen, bis der Knoten wiederhergestellt ist. Wenn der Knoten ein Wählerknoten ist, kann dies die Lebensfähigkeit des ZooKeeper-Ensembles beeinträchtigen, da ein Knoten verloren geht, der am Leader-Wahlprozess beteiligt ist. Unabhängig davon, aus welchem Grund der Wählerknoten ausfällt, ist es wichtig, ein Quorum der verfügbaren Wählerknoten aufrechtzuerhalten.

Wartungsverfahren

Sie sollten erst dann Wartungsmaßnahmen in Betracht ziehen, wenn Sie sichergestellt haben, dass ein ZooKeeper-Ensemble funktionsfähig ist. Dies setzt voraus, dass Beobachterknoten funktionsfähig sind und während der Wartung genügend Wählerknoten 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 signifikante Auswirkungen auf die Leistung tolerieren. Das bedeutet, dass Sie Wartungen an jedem Knoten im Ensemble ausführen können, solange er sich jeweils nur auf einem Knoten befindet.

Verwenden Sie im Rahmen der Wartung das folgende Verfahren, um den Typ eines ZooKeeper-Knotens (Leader, Voter oder Beobachter) zu ermitteln:

  1. Wenn es nicht auf dem ZooKeeper-Knoten 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

    2181 ist dabei der Port ZooKeeper. Sie sollten eine Ausgabe im folgenden Formular sehen:

    Zookeeper version: 3.4.5-1392090,
    built 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 sollten Sie je nach Knotenkonfiguration observer, leader oder follower sehen (d. h. ein Voter, der nicht der Leader ist).

  3. Wiederholen Sie die Schritte 1 und 2 für jeden ZooKeeper-Knoten.

Zusammenfassung

Die beste Methode zur Wartung einer ZooKeeper-Ensembles besteht darin, sie Knoten für Knoten auszuführen. Denk daran:

  • Sie müssen während der Wartung ein Quorum von Wählerknoten aufrechterhalten, damit das ZooKeeper-Ensemble funktionsfähig bleibt
  • Das Abschalten eines Beobachterknotens hat keinen Einfluss auf das Quorum oder die Fähigkeit, eine Führungskraft zu wählen.
  • Das Quorum wird für alle ZooKeeper-Knoten in allen Rechenzentren berechnet
  • Mit der Wartung des nächsten Servers fortfahren, nachdem der vorherige Server in Betrieb ist
  • Verwenden Sie den Befehl nc, um den ZooKeeper-Knoten zu prüfen