ZooKeeper-Ensembles sind so konzipiert, dass sie funktionieren, ohne Datenverlust, selbst wenn einem oder mehreren ZooKeeper-Knoten. Diese Ausfallsicherheit kann effektiv genutzt werden, um die Wartung ZooKeeper-Knoten ohne Systemausfallzeit.
Über ZooKeeper und Edge
In Edge enthalten ZooKeeper-Knoten Konfigurationsdaten über den Speicherort und die Konfiguration von die verschiedenen Edge-Komponenten und benachrichtigt die verschiedenen Komponenten über Konfigurationsänderungen. Alle Unterstützte 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 zur Angabe der ZooKeeper-Knoten. 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 die IP-Adressen der ZooKeeper-Knoten an, die von diesem verwendet werden Nur Rechenzentrum. Die IP-Adressen müssen auf allen ZooKeeper-Knoten in derselben Reihenfolge aufgelistet werden: im Rechenzentrum.In einer einzelnen Rechenzentrumsinstallation sind dies dieselben Knoten, wie von ZK_HOSTS angegeben. In einer Umgebungen mit mehreren Rechenzentren sollte die Edge-Konfigurationsdatei für jedes Rechenzentrum nur die ZooKeeper-Knoten für dieses Rechenzentrum.
Standardmäßig werden alle ZooKeeper-Knoten als Voter-Knoten festgelegt. Das bedeutet, dass die Knoten
alle an der Wahl des ZooKeeper-Leaders teilnehmen. Sie können den
:observer
-Modifikator mit ZK_HOSTS
, um anzuzeigen, dass
ist der Knoten ein Beobachter-Knoten und kein Voter. Ein Beobachterknoten ist nicht an
die Wahl des Leaders.
In der Regel geben Sie den Modifikator :observer
an, wenn Sie mehrere Edge-Daten 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, ZooKeeper auf Knoten 9 im Rechenzentrum 2 ist die
Beobachter:
Anschließend verwenden Sie 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 Rechenzentrum 2:
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"
Die folgenden Abschnitte enthalten weitere Details zu Leader, Wähler und Beobachterknoten und die Ü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 werden, werden alle Schreibanfragen an den Leader weitergeleitet. Beispiel: Eine neue Nachricht Prozessor wird zu Edge hinzugefügt. Diese Informationen werden an den ZooKeeper-Leader gesendet. Alle Follower und replizieren Sie die Daten dann.
Zum Zeitpunkt der Edge-Installation legen Sie jeden ZooKeeper-Knoten als Voter oder Beobachter fest. Die Der Leader wird dann von allen ZooKeeper-Knoten des Voters gewählt. Die einzige Voraussetzung für die Wahl eines Leader ist, dass ein Quorum funktionierender ZooKeeper-Voterknoten verfügbar sein muss. A Quorum bedeutet, dass mehr als die Hälfte aller ZooKeeper-Knoten der Wahl in allen Rechenzentren funktionsfähig sein.
Wenn kein Quorum von Wählerknoten verfügbar ist, kann kein Leader gewählt werden. In diesem Szenario Der Zookeeper kann keine Anfragen bedienen. Das bedeutet, dass Sie keine Anfrage an das Edge-Management Server verarbeiten, Management API-Anfragen verarbeiten oder sich bei der Edge-Benutzeroberfläche anmelden, bis das Quorum wiederhergestellt ist.
Zum Beispiel in einer einzelnen Rechenzentrumsinstallation:
- Sie haben drei ZooKeeper-Knoten installiert
- Alle ZooKeeper-Knoten sind Wähler
- Das Quorum besteht aus zwei funktionierenden Wählerknoten.
- Wenn nur ein Wählerknoten verfügbar ist, funktioniert das ZooKeeper-Ensemble nicht.
In einer Installation mit zwei Rechenzentren:
- Sie haben drei ZooKeeper-Knoten pro Rechenzentrum installiert, also insgesamt sechs Knoten.
- Rechenzentrum 1 hat drei Voterknoten
- Rechenzentrum 2 hat zwei Wählerknoten und einen Beobachterknoten
- Die Beschlussfähigkeit basiert auf den fünf Wählern in beiden Rechenzentren und ist daher drei funktionierende Wählerknoten
- Wenn nur zwei oder weniger Wählerknoten verfügbar sind, kann das ZooKeeper-Ensemble nicht Funktion
Überlegungen zum Hinzufügen von Knoten als Wähler oder Beobachter
Aufgrund Ihrer Systemanforderungen müssen Sie möglicherweise zusätzliche ZooKeeper-Knoten zu Ihrem Edge hinzufügen. Installation. Dokumentation zum Hinzufügen von ZooKeeper-Knoten beschreibt, wie Sie in Edge zusätzliche ZooKeeper-Knoten hinzufügen. Beim Hinzufügen von ZooKeeper-Knoten müssen Sie berücksichtigen Sie die Art der Knoten, die hinzugefügt werden sollen: Wähler oder Beobachter.
Achten Sie darauf, dass genügend Wählerknoten vorhanden sind, damit bei Ausfall eines oder mehrerer Wählerknoten kann das ZooKeeper-Ensemble weiterhin funktionieren, was bedeutet, dass noch ein Quorum von Wählerknoten vorhanden ist verfügbar. Durch das Hinzufügen von Wählerknoten erhöhen Sie das Quorum, sodass Sie dass mehr Wählerknoten ausgefallen sind.
Das Hinzufügen zusätzlicher Voterknoten kann sich jedoch negativ auf die Schreibleistung auswirken, da Operationen erfordern, dass das Quorum sich auf die Leader einigen muss. Die Zeit, die benötigt wird, um die beste Variante zu ermitteln basiert auf der Anzahl der Voterknoten, die zunimmt, je mehr Wählerknoten hinzugefügt werden. Daher möchten Sie nicht, dass alle Knoten zu wählen.
Anstatt Voterknoten hinzuzufügen, können Sie Beobachterknoten hinzufügen. Das Hinzufügen von Beobachterknoten erhöht die Leseleistung des gesamten Systems, ohne den Mehraufwand für die Auswahl einer führenden Person zu erhöhen, Beobachterknoten nicht abstimmen und haben keine Auswirkung auf die Quorumgröße. Wenn also ein Beobachterknoten hat das keinen Einfluss auf die Fähigkeit des Ensembles, eine Führungskraft zu wählen. Den Beobachter verlieren, Knoten können zu einer Verschlechterung der Leseleistung des ZooKeeper-Ensembles führen, da es weniger Knoten für Dienstdatenanfragen verfügbar.
In einem einzelnen Rechenzentrum empfiehlt Apigee, unabhängig davon nicht mehr als fünf Wähler zu haben. Anzahl der Beobachterknoten. In zwei Rechenzentren empfiehlt Apigee, dass Sie keine weiteren Rechenzentren als neun Wähler (fünf in einem Rechenzentrum und vier in dem anderen). Anschließend können Sie beliebig viele je nach Systemanforderungen.
Zookeeper-Knoten entfernen
Es gibt viele Gründe zum Entfernen eines Zookeeper-Knotens. z. B. hat 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 ist erreichbar sein.
So entfernen Sie einen Zookeeper-Knoten:
- Bearbeiten Sie Ihre Datei für die stille Konfiguration und entfernen Sie die IP-Adresse des Zookeeper-Knotens, den Sie die Sie entfernen möchten.
- Führen Sie den Befehl
setup
für Zookeeper noch einmal aus, um den verbleibenden ZooKeeper neu zu konfigurieren. Knoten:/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
- Starten Sie alle Zookeeper-Knoten neu:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
- Konfigurieren Sie den Knoten des Verwaltungsservers 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
- 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
- Konfigurieren Sie alle Message Processors 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
- Alle Qpid-Knoten neu konfigurieren:
/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
- 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
Hinweise zur Wartung
Sie können ZooKeeper-Wartung in einem voll funktionsfähigen Ensemble ohne Ausfallzeiten durchführen, wenn Sie auf jeweils einem Knoten ausgeführt. Indem Sie dafür sorgen, dass nur ein ZooKeeper-Knoten können Sie sicherstellen, dass immer ein Quorum von Wählerknoten verfügbar ist, Leader.
Wartung in mehrere Rechenzentren
Wenn Sie mit mehreren Rechenzentren arbeiten, denken Sie daran, dass das ZooKeeper-Ensemble keine zwischen Rechenzentren unterscheiden. ZooKeeper-Assemblies zeigen alle ZooKeeper-Knoten in allen Rechenzentren als ein Ensemble
Der Standort der Wählerknoten in einem bestimmten Rechenzentrum spielt bei der Durchführung von ZooKeeper keine Rolle. Quorumberechnungen. Einzelne Knoten können über mehrere Rechenzentren hinweg ausfallen, solange ein Quorum im gesamten Ensemble erhalten bleibt, funktioniert ZooKeeper weiterhin.
Auswirkungen auf die Wartung
Gelegentlich müssen Sie einen ZooKeeper-Knoten zur Wartung abschalten, entweder als Wähler oder einen Beobachterknoten. Beispielsweise müssen Sie möglicherweise die Edge-Version auf dem Knoten aktualisieren, könnte die Maschine, die ZooKeeper hostet, fehlschlagen oder der Knoten für andere Netzwerkfehler verursacht.
Wenn es sich bei dem ausgefallenen Knoten um einen Beobachterknoten handelt, die Leistung des ZooKeeper-Ensembles, bis der Knoten wiederhergestellt ist. Wenn der Knoten ein Wähler ist Knoten kann die Funktionsfähigkeit des ZooKeeper-Ensembles durch den Verlust eines Knotens beeinträchtigt werden, der am Prozess zur Wahl des Leaders teilnimmt. Unabhängig davon, aus welchem Grund ist es wichtig, ein Quorum der verfügbaren Wählerknoten aufrechtzuerhalten.
Wartungsverfahren
Wartungsmaßnahmen erst durchführen, nachdem sichergestellt wurde, dass ein ZooKeeper funktioniert. Dabei wird vorausgesetzt, dass Beobachterknoten funktionieren Wählerknoten während der Wartung verfügbar sind, um ein Quorum aufrechtzuerhalten.
Wenn diese Bedingungen erfüllt sind, kann ein ZooKeeper-Ensemble beliebiger Größe die ohne Datenverlust oder erhebliche Auswirkungen auf die Leistung. Dieses bedeutet, dass Sie an jedem Knoten im Ensemble Wartungen durchführen können, solange er sich auf einem Knoten befindet um jeweils einen Knoten zu erstellen.
Gehen Sie bei der Wartung wie folgt vor, um den Typ eines ZooKeeper-Knoten (Anführer, Wähler oder Beobachter):
- Installieren Sie
nc
, wenn es nicht auf dem ZooKeeper-Knoten installiert ist:sudo yum install nc
- Führen Sie den folgenden
nc
-Befehl auf dem Knoten aus, wobei 2181 der ZooKeeper-Port ist:echo stat | nc localhost 2181
Die Ausgabe sollte im Formular angezeigt werden:
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 sollteobserver
stehen.leader
oderfollower
(d. h. ein Wähler, der nicht der Führende ist) abhängig von der Knotenkonfiguration. - Wiederholen Sie die Schritte 1 und 2 auf jedem ZooKeeper-Knoten.
Zusammenfassung
Die beste Möglichkeit zur Wartung eines ZooKeeper-Ensembles besteht darin, die Wartung für einen Knoten pro Knoten . Denk daran:
- Sie müssen während der Wartung ein Quorum von Wählerknoten aufrechterhalten, damit ZooKeeper bleibt funktionsfähig.
- Das Ausschalten eines Beobachterknotens hat keinen Einfluss auf das Quorum oder die Fähigkeit, einen Leader auszuwä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.