Wartung von ZooKeeper

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 verwenden mindestens drei ZooKeeper-Knoten.

Verwenden Sie die Attribute ZK_HOSTS und ZK_CLIENT_HOSTS in der Edge-Konfigurationsdatei, um die ZooKeeper-Knoten anzugeben. Beispiel:

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 der Knoten 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 Rechenzentrum 2:

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

In den folgenden Abschnitten finden Sie weitere Informationen zu Leader-, Voter- und Beobachterknoten sowie eine Beschreibung der Überlegungen zum Hinzufügen von Voter- und Beobachterknoten.

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

Überlegungen zum Hinzufügen von Knoten als Wähler oder Beobachter

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 auch dann funktionieren kann, wenn mindestens ein Wählerknoten ausfällt, 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.

Zookeeper-Knoten entfernen

Es gibt viele Gründe, einen Zookeeper-Knoten zu entfernen, z. B. wenn ein Knoten beschädigt oder der falschen Umgebung hinzugefügt wurde.

In diesem Abschnitt wird beschrieben, wie Sie einen Zookeeper-Knoten entfernen, wenn der Knoten ausgefallen und nicht erreichbar ist.

So entfernen Sie einen Zookeeper-Knoten:

  1. Bearbeiten Sie die Konfigurationsdatei für die unbeaufsichtigte Konfiguration und entfernen Sie die IP-Adresse des Zookeeper-Knotens, den Sie entfernen möchten.
  2. Führen Sie den Befehl setup für Zookeeper noch einmal aus, um die verbleibenden ZooKeeper-Knoten neu zu konfigurieren:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. Starten Sie alle Zookeeper-Knoten neu:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. Konfigurieren Sie den Verwaltungsserver-Knoten neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Konfigurieren Sie alle Router neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. Konfigurieren Sie alle Nachrichtenprozessoren neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  7. Konfigurieren Sie alle Qpid-Knoten neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  8. Alle Postgres-Knoten neu konfigurieren:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

Hinweise zur Wartung

Sie können ZooKeeper-Wartungen für ein voll funktionsfähiges Ensemble ohne Ausfallzeiten durchführen, wenn Sie die Wartung jeweils nur auf einem Knoten ausgeführt haben. 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 aufrechterhalten 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

Führen Sie nur dann Wartungsvorgänge durch, 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 wesentliche 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, wobei 2181 der ZooKeeper-Port ist:
    echo stat | nc localhost 2181

    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, einen Leader zu wählen.
  • Das Quorum wird für alle ZooKeeper-Knoten in allen Rechenzentren berechnet.
  • Fahren Sie mit der Wartung des nächsten Servers fort, sobald der vorherige Server in Betrieb ist.
  • Verwenden Sie den Befehl nc, um den ZooKeeper-Knoten zu prüfen.