Wartung von ZooKeeper

ZooKeeper-Ensembles sind so konzipiert, dass sie auch dann funktionsfähig bleiben und keine Daten verloren gehen, wenn ein oder mehrere ZooKeeper-Knoten ausfallen. Diese Resilienz kann effektiv genutzt werden, um Wartungsarbeiten an ZooKeeper-Knoten ohne Systemausfallzeiten durchzuführen.

ZooKeeper und Edge

In Edge enthalten ZooKeeper-Knoten Konfigurationsdaten zum Standort und zur Konfiguration der verschiedenen Edge-Komponenten. Außerdem werden die verschiedenen Komponenten über Konfigurationsänderungen informiert. Alle unterstützten Edge-Topologien für ein Produktionssystem verwenden mindestens drei ZooKeeper Knoten.

können Sie weitere ZooKeeper-Knoten hinzufügen.

Geben Sie die ZK_HOSTS und ZK_CLIENT_HOSTS Eigenschaften in der Edge-Konfigurationsdatei an, 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 aufgeführt sein.

    In einer Umgebung mit mehreren Rechenzentren müssen alle ZooKeeper-Knoten aus allen Rechenzentren aufgeführt sein.

  • 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 in dem Rechenzentrum in derselben Reihenfolge aufgeführt sein.

    Bei einer Installation mit einem einzelnen Rechenzentrum sind dies dieselben Knoten, die mit ZK_HOSTS angegeben wurden. 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 Voter-Knoten festgelegt. Das bedeutet, dass alle Knoten an der Wahl des ZooKeeper Leaders teilnehmen. Sie können den :observer Modifikator mit ZK_HOSTS verwenden, um anzugeben, dass der Knoten ein Observer-Knoten und kein Voter ist. Ein Observer-Knoten nimmt nicht an der Wahl des Leaders teil.

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

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

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 Observer-Knoten sowie zu den Überlegungen beim Hinzufügen von Voter- und Observer-Knoten.

Leader, Follower, Voter und Observer

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 von jedem ZooKeeper-Knoten aus erfolgen, alle Schreibanfragen werden jedoch an den Leader weitergeleitet. Beispiel: Ein neuer Message Processor wird zu Edge hinzugefügt. Diese Informationen werden in den ZooKeeper-Leader geschrieben. Alle Follower replizieren dann die Daten.

Bei der Edge-Installation legen Sie jeden ZooKeeper-Knoten als Voter oder als Observer fest. Der Leader wird dann von allen Voter-ZooKeeper-Knoten gewählt. Voraussetzung für die Wahl eines Leaders ist, dass ein Quorum von funktionierenden ZooKeeper-Voter-Knoten verfügbar sein muss. Ein Quorum bedeutet, dass mehr als die Hälfte aller Voter-ZooKeeper-Knoten in allen Rechenzentren funktionsfähig sind.

Wenn kein Quorum von Voter-Knoten verfügbar ist, kann kein Leader gewählt werden. In diesem Fall kann ZooKeeper keine Anfragen verarbeiten. Das bedeutet, dass Sie keine Anfrage an den Edge-Verwaltungsserver senden, keine API-Anfragen verarbeiten und sich erst dann in der neuen Edge-UI anmelden können, wenn das Quorum wiederhergestellt ist.

Beispiel: Bei einer Installation mit einem einzelnen Rechenzentrum:

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

Bei einer Installation mit zwei Rechenzentren:

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

Überlegungen zum Hinzufügen von Knoten als Voter oder Observer

Je nach Systemanforderungen müssen Sie möglicherweise zusätzliche ZooKeeper-Knoten zu Ihrer Edge Installation 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 hinzuzufügenden Knoten berücksichtigen: Voter oder Observer.

Sie sollten darauf achten, dass genügend Voter-Knoten vorhanden sind, damit das ZooKeeper-Ensemble auch dann funktioniert, wenn ein oder mehrere Voter-Knoten ausfallen . Das bedeutet, dass immer ein Quorum von Voter-Knoten verfügbar sein muss. Durch das Hinzufügen von Voter-Knoten erhöhen Sie die Größe des Quorums und können daher mehr Voter-Knoten ausfallen lassen.

Das Hinzufügen zusätzlicher Voter-Knoten kann sich jedoch negativ auf die Schreibleistung auswirken, da für Schreib vorgänge ein Quorum erforderlich ist, um sich auf den Leader zu einigen. Die Zeit, die zum Bestimmen des Leaders benötigt wird , hängt von der Anzahl der Voter-Knoten ab. Sie steigt mit der Anzahl der Voter-Knoten. Daher sollten Sie nicht alle Knoten als Voter festlegen.

Anstatt Voter-Knoten hinzuzufügen, können Sie Observer-Knoten hinzufügen. Das Hinzufügen von Observer-Knoten erhöht die allgemeine Lesegeschwindigkeit des Systems, ohne den Aufwand für die Wahl eines Leaders zu erhöhen, da Observer-Knoten nicht abstimmen und die Größe des Quorums nicht beeinflussen. Wenn ein Observer-Knoten ausfällt, hat das daher keine Auswirkungen auf die Fähigkeit des Ensembles, einen Leader zu wählen. Der Ausfall von Observer Knoten kann jedoch zu einer Verringerung der Lesegeschwindigkeit des ZooKeeper-Ensembles führen, da weniger Knoten zur Verarbeitung von Datenanfragen verfügbar sind.

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

ZooKeeper-Knoten entfernen

Es gibt viele Gründe, warum Sie einen ZooKeeper-Knoten entfernen möchten. Beispielsweise ist ein Knoten beschädigt oder wurde der falschen Umgebung hinzugefügt.

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 Installation 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 Verwaltungsserverknoten 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 Message Processor 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. Konfigurieren Sie alle Postgres-Knoten neu:
    /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

Überlegungen zur Wartung

Sie können die ZooKeeper-Wartung an einem voll funktionsfähigen Ensemble ohne Ausfallzeiten durchführen, wenn Sie sie jeweils an einem einzelnen Knoten ausführen. Wenn Sie dafür sorgen, dass immer nur ein ZooKeeper-Knoten ausfällt, ist immer ein Quorum von Voter-Knoten verfügbar, um einen Leader zu wählen.

Wartung in mehreren Rechenzentren

Wenn Sie mit mehreren Rechenzentren arbeiten, beachten Sie, dass das ZooKeeper-Ensemble nicht zwischen Rechenzentren unterscheidet. ZooKeeper-Ensembles betrachten alle ZooKeeper-Knoten in allen Rechenzentren als ein Ensemble.

Der Standort der Voter-Knoten in einem bestimmten Rechenzentrum ist kein Faktor, wenn ZooKeeper Quorum-Berechnungen durchführt. Einzelne Knoten können in allen Rechenzentren ausfallen. Solange jedoch ein Quorum im gesamten Ensemble erhalten bleibt, bleibt ZooKeeper funktionsfähig.

Auswirkungen der Wartung

Zu verschiedenen Zeiten müssen Sie einen ZooKeeper-Knoten zur Wartung herunterfahren, entweder einen Voter Knoten oder einen Observer-Knoten. Beispielsweise müssen Sie möglicherweise die Edge-Version auf dem Knoten aktualisieren, die Maschine, auf der ZooKeeper gehostet wird, fällt aus oder der Knoten ist aus einem anderen Grund nicht verfügbar, z. B. aufgrund eines Netzwerkfehlers.

Wenn der ausgefallene Knoten ein Observer-Knoten ist, ist mit einer leichten Verringerung der Leistung des ZooKeeper-Ensembles zu rechnen, bis der Knoten wiederhergestellt ist. Wenn der Knoten ein Voter Knoten ist, kann dies aufgrund des Ausfalls eines Knotens, der am Wahlprozess des Leaders teilnimmt, Auswirkungen auf die Lebensfähigkeit des ZooKeeper-Ensembles haben. Unabhängig vom Grund für den Ausfall des Voter-Knotens ist es wichtig, ein Quorum von verfügbaren Voter-Knoten aufrechtzuerhalten.

Wartungsverfahren

Führen Sie Wartungsverfahren erst aus, wenn ein ZooKeeper Ensemble funktionsfähig ist. Dabei wird davon ausgegangen, dass die Observer-Knoten funktionsfähig sind und dass während der Wartung genügend Voter-Knoten verfügbar sind, um ein Quorum aufrechtzuerhalten.

Wenn diese Bedingungen erfüllt sind, kann ein ZooKeeper-Ensemble beliebiger Größe den Ausfall eines einzelnen Knotens jederzeit ohne Datenverlust oder nennenswerte Auswirkungen auf die Leistung tolerieren. Das bedeutet, dass Sie Wartungsarbeiten an jedem Knoten im Ensemble durchführen können, solange dies jeweils nur an einem Knoten erfolgt.

Führen Sie im Rahmen der Wartung die folgenden Schritte aus, um den Typ eines ZooKeeper-Knotens zu bestimmen (Leader, Voter oder Observer):

  1. Installieren Sie nc, falls es nicht auf dem ZooKeeper-Knoten installiert ist:
    sudo yum install nc
  2. Führen Sie den folgenden nc-Befehl auf dem Knoten aus. Dabei ist 2181 der ZooKeeper-Port:
    echo stat | nc localhost 2181

    Die Ausgabe sollte so aussehen:

    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 sollte je nach Knotenkonfiguration observer, leader, oder follower (ein Voter, der nicht der Leader ist) angezeigt werden.

  3. Wiederholen Sie die Schritte 1 und 2 auf jedem ZooKeeper-Knoten.

Zusammenfassung

Die beste Methode zur Wartung eines ZooKeeper-Ensembles besteht darin, die Wartung jeweils an einem einzelnen Knoten zu einem Zeitpunkt durchzuführen. Remember:

  • Während der Wartung muss ein Quorum von Voter-Knoten aufrechterhalten werden, damit das ZooKeeper Ensemble funktionsfähig bleibt.
  • Das Herunterfahren eines Observer-Knotens hat keine Auswirkungen 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, nachdem der vorherige Server betriebsbereit ist.
  • Verwenden Sie den Befehl nc, um den ZooKeeper-Knoten zu prüfen.