Apache Zookeeper ist ein kostenloser Open-Source-Dienst für verteilte Systeme, mit dem Sie eine große Anzahl von Hosts verwalten können. Es ist ein zentralisierter Dienst, der zum Verwalten von Konfigurationsinformationen, Benennungs- und Gruppendiensten verwendet wird. Es ist in Java geschrieben und ermöglicht es Entwicklern, sich auf das Erstellen von Softwarefunktionen zu konzentrieren, ohne sich Gedanken über die verteilte Natur der Anwendung machen zu müssen. Apache ZooKeeper wird am häufigsten in „lesedominierten“ Workloads verwendet, bei denen Lesevorgänge viel häufiger sind als Schreibvorgänge. Es verfügt über eine Vielzahl von Funktionen, darunter Synchronisierung, geordnete Nachrichten, Serialisierung, Zuverlässigkeit, Atomizität, schnelle Verarbeitung und vieles mehr. Es verfügt über einen Sperr- und Synchronisierungsmechanismus, der Sie bei der automatischen Wiederherstellung nach einem Ausfall unterstützt, während Sie andere verteilte Anwendungen verbinden. Das Zookeeper-Projekt ist eines der erfolgreichsten Projekte der Apache Foundation. Viele Unternehmen haben Zookeeper eingeführt, um hochverfügbare verteilte Systeme in großem Umfang zu erstellen.
In diesem Tutorial zeigen wir Ihnen, wie Sie einen Apache Zookeeper-Cluster mit einem einzelnen Knoten auf einem Debian 10-Server einrichten.
Voraussetzungen
- Ein Server mit Debian 10 und 2 GB RAM.
- Auf Ihrem Server ist ein Root-Passwort konfiguriert.
Erste Schritte
Bevor Sie beginnen, wird empfohlen, Ihren Server auf die neueste Version zu aktualisieren. Sie können es mit dem folgenden Befehl aktualisieren:
apt-get update -y
apt-get upgrade -y
Sobald Ihr Server aktualisiert ist, starten Sie ihn neu, um die Änderungen zu implementieren.
Installieren Sie Java
Apache Zookeeper ist in der Java-Sprache geschrieben. Sie müssen also Java auf Ihrem System installieren. Standardmäßig ist die neueste Version von Java im Standard-Repository von Debian 10 verfügbar. Sie können es installieren, indem Sie den folgenden Befehl ausführen:
apt-get install default-jdk -y
Überprüfen Sie nach der Installation von Java die installierte Version von Java mit dem folgenden Befehl:
java --version
Sie sollten die folgende Ausgabe erhalten:
openjdk 11.0.5 2019-10-15OpenJDK Runtime Environment (build 11.0.5+10-post-Debian-1deb10u1)OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Debian-1deb10u1, Mixed Mode , teilen)
Wenn Sie fertig sind, können Sie mit der Erstellung eines Systembenutzers für Zookeeper fortfahren.
Erstellen Sie einen Systembenutzer für Zookeeper
Es ist eine gute Idee, einen dedizierten Benutzer zum Ausführen des Zookeeper-Dienstes zu erstellen. Dies verbessert Ihre Sicherheit und Verwaltbarkeit.
Führen Sie zunächst den folgenden Befehl aus, um einen Zookeeper-Benutzer mit Home-Verzeichnis zu erstellen:
useradd zookeeper -m
Legen Sie als Nächstes die Standard-Shell für den Zookeeper-Benutzer mit dem folgenden Befehl fest:
usermod --shell /bin/bash zookeeper
Legen Sie als Nächstes mit dem folgenden Befehl ein Passwort für den Zookeeper-Benutzer fest:
passwd zookeeper
Fügen Sie als Nächstes den Zookeeper-Benutzer zur sudo-Gruppe hinzu:
usermod -aG sudo zookeeper
An diesem Punkt haben Sie den Zookeeper-Benutzer erstellt und konfiguriert. Sie können jetzt mit dem Download des Zookeepers fortfahren.
Zookeeper herunterladen
Zuerst müssen Sie die neueste Version von Apache Zookeeper von seiner offiziellen Website herunterladen. Zum Zeitpunkt der Erstellung dieses Artikels ist die neueste Version von Apache Zookeeper 3.5.6.
Wechseln Sie zum Herunterladen in das Verzeichnis /opt und führen Sie den folgenden Befehl aus:
cd /opt
wget https://archive.apache.org/dist/zookeeper/stable/apache-zookeeper-3.5.6-bin.tar.gz
Sobald der Download abgeschlossen ist, extrahieren Sie die heruntergeladene Datei mit dem folgenden Befehl:
tar -xvzf apache-zookeeper-3.5.6-bin.tar.gz
Als nächstes benennen Sie das extrahierte Verzeichnis in zookeeper um und geben Sie die richtigen Berechtigungen:
mv apache-zookeeper-3.5.6-bin zookeeper
chown -R zookeeper:zookeeper /opt/zookeeper
Als Nächstes müssen Sie ein Datenverzeichnis für Zookeeper erstellen, um alle Konfigurations- und Zustandsdaten zu speichern. Sie können je nach Bedarf im lokalen Dateisystem oder im Remote-Dateisystem erstellen.
Sie können ein Datenverzeichnis mit dem folgenden Befehl erstellen:
mkdir -p /data/zookeeper
Ändern Sie als Nächstes den Besitz des Datenverzeichnisses auf zookeeper user:
chown -R zookeeper:zookeeper /data/zookeeper
An diesem Punkt haben Sie Zookeeper heruntergeladen und ein Datenverzeichnis dafür erstellt. Sie können nun mit der Konfiguration des Zookeepers fortfahren.
Zookeeper konfigurieren
Alle Konfigurationsdateien von Zookeeper befinden sich im Verzeichnis /opt/zookeeper/conf/. Mit dem folgenden Befehl können Sie eine Zookeeper-Konfigurationsdatei im Verzeichnis /opt/zookeeper/conf/ erstellen:
nano /opt/zookeeper/conf/zoo.cfg
Fügen Sie die folgenden Zeilen hinzu:
tickTime=2500dataDir=/data/zookeeperclientPort=2181maxClientCnxns=80
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Wo:
- TickTime :Diese Option legt die Länge eines Ticks in Millisekunden fest.
- dataDir :Geben Sie das Datenverzeichnis zum Speichern von Zookeeper-Daten an.
- clientPort :Geben Sie den Port an, der zum Abhören von Client-Verbindungen verwendet wird.
- maxClientCnxns :Wird verwendet, um die maximale Anzahl von Client-Verbindungen zu begrenzen.
Hinweis :Die oben genannten Parameter sind für Entwicklung und Tests. Sie können sie nach Bedarf ändern.
An diesem Punkt haben Sie Zookeeper konfiguriert. Sie können jetzt den Zookeeper-Server starten.
Zookeeper-Server starten und testen
Sie können den Zookeeper-Server mit dem folgenden Befehl starten:
/opt/zookeeper/bin/zkServer.sh starten
Sie sollten die folgende Ausgabe erhalten:
/usr/bin/javaZooKeeper JMX standardmäßig aktiviertUsing config:/opt/zookeeper/bin/../conf/zoo.cfgStarting zookeeper ... STARTED
Als Nächstes können Sie sich mit dem folgenden Befehl über Port 2181 mit dem Zookeeper-Server verbinden:
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
Sobald die Verbindung hergestellt ist, sollten Sie die folgende Ausgabe sehen:
[zk:127.0.0.1:2181(VERBUNDEN) 0]
Führen Sie als Nächstes den Befehl help aus, um eine Liste der Befehle zu erhalten, die Sie vom Client ausführen können.
[zk:127.0.0.1:2181(CONNECTED) 0] Hilfe
Sie sollten die folgende Ausgabe sehen:
ZooKeeper -server host:port cmd args addauth scheme auth close config [-c] [-w] [-s] connect host:port create [-s] [-e] [-c] [-t ttl] path [data] [acl] delete [-v version] path deleteall path delquota [-n|-b] path get [-s] [-w] path getAcl [-s] path history listquota path ls [-s] [ -w] [-R] Pfad ls2-Pfad [watch] printwatches on|off reconfig beenden [-s] [-v Version] [[-Dateipfad] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*] redo cmdno removewatches path [-c|-d|-a] [-l] rmr path set [-s] [-v version] path data setAcl [-s] [-v version] [-R] path acl setquota -n|-b val path stat [-w] path sync path
Beenden Sie nach dem Testen die Clientsitzung mit dem Befehl quit:
[zk:127.0.0.1:2181(CONNECTED) 0] beenden
Sie können den Zookeeper-Dienst jetzt mit dem folgenden Befehl stoppen:
/opt/zookeeper/bin/zkServer.sh stop
Sie sollten den folgenden Befehl sehen:
/usr/bin/javaZooKeeper JMX standardmäßig aktiviertUsing config:/opt/zookeeper/bin/../conf/zoo.cfgStopping zookeeper ... STOPPED
An diesem Punkt haben Sie den Zookeeper-Server erfolgreich gestartet und getestet.
Erstellen Sie eine Systemd-Dienstdatei für Zookeeper
Als Nächstes müssen Sie eine systemd-Dienstdatei erstellen, um den Zookeeper-Dienst mit systemd zu verwalten.
Sie können es mit dem folgenden Befehl erstellen:
nano /etc/systemd/system/zookeeper.service
Fügen Sie die folgenden Zeilen hinzu:
[Unit]Description=Zookeeper DaemonDocumentation=http://zookeeper.apache.orgRequires=network.targetAfter=network.target[Service] Type=forkingWorkingDirectory=/opt/zookeeperUser=zookeeperGroup=zookeeperExecStart=/opt/zookeeper/bin /zkServer.sh start /opt/zookeeper/conf/zoo.cfgExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfgExecReload=/opt/zookeeper/bin/zkServer.sh restart / opt/zookeeper/conf/zoo.cfgTimeoutSec=30Restart=on-failure[Install]WantedBy=default.target
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Laden Sie dann den systemd-Daemon mit dem folgenden Befehl neu:
systemctl daemon-reload
Starten Sie als Nächstes den Zookeeper-Dienst und aktivieren Sie ihn nach dem Systemneustart mit dem folgenden Befehl:
systemctl start zookeeper
systemctl enable zookeeper
Sie können jetzt den Zookeeper-Status mit dem folgenden Befehl überprüfen:
systemctl status zookeeper
Sie sollten die folgende Ausgabe sehen:
Jetzt können Sie den Zookeeper-Dienst ganz einfach mit systemd verwalten.
Schlussfolgerung
Herzliche Glückwünsche! Sie haben erfolgreich einen Zookeeper-Cluster mit einem Knoten auf einem Debian 10-Server installiert und konfiguriert. Dieses Setup ist sehr nützlich für Entwicklungs- und Testumgebungen. Ich hoffe, Sie haben jetzt genug Wissen, um einen Zookeeper-Cluster mit einem einzigen Knoten einzurichten. Fühlen Sie sich frei, mich zu fragen, wenn Sie irgendwelche Fragen haben.