So installieren und konfigurieren Sie einen Apache ZooKeeper-Cluster unter Ubuntu 18.04

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 vonsystemdwird 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.