Der Autor hatWikimedia Foundation Inc. ausgewählt, um eine Spende im Rahmen desWrite for DOnations-Programms zu erhalten.
Einführung
Apache ZooKeeper ist Open-Source-Software, die eine belastbare und hochzuverlässige verteilte Koordination ermöglicht. Es wird häufig in verteilten Systemen zum Verwalten von Konfigurationsinformationen, Benennungsdiensten, verteilten Synchronisationen, Quorum und Status verwendet. Darüber hinaus verlassen sich verteilte Systeme auf ZooKeeper, um Konsens, Führungswahlen und Gruppenmanagement zu implementieren.
In diesem Handbuch installieren und konfigurieren Sie Apache ZooKeeper 3.4.13 unter Ubuntu 18.04. Um Ausfallsicherheit und hohe Verfügbarkeit zu erreichen, soll ZooKeeper über eine Reihe von Hosts repliziert werden, die als Ensemble bezeichnet werden. Zunächst erstellen Sie eine eigenständige Installation eines ZooKeeper-Servers mit einem Knoten und fügen dann Details zum Einrichten eines Clusters mit mehreren Knoten hinzu. Die eigenständige Installation ist in Entwicklungs- und Testumgebungen nützlich, ein Cluster ist jedoch die praktischste Lösung für Produktionsumgebungen.
Voraussetzungen
Bevor Sie mit dieser Installations- und Konfigurationsanleitung beginnen, benötigen Sie Folgendes:
-
Für die eigenständige Installation ist ein Ubuntu 18.04-Server mit mindestens 4 GB RAM erforderlich, der durch Befolgen vonthe Ubuntu 18.04 initial server setup guide eingerichtet wurde, einschließlich eines Nicht-Root-Benutzers mit Sudo-Berechtigungen und einer Firewall. Für den Cluster mit mehreren Knoten benötigen Sie zwei zusätzliche Server, die in den gleichen Schritten eingerichtet werden.
-
OpenJDK 8 ist auf Ihrem Server installiert, da ZooKeeper Java zum Ausführen benötigt. Befolgen Sie dazu den Schritt „Spezifische Versionen von OpenJDK installieren“ im HandbuchHow To Install Java with
apt
on Ubuntu 18.04.
Da ZooKeeper die Daten im Speicher hält, um einen hohen Durchsatz und eine geringe Latenz zu erzielen, funktionieren Produktionssysteme am besten mit 8 GB RAM. Geringere RAM-Mengen können zu JVM-Auslagerungen führen, die zu einer Latenz des ZooKeeper-Servers führen können. Eine hohe Latenz des ZooKeeper-Servers kann zu Problemen führen, z. B. zu Zeitüberschreitungen bei Clientsitzungen, die sich nachteilig auf die Systemfunktionalität auswirken.
[[Schritt-1 - Erstellen eines Benutzers für den Tierpfleger]] == Schritt 1 - Erstellen eines Benutzers für ZooKeeper
Ein dedizierter Benutzer sollte Dienste ausführen, die Anforderungen über ein Netzwerk verarbeiten und Ressourcen verbrauchen. Diese Vorgehensweise schafft Trennung und Kontrolle, die die Sicherheit und Verwaltbarkeit Ihrer Umgebung verbessern. In diesem Schritt erstellen Sie einen Sudo-Benutzer ohne Rootberechtigung mit dem Namenzk in diesem Lernprogramm, um den ZooKeeper-Dienst auszuführen.
Melden Sie sich zunächst als Benutzer ohne Rootberechtigung an, den Sie in den Voraussetzungen erstellt haben.
ssh sammy@your_server_ip
Erstellen Sie den Benutzer, der den ZooKeeper-Dienst ausführen soll:
sudo useradd zk -m
Wenn Sie das Flag-m
an den Befehluseradd
übergeben, wird ein Basisverzeichnis für diesen Benutzer erstellt. Das Ausgangsverzeichnis fürzk ist standardmäßig/home/zk
.
Legen Siebash
als Standard-Shell für den Benutzer vonzkfest:
sudo usermod --shell /bin/bash zk
Legen Sie ein Passwort für diesen Benutzer fest:
sudo passwd zk
Als Nächstes fügen Sie den Benutzerzkzur Gruppesudohinzu, damit Befehle in einem privilegierten Modus ausgeführt werden können:
usermod -aG sudo zk
Aus Sicherheitsgründen wird empfohlen, SSH-Zugriff so wenigen Benutzern wie möglich zu gewähren. Wenn Sie sich remote alssammy anmelden und dann mitsu
zum gewünschten Benutzer wechseln, wird eine gewisse Trennung zwischen den Anmeldeinformationen für den Zugriff auf das System und den ausgeführten Prozessen hergestellt. In diesem Schritt deaktivieren Sie den SSH-Zugriff sowohl für Ihrenzkals auch für IhrenrootBenutzer.
Öffnen Sie die Dateisshd_config
:
sudo nano /etc/ssh/sshd_config
Suchen Sie die ZeilePermitRootLogin
und setzen Sie den Wert aufno
, um den SSH-Zugriff für den Benutzer vonrootzu deaktivieren:
/etc/ssh/sshd_config
PermitRootLogin no
Fügen Sie unter dem WertPermitRootLogin
eine ZeileDenyUsers
hinzu und legen Sie den Wert als jeden Benutzer fest, für den der SSH-Zugriff deaktiviert sein soll:
/etc/ssh/sshd_config
DenyUsers zk
Speichern und beenden Sie die Datei und starten Sie den SSH-Daemon neu, um die Änderungen zu aktivieren.
sudo systemctl restart sshd
Wechseln Sie zum Benutzer vonzk:
su -l zk
Das Flag-l
ruft nach dem Benutzerwechsel eine Anmeldeshell auf. Eine Login-Shell setzt Umgebungsvariablen zurück und bietet dem Benutzer einen sauberen Start.
Geben Sie an der Eingabeaufforderung das Kennwort ein, um den Benutzer zu authentifizieren.
Nachdem Sie den Benutzerzkerstellt, konfiguriert und angemeldet haben, erstellen Sie ein Verzeichnis zum Speichern Ihrer ZooKeeper-Daten.
[[Schritt-2 - Erstellen eines Datenverzeichnisses für den Tierpfleger]] == Schritt 2 - Erstellen eines Datenverzeichnisses für ZooKeeper
ZooKeeper speichert alle Konfigurations- und Statusdaten auf der Festplatte, sodass sie einen Neustart überstehen können. In diesem Schritt erstellen Sie ein Datenverzeichnis, das ZooKeeper zum Lesen und Schreiben von Daten verwendet. Sie können das Datenverzeichnis im lokalen Dateisystem oder auf einem Remotespeicherlaufwerk erstellen. In diesem Lernprogramm wird das Datenverzeichnis in Ihrem lokalen Dateisystem erstellt.
Erstellen Sie ein Verzeichnis für ZooKeeper:
sudo mkdir -p /data/zookeeper
Gewähren Sie dem Verzeichnis den Benutzereigentum Ihreszk:
sudo chown zk:zk /data/zookeeper
chown
ändert den Besitz und die Gruppe des Verzeichnisses/data/zookeeper
, sodass der Benutzerzk, der zur Gruppezk gehört, das Datenverzeichnis besitzt.
Sie haben das Datenverzeichnis erfolgreich angelegt und konfiguriert. Wenn Sie mit der Konfiguration von ZooKeeper fortfahren, geben Sie diesen Pfad als Datenverzeichnis an, in dem ZooKeeper seine Dateien speichert.
[[Schritt 3 - Herunterladen und Extrahieren der Zookeeper-Binärdateien] == Schritt 3 - Herunterladen und Extrahieren der ZooKeeper-Binärdateien
In diesem Schritt laden Sie die ZooKeeper-Binärdateien manuell herunter und extrahieren sie in das Verzeichnis/opt
. Sie können das Advanced Packaging Toolapt
verwenden, um ZooKeeper herunterzuladen. Möglicherweise wird jedoch eine ältere Version mit anderen Funktionen installiert. Wenn Sie ZooKeeper manuell installieren, haben Sie die volle Kontrolle darüber, welche Version Sie verwenden möchten.
Da Sie diese Dateien manuell herunterladen, wechseln Sie zunächst in das Verzeichnis/opt
:
cd /opt
Navigieren Sie von Ihrem lokalen Computer zuApache download page. Auf dieser Seite finden Sie automatisch den Spiegel, der am schnellsten von Ihnen heruntergeladen werden kann. Klicken Sie auf den Link zur vorgeschlagenen Spiegelseite, scrollen Sie nach unten und klicken Sie aufzookeeper/, um die verfügbaren Versionen anzuzeigen. Wählen Sie die Version von ZooKeeper aus, die Sie installieren möchten. Dieses Tutorial konzentriert sich auf die Verwendung von3.4.13. Wenn Sie die Version ausgewählt haben, klicken Sie mit der rechten Maustaste auf die Binärdatei, die mit.tar.gz
endet, und kopieren Sie die Linkadresse.
Verwenden Sie auf Ihrem Server den Befehlwget
zusammen mit dem kopierten Link, um die ZooKeeper-Binärdateien herunterzuladen:
sudo wget http://apache.osuosl.org/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
Extrahieren Sie die Binärdateien aus dem komprimierten Archiv:
sudo tar -xvf zookeeper-3.4.13.tar.gz
Die Erweiterung.tar.gz
stellt eine Kombination aus TAR-Verpackung und anschließender GNU-Zip-Komprimierung (gzip) dar. Sie werden feststellen, dass Sie das Flag-xvf
an den Befehl zum Extrahieren des Archivs übergeben haben. Das Flagx
steht für extrahieren,v
aktiviert den ausführlichen Modus, um den Extraktionsfortschritt anzuzeigen, undf
ermöglicht die Angabe der Eingabe, in unserem Fallzookeeper-3.4.13.tar.gz
, im Gegensatz zu STDIN.
Geben Sie als Nächstes den Benutzerbesitz vonzkfür die extrahierten Binärdateien an, damit die ausführbaren Dateien ausgeführt werden können. Sie können den Eigentümer folgendermaßen ändern:
sudo chown zk:zk -R zookeeper-3.4.13
Als Nächstes konfigurieren Sie einen symbolischen Link, um sicherzustellen, dass Ihr ZooKeeper-Verzeichnis für alle Updates relevant bleibt. Sie können auch symbolische Links verwenden, um Verzeichnisnamen zu kürzen. Dies kann die Zeit verkürzen, die zum Einrichten Ihrer Konfigurationsdateien erforderlich ist.
Erstellen Sie eine symbolische Verknüpfung mit dem Befehlln
.
sudo ln -s zookeeper-3.4.13 zookeeper
Ändern Sie den Besitz dieses Links inzk:zk
. Beachten Sie, dass Sie ein-h
-Flag übergeben haben, um den Besitz des Links selbst zu ändern. Wenn Sie-h
nicht angeben, ändert sich der Besitz des Ziels des Links, was Sie im vorherigen Schritt explizit getan haben.
sudo chown -h zk:zk zookeeper
Mit den erstellten symbolischen Links bleiben Ihre Verzeichnispfade in den Konfigurationen bei zukünftigen Upgrades relevant und unverändert. Sie können jetzt ZooKeeper konfigurieren.
[[Schritt-4 - Konfigurieren von Zookeeper]] == Schritt 4 - Konfigurieren von ZooKeeper
Nachdem Sie Ihre Umgebung eingerichtet haben, können Sie ZooKeeper konfigurieren.
Die Konfigurationsdatei befindet sich im Verzeichnis/opt/zookeeper/conf
. Dieses Verzeichnis enthält eine Beispielkonfigurationsdatei, die mit der ZooKeeper-Distribution geliefert wird. Diese Beispieldatei mit dem Namenzoo_sample.cfg
enthält die häufigsten Konfigurationsparameterdefinitionen und Beispielwerte für diese Parameter. Einige der allgemeinen Parameter lauten wie folgt:
-
tickTime
: Legt die Länge eines Ticks in Millisekunden fest. Ein Häkchen ist eine Zeiteinheit, mit der ZooKeeper die Länge zwischen Herzschlägen misst. Das Mindestsitzungszeitlimit beträgt das Doppelte der tickTime. -
dataDir
: Gibt das Verzeichnis an, in dem Snapshots der In-Memory-Datenbank und des Transaktionsprotokolls für Aktualisierungen gespeichert werden. Sie können ein separates Verzeichnis für Transaktionsprotokolle angeben. -
clientPort
: Der Port, über den auf Clientverbindungen gewartet wird. -
maxClientCnxns
: Begrenzt die maximale Anzahl von Clientverbindungen.
Erstellen Sie eine Konfigurationsdatei mit dem Namenzoo.cfg
bei/opt/zookeeper/conf
. Sie können eine Datei mitnano
oder Ihrem bevorzugten Editor erstellen und öffnen:
nano /opt/zookeeper/conf/zoo.cfg
Fügen Sie dieser Datei die folgenden Eigenschaften und Werte hinzu:
/opt/zookeeper/conf/zoo.cfg
tickTime=2000
dataDir=/data/zookeeper
clientPort=2181
maxClientCnxns=60
EintickTime
von 2000 Millisekunden ist das vorgeschlagene Intervall zwischen Herzschlägen. Ein kürzeres Intervall kann zu einem System-Overhead mit begrenzten Vorteilen führen. Der ParameterdataDir
zeigt auf den Pfad, der durch den symbolischen Link definiert ist, den Sie im vorherigen Abschnitt erstellt haben. Herkömmlicherweise verwendet ZooKeeper Port2181
, um auf Clientverbindungen zu warten. In den meisten Situationen sind 60 zulässige Clientverbindungen ausreichend für die Entwicklung und das Testen.
Speichern Sie die Datei und beenden Sie den Editor.
Sie haben ZooKeeper konfiguriert und können den Server starten.
[[Schritt 5 - Starten des Zookeepers und Testen der Standalone-Installation]] == Schritt 5 - Starten von ZooKeeper und Testen der Standalone-Installation
Sie haben alle Komponenten konfiguriert, die zum Ausführen von ZooKeeper erforderlich sind. In diesem Schritt starten Sie den ZooKeeper-Dienst und testen Ihre Konfiguration, indem Sie lokal eine Verbindung zum Dienst herstellen.
Navigieren Sie zurück zum Verzeichnis/opt/zookeeper
.
cd /opt/zookeeper
Starten Sie ZooKeeper mit dem BefehlzkServer.sh
.
bin/zkServer.sh start
Auf Ihrer Standardausgabe wird Folgendes angezeigt:
OutputZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
Stellen Sie mit dem folgenden Befehl eine Verbindung zum lokalen ZooKeeper-Server her:
bin/zkCli.sh -server 127.0.0.1:2181
Sie erhalten eine Eingabeaufforderung mit der BezeichnungCONNECTED
. Dies bestätigt, dass Sie eine erfolgreiche lokale, eigenständige ZooKeeper-Installation haben. Wenn Sie auf Fehler stoßen, sollten Sie überprüfen, ob die Konfiguration korrekt ist.
OutputConnecting to 127.0.0.1:2181
...
...
[zk: 127.0.0.1:2181(CONNECTED) 0]
Geben Sie an dieser Eingabeaufforderunghelp
ein, um eine Liste der Befehle abzurufen, die Sie vom Client ausführen können. Die Ausgabe sieht wie folgt aus:
Output[zk: 127.0.0.1:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
Nachdem Sie einige Tests durchgeführt haben, schließen Sie die Clientsitzung, indem Sie an der Eingabeaufforderungquit
eingeben. Der ZooKeeper-Dienst wird weiterhin ausgeführt, nachdem Sie die Clientsitzung geschlossen haben. Fahren Sie den ZooKeeper-Dienst herunter, da Sie ihn im nächsten Schritt alssystemd
-Dienst konfigurieren:
bin/zkServer.sh stop
Sie haben jetzt einen eigenständigen ZooKeeper-Dienst installiert, konfiguriert und getestet. Dieses Setup ist nützlich, um sich mit ZooKeeper vertraut zu machen, aber auch für Entwicklungs- und Testumgebungen. Nachdem Sie wissen, dass die Konfiguration funktioniert, konfigurieren Siesystemd
, um die Verwaltung Ihres ZooKeeper-Dienstes zu vereinfachen.
[[Schritt 6 - Erstellen und Verwenden einer Systemd-Unit-Datei]] == Schritt 6 - Erstellen und Verwenden einer Systemd-Unit-Datei
Dersystemd
, System- und Service-Manager, ist ein Init-System, das zum Booten des Benutzerbereichs und zum Verwalten von Systemprozessen nach dem Booten verwendet wird. Sie können einen Daemon zum Starten und Überprüfen des Status von ZooKeeper mitsystemd
erstellen.
Systemd Essentials ist eine großartige Einführungsressource, um mehr übersystemd
und seine Bestandteile zu erfahren.
Verwenden Sie Ihren Editor, um eine.service
-Datei mit dem Namenzk.service
bei/etc/systemd/system/
zu erstellen.
sudo nano /etc/systemd/system/zk.service
Fügen Sie der Datei die folgenden Zeilen hinzu, um den ZooKeeper-Dienst zu definieren:
/etc/systemd/system/zk.service
[Unit]
Description=Zookeeper Daemon
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target
[Service]
Type=forking
WorkingDirectory=/opt/zookeeper
User=zk
Group=zk
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg
ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg
TimeoutSec=30
Restart=on-failure
[Install]
WantedBy=default.target
Der AbschnittService
in der Einheitendateikonfiguration gibt das Arbeitsverzeichnis, den Benutzer an, unter dem der Dienst ausgeführt werden soll, und die ausführbaren Befehle zum Starten, Stoppen und Neustarten des ZooKeeper-Dienstes. Weitere Informationen zu allen Konfigurationsoptionen für Gerätedateien finden Sie im ArtikelUnderstanding Systemd Units and Unit Files.
Speichern Sie die Datei und beenden Sie den Editor.
Nachdem Ihresystemd
-Konfiguration vorhanden ist, können Sie den Dienst starten:
sudo systemctl start zk
Sobald Sie bestätigt haben, dass Ihresystemd
-Datei den Dienst erfolgreich starten kann, können Sie den Dienst beim Booten starten.
sudo systemctl enable zk
Diese Ausgabe bestätigt die Erstellung der symbolischen Verknüpfung:
OutputCreated symlink /etc/systemd/system/multi-user.target.wants/zk.service → /etc/systemd/system/zk.service.
Überprüfen Sie den Status des ZooKeeper-Dienstes mit:
sudo systemctl status zk
Beenden Sie den ZooKeeper-Dienst mitsystemctl
.
sudo systemctl stop zk
Verwenden Sie abschließend den folgenden Befehl, um den Daemon neu zu starten:
sudo systemctl restart zk
Der Mechanismus vonsystemd
wird auf vielen Linux-Distributionen zum bevorzugten Init-System. Nachdem Siesystemd
für die Verwaltung von ZooKeeper konfiguriert haben, können Sie dieses schnelle und flexible Init-Modell nutzen, um den ZooKeeper-Dienst zu starten, zu stoppen und neu zu starten.
[[Schritt-7 - Konfigurieren eines Multi-Node-Zookeeper-Clusters]] == Schritt 7 - Konfigurieren eines Multi-Node ZooKeeper-Clusters
Während der eigenständige ZooKeeper-Server für die Entwicklung und das Testen nützlich ist, sollte jede Produktionsumgebung über einen replizierten Cluster mit mehreren Knoten verfügen.
Knoten im ZooKeeper-Cluster, die als Anwendung zusammenarbeiten, bildenquorum. Quorum bezieht sich auf die Mindestanzahl von Knoten, die sich auf eine Transaktion einigen müssen, bevor sie festgeschrieben wird. Ein Quorum benötigt eine ungerade Anzahl von Knoten, damit es eine Mehrheit bilden kann. Eine gerade Anzahl von Knoten kann zu einem Gleichstand führen, was bedeuten würde, dass die Knoten keine Mehrheit oder keinen Konsens erreichen würden.
In einer Produktionsumgebung sollten Sie jeden ZooKeeper-Knoten auf einem separaten Host ausführen. Dies verhindert Dienstunterbrechungen aufgrund von Hosthardwarefehlern oder Neustarts. Dies ist eine wichtige und notwendige architektonische Überlegung für den Aufbau eines ausfallsicheren und hochverfügbaren verteilten Systems.
In diesem Lernprogramm werden Sie drei Knoten im Quorum installieren und konfigurieren, um eine Konfiguration mit mehreren Knoten zu demonstrieren. Bevor Sie einen Cluster mit drei Knoten konfigurieren, werden zwei zusätzliche Server mit derselben Konfiguration wie Ihre eigenständige ZooKeeper-Installation hochgefahren. Stellen Sie sicher, dass die beiden zusätzlichen Knoten die Voraussetzungen erfüllen, und führen Sie dann die Schritte eins bis sechs aus, um eine ausgeführte ZooKeeper-Instanz einzurichten.
Wenn Sie die Schritte eins bis sechs für die neuen Knoten ausgeführt haben, öffnen Siezoo.cfg
im Editor auf jedem Knoten.
sudo nano /opt/zookeeper/conf/zoo.cfg
Alle Knoten in einem Quorum benötigen dieselbe Konfigurationsdatei. Fügen Sie in Ihrerzoo.cfg
-Datei auf jedem der drei Knoten am Ende der Datei die zusätzlichen Konfigurationsparameter und -werte fürinitLimit
,syncLimit
und die Server im Quorum hinzu.
/opt/zookeeper/conf/zoo.cfg
tickTime=2000
dataDir=/data/zookeeper
clientPort=2181
maxClientCnxns=60
initLimit=10
syncLimit=5
server.1=your_zookeeper_node_1:2888:3888
server.2=your_zookeeper_node_2:2888:3888
server.3=your_zookeeper_node_3:2888:3888
initLimit
gibt die Zeit an, die die anfängliche Synchronisationsphase dauern kann. Dies ist die Zeit, innerhalb derer jeder Knoten im Quorum eine Verbindung zum Leiter herstellen muss. syncLimit
gibt die Zeit an, die zwischen dem Senden einer Anforderung und dem Empfangen einer Bestätigung vergehen kann. Dies ist die maximale Zeit, während der Knoten vom Leader nicht synchron sein können. ZooKeeper-Knoten verwenden ein Paar von Ports,:2888
und:3888
, damit Follower-Knoten eine Verbindung zum Leader-Knoten herstellen bzw. für die Leader-Wahl.
Sobald Sie die Datei auf jedem Knoten aktualisiert haben, speichern und beenden Sie den Editor.
Um Ihre Konfiguration mit mehreren Knoten abzuschließen, geben Sie auf jedem Server eine Knoten-ID an. Dazu erstellen Sie auf jedem Knoten einemyid
-Datei. Jede Datei enthält eine Nummer, die der in der Konfigurationsdatei zugewiesenen Servernummer entspricht.
Erstellen Sie unteryour_zookeeper_node_1 die Dateimyid
, in der die Knoten-ID angegeben wird:
sudo nano /data/zookeeper/myid
Dayour_zookeeper_node_1 alsserver.1
identifiziert wird, geben Sie1
ein, um die Knoten-ID zu definieren. Nach dem Hinzufügen des Werts sieht Ihre Datei folgendermaßen aus:
your_zookeeper_node_1 /data/zookeeper/myid1
Befolgen Sie die gleichen Schritte für die verbleibenden Knoten. Diemyid
-Datei auf jedem Knoten sollte wie folgt sein:
your_zookeeper_node_1 /data/zookeeper/myid1
your_zookeeper_node_2 /data/zookeeper/myid2
your_zookeeper_node_3 /data/zookeeper/myid3
Sie haben jetzt einen ZooKeeper-Cluster mit drei Knoten konfiguriert. Als Nächstes führen Sie den Cluster aus und testen Ihre Installation.
[[Schritt 8 - Ausführen und Testen der Installation mit mehreren Knoten]] == Schritt 8 - Ausführen und Testen der Installation mit mehreren Knoten
Wenn jeder Knoten für die Arbeit als Cluster konfiguriert ist, können Sie ein Quorum starten. In diesem Schritt starten Sie das Quorum auf jedem Knoten und testen dann Ihren Cluster, indem Sie Beispieldaten in ZooKeeper erstellen.
Um einen Quorumknoten zu starten, wechseln Sie zunächst in das Verzeichnis/opt/zookeeper
auf jedem Knoten:
cd /opt/zookeeper
Starten Sie jeden Knoten mit dem folgenden Befehl:
java -cp zookeeper-3.4.13.jar:lib/log4j-1.2.17.jar:lib/slf4j-log4j12-1.7.25.jar:lib/slf4j-api-1.7.25.jar:conf org.apache.zookeeper.server.quorum.QuorumPeerMain conf/zoo.cfg
Beim Start von Knoten werden zeitweise Verbindungsfehler angezeigt, gefolgt von einer Phase, in der sie dem Quorum beitreten und untereinander einen Leiter wählen. Nach einigen Sekunden der Initialisierung können Sie mit dem Testen Ihrer Installation beginnen.
Melden Sie sich über SSH beiyour_zookeeper_node_3 als Nicht-Root-Benutzer an, den Sie in den Voraussetzungen konfiguriert haben:
ssh sammy@your_zookeeper_node_3
Wechseln Sie nach dem Anmelden zum Benutzer Ihreszk:
your_zookeeper_node_3 /data/zookeeper/myidsu -l zk
Geben Sie das Passwort für den Benutzer vonzkein. Sobald Sie angemeldet sind, ändern Sie das Verzeichnis in/opt/zookeeper
:
your_zookeeper_node_3 /data/zookeeper/myidcd /opt/zookeeper
Sie starten jetzt einen ZooKeeper-Befehlszeilenclient und stellen unteryour_zookeeper_node_1 eine Verbindung zu ZooKeeper her:
your_zookeeper_node_3 /data/zookeeper/myidbin/zkCli.sh -server your_zookeeper_node_1:2181
Bei der eigenständigen Installation wurden sowohl der Client als auch der Server auf demselben Host ausgeführt. Auf diese Weise konnten Sie mitlocalhost
eine Clientverbindung zum ZooKeeper-Server herstellen. Da der Client und der Server auf verschiedenen Knoten in Ihrem Cluster mit mehreren Knoten ausgeführt werden, mussten Sie im vorherigen Schritt die IP-Adresse vonyour_zookeeper_node_1 angeben, um eine Verbindung herzustellen.
Sie sehen die bekannte Eingabeaufforderung mit der BezeichnungCONNECTED
, ähnlich wie in Schritt 5.
Als Nächstes erstellen, listen und löschen Sieznode. Die znodes sind die grundlegenden Abstraktionen in ZooKeeper, die Dateien und Verzeichnissen in einem Dateisystem entsprechen. ZooKeeper verwaltet seine Daten in einem hierarchischen Namespace, und Z-Knoten sind die Datenregister dieses Namespaces.
Um sicherzustellen, dass Ihr ZooKeeper-Cluster ordnungsgemäß installiert und konfiguriert ist, müssen Sie testen, ob Sie einen znode erfolgreich erstellen, auflisten und anschließend löschen können.
Erstellen Sie einen Knoten mit dem Namenzk_znode_1
und ordnen Sie ihm die Zeichenfolgesample_data
zu.
create /zk_znode_1 sample_data
Sie werden die folgende Ausgabe sehen, sobald sie erstellt wurde:
OutputCreated /zk_znode_1
Listen Sie den neu erstellten znode auf:
ls /
Holen Sie sich die damit verbundenen Daten:
get /zk_znode_1
ZooKeeper wird wie folgt antworten:
Output[zk: your_zookeeper_node_1:2181(CONNECTED)] ls /
[zk_znode_1, zookeeper]
[zk: your_zookeeper_node_1:2181(CONNECTED)] get /zk_znode_1
sample_data
cZxid = 0x100000002
ctime = Tue Nov 06 19:47:41 UTC 2018
mZxid = 0x100000002
mtime = Tue Nov 06 19:47:41 UTC 2018
pZxid = 0x100000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 11
numChildren = 0
Die Ausgabe bestätigt den Wertsample_data
, den Siezk_node_1
zugeordnet haben. ZooKeeper bietet außerdem zusätzliche Informationen zur Erstellungszeitctime
und zur Änderungszeitmtime
. ZooKeeper ist ein versionierter Datenspeicher, sodass Sie auch Metadaten zur Datenversion erhalten.
Löschen Sie den znode vonzk_znode_1
:
delete /zk_znode_1
In diesem Schritt haben Sie die Konnektivität zwischen zwei Ihrer ZooKeeper-Knoten erfolgreich getestet. Sie haben auch die grundlegende Verwaltung von Znodes gelernt, indem Sie Znodes erstellt, aufgelistet und gelöscht haben. Ihre Konfiguration für mehrere Knoten ist abgeschlossen und Sie können ZooKeeper jetzt verwenden.
Fazit
In diesem Lernprogramm haben Sie eine eigenständige ZooKeeper-Umgebung und eine Umgebung mit mehreren Knoten konfiguriert und getestet. Nachdem Ihre ZooKeeper-Bereitstellung mit mehreren Knoten einsatzbereit ist, können Sie dieofficial ZooKeeper documentation auf zusätzliche Informationen und Projekte überprüfen.