Wie man Apache ZooKeeper unter Debian 10 installiert

Apache Zookeeper ist ein freier und quelloffener Dienst für verteilte Systeme, der Ihnen hilft, eine große Anzahl von Hosts zu verwalten. Es ist ein zentralisierter Dienst, der für die Pflege von Konfigurationsinformationen, Benennung und Gruppendiensten verwendet wird. Er ist in Java geschrieben und ermöglicht es Entwicklern, sich auf die Erstellung von Softwarefunktionen zu konzentrieren, ohne sich über die verteilte Natur der Anwendung Gedanken machen zu müssen. Apache ZooKeeper wird am häufigsten bei „lesendominanten“ Arbeitslasten verwendet, bei denen das Lesen viel häufiger ist als das Schreiben. Er verfügt über eine Vielzahl von Funktionen, darunter Synchronisation, geordnete Nachrichten, Serialisierung, Zuverlässigkeit, Atomarität, schnelle Verarbeitung und viele andere. Es verfügt über einen Sperr- und Synchronisationsmechanismus, der Ihnen bei der automatischen Wiederherstellung von Fehlern bei der Verbindung mit anderen verteilten Anwendungen hilft. Das Zookeeper-Projekt ist eines der erfolgreichsten Projekte der Apache Foundation. Viele Unternehmen haben Zookeeper für die Erstellung hochverfügbarer verteilter Systeme in großem Maßstab eingesetzt.

In diesem Tutorial zeigen wir Ihnen, wie Sie einen Apache-Zookeeper-Cluster mit einem Knoten auf einem Debian-10-Server einrichten.

Voraussetzungen

  • Ein Server, auf dem Debian 10 mit 2 GB RAM läuft.
  • Auf Ihrem Server wird ein Root-Passwort konfiguriert.

Erste Schritte

Es wird empfohlen, vor dem Start Ihren Server mit der neuesten Version zu aktualisieren. Sie können sie 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.

Java installieren

Apache Zookeeper ist in der Sprache Java geschrieben. Sie müssen also Java in Ihrem System installieren. Standardmäßig ist die neueste Version von Java im Standard-Repository von Debian 10 verfügbar. Sie können sie installieren, indem Sie den folgenden Befehl ausführen:

apt-get install default-jdk -y

Nach der Installation von Java überprüfen Sie die installierte Version von Java mit dem folgenden Befehl:

java --version

Sie sollten die folgende Ausgabe erhalten:

openjdk 11.0.5 2019-10-15
OpenJDK 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, sharing)

Sobald Sie fertig sind, können Sie damit fortfahren, einen Systembenutzer für Zookeeper anzulegen.

Erstellen Sie einen Systembenutzer für den Zookeeper

Es ist eine gute Idee, einen dedizierten Benutzer für die Ausführung 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

Als nächstes stellen Sie die Standard-Shell für den Zookeeper-Benutzer mit dem folgenden Befehl ein:

usermod --shell /bin/bash zookeeper

Legen Sie als nächstes ein Passwort für den Zookeeper-Benutzer fest, indem Sie den folgenden Befehl verwenden:

passwd zookeeper

Als nächstes fügen Sie den Zookeeper-Benutzer zur sudo-Gruppe hinzu:

usermod -aG sudo zookeeper

Zu diesem Zeitpunkt haben Sie den Zookeeper-Benutzer angelegt und konfiguriert. Sie können nun mit dem Herunterladen des Zookeepers fortfahren.

Zookeeper herunterladen

Zuerst müssen Sie die neueste Version des Apache Zookeeper von der offiziellen Website herunterladen. Zum Zeitpunkt des Verfassens dieses Artikels ist die neueste Version des Apache Zookeeper 3.5.6.

Um ihn herunterzuladen, wechseln Sie das Verzeichnis 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

Wenn 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 erteilen die entsprechenden 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 es auf dem lokalen Dateisystem oder dem entfernten Dateisystem nach Ihren Bedürfnissen erstellen.

Sie können ein Datenverzeichnis mit dem folgenden Befehl erstellen:

mkdir -p /data/zookeeper

Als nächstes ändern Sie den Eigentümer des Datenverzeichnisses auf Zookeeper-Benutzer:

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

Zookeeper alle Konfigurationsdateien befinden sich im Verzeichnis /opt/zookeeper/conf/. Sie können eine Zookeeper-Konfigurationsdatei im Verzeichnis /opt/zookeeper/conf/ mit dem folgenden Befehl erstellen:

nano /opt/zookeeper/conf/zoo.cfg

Fügen Sie die folgenden Zeilen hinzu:

tickTime=2500
dataDir=/data/zookeeper
clientPort=2181
maxClientCnxns=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 an, in dem die Daten des Zookeepers gespeichert werden sollen.
  • 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.

Anmerkung: Die oben genannten Parameter sind für die Entwicklung und das Testen. Sie können sie je nach Bedarf ändern.

An diesem Punkt haben Sie Zookeeper konfiguriert. Sie können nun 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 start

Sie sollten die folgende Ausgabe erhalten:

/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

Als nächstes können Sie mit dem folgenden Befehl eine Verbindung zum Zookeeper-Server auf Port 2181 herstellen:

/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(CONNECTED) 0]

Führen Sie als nächstes den Befehl help aus, um eine Liste der Befehle zu erhalten, die Sie vom Client aus ausführen können.

[zk: 127.0.0.1:2181(CONNECTED) 0] help

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] path
	ls2 path [watch]
	printwatches on|off
	quit 
	reconfig [-s] [-v version] [[-file path] | [-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

Nach dem Testen verlassen Sie die Client-Sitzung mit dem Befehl quit:

[zk: 127.0.0.1:2181(CONNECTED) 0] quit

Sie können den Zookeeper-Dienst jetzt mit dem folgenden Befehl beenden:

/opt/zookeeper/bin/zkServer.sh stop

Sie sollten den folgenden Befehl sehen:

/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

An diesem Punkt haben Sie den Zookeeper-Server erfolgreich gestartet und getestet.

Erstellen Sie eine Systemdienstdatei für Zookeeper

Als nächstes müssen Sie eine systemd Service-Datei erstellen, um den Zookeeper-Service mit systemd zu verwalten.

Sie können sie mit dem folgenden Befehl erzeugen:

nano /etc/systemd/system/zookeeper.service

Fügen Sie die folgenden Zeilen hinzu:

[Unit]
Description=Zookeeper Daemon
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target

[Service]    
Type=forking
WorkingDirectory=/opt/zookeeper
User=zookeeper
Group=zookeeper
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

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Dann laden Sie den systemdämon mit dem folgenden Befehl neu:

systemctl daemon-reload

Als nächstes starten Sie den Zookeeper-Dienst und aktivieren ihn nach dem Neustart des Systems mit dem folgenden Befehl:

systemctl start zookeeper
 systemctl enable zookeeper

Sie können nun den Zookeeper-Status mit dem folgenden Befehl überprüfen:

systemctl status zookeeper

Sie sollten die folgende Ausgabe sehen:

? zookeeper.service - Zookeeper Daemon
   Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-12-29 15:12:39 UTC; 8min ago
     Docs: http://zookeeper.apache.org
  Process: 9229 ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg (code=exited, status=0/SUCCESS)
 Main PID: 9245 (java)
    Tasks: 29 (limit: 2359)
   Memory: 49.7M
   CGroup: /system.slice/zookeeper.service
           ??9245 java -Dzookeeper.log.dir=/opt/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-zookeeper-server-debian10.log -Dzookeeper.

Dec 29 15:12:38 debian10 systemd[1]: Starting Zookeeper Daemon...
Dec 29 15:12:38 debian10 zkServer.sh[9229]: /usr/bin/java
Dec 29 15:12:38 debian10 zkServer.sh[9229]: ZooKeeper JMX enabled by default
Dec 29 15:12:38 debian10 zkServer.sh[9229]: Using config: /opt/zookeeper/conf/zoo.cfg
Dec 29 15:12:39 debian10 zkServer.sh[9229]: Starting zookeeper ... STARTED
Dec 29 15:12:39 debian10 systemd[1]: Started Zookeeper Daemon.

Jetzt können Sie den Zookeeper-Dienst mit systemd einfach verwalten.

Schlussfolgerung

Herzlichen Glückwunsch! Sie haben erfolgreich einen Zookeeper-Cluster mit einem einzelnen Knoten auf einem Debian-10-Server installiert und konfiguriert. Diese Einrichtung ist sehr nützlich für Entwicklungs- und Testumgebungen. Ich hoffe, Sie haben nun genug Wissen, um einen Single Node Zookeeper-Cluster einzurichten. Sie können mich gerne fragen, wenn Sie Fragen haben.

Das könnte Dich auch interessieren …