ZooKeeper auf Ubuntu 18.04 installieren (Einzelknoten)

Übersicht
Apache ZooKeeper ist ein verteiltes Koordinationssystem, das Konfigurationsdaten, Namensauflösung, verteilte Synchronisation und Gruppen-Dienste verwaltet. Es ist in Java geschrieben und bietet eine hierarchische Namespace-Struktur (Znodes), hohen Datendurchsatz, niedrige Latenz sowie strikte Zugriffskontrollen für Znodes. Diese Anleitung beschränkt sich auf ein Einzelknoten-Setup unter Ubuntu 18.04, geeignet für Test- und Entwicklungsumgebungen.
Kurze Definition: Znode — ein Knoten im ZooKeeper-Namensraum, ähnlich einer Datei in einem Dateisystem.
Anforderungen
- Ein Server mit Ubuntu 18.04.
- Root-Zugriff oder ein Benutzer mit sudo-Rechten.
Wichtig: Für Produktionsumgebungen sollten Sie ein Mehrknoten-Cluster (mind. 3 Knoten) in Betracht ziehen, um Ausfallsicherheit zu erreichen.
Vorbereitung: System aktualisieren
Aktualisieren Sie das System vor der Installation:
apt-get update -y
apt-get upgrade -y
Starten Sie das System neu, falls Kernel- oder kritische Paket-Updates installiert wurden, damit alle Änderungen wirksam werden.
Java installieren
ZooKeeper benötigt eine Java-Runtime. Zwei gängige Optionen:
- Oracle Java 11 (wie im Originalskript) über ein PPA.
- OpenJDK 11 aus den Ubuntu-Repositories (empfohlen für einfache Lizenzen und Sicherheit).
Alternative (OpenJDK, einfacher und empfohlen):
apt-get install openjdk-11-jre-headless -y
Oracle-Java über PPA (wie in der Originalanleitung):
add-apt-repository ppa:linuxuprising/java
apt-get update -y
apt-get install oracle-java11-set-default
Prüfen Sie anschließend die Java-Version:
java --version
Erwartete Ausgabe (Beispiel):
java 11.0.2 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+7-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+7-LTS, mixed mode)
Hinweis: OpenJDK-Ausgaben unterscheiden sich im Wortlaut, Funktionalität ist jedoch gleich.
ZooKeeper-Benutzer anlegen
Erstellen Sie einen dedizierten Systembenutzer für ZooKeeper:
useradd zookeeper -m
usermod --shell /bin/bash zookeeper
passwd zookeeper
usermod -aG sudo zookeeper
Zweck: Trennung von Rechten und Verzeichnisbesitz, bessere Sicherheits- und Betriebspraktiken.
ZooKeeper herunterladen und installieren
ZooKeeper speichert Zustand und Konfiguration auf der Festplatte. Legen Sie zuerst das Datenverzeichnis an und setzen Sie Rechte:
mkdir -p /data/zookeeper
chown -R zookeeper:zookeeper /data/zookeeper
Wechseln Sie nach /opt und laden Sie die gewünschte Version herunter (Beispiel aus dem Archiv):
cd /opt
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
Entpacken, umbenennen und Rechte setzen:
tar -xvzf zookeeper-3.4.9.tar.gz
mv zookeeper-3.4.9 zookeeper
chown -R zookeeper:zookeeper /opt/zookeeper
Hinweis: Version 3.4.9 ist in dieser Anleitung historisch verwendet worden; prüfen Sie im Produktionsbetrieb auf neuere, stabile 3.x- oder 3.6+/3.7+-Releases und passen Sie Pfade/Dateinamen entsprechend an.
Konfigurieren von ZooKeeper
Erstellen Sie die Konfigurationsdatei:
nano /opt/zookeeper/conf/zoo.cfg
Fügen Sie folgende Grundeinstellungen ein:
tickTime=2500
dataDir=/data/zookeeper
clientPort=2181
maxClientCnxns=80
Erläuterung der wichtigsten Parameter:
- tickTime: Basiseinheit (ms) für Zeitangaben innerhalb des Clusters.
- dataDir: Verzeichnis für Snapshots/Transaktionslogs.
- clientPort: Port für Client-Verbindungen (Standard 2181).
- maxClientCnxns: Max. Verbindungen pro Client-IP.
Speichern und schließen.
ZooKeeper starten und testen
Starten Sie ZooKeeper manuell:
cd /opt/zookeeper
bin/zkServer.sh start
Erwartete Ausgabe:
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
Verbinden Sie sich mit dem Client:
bin/zkCli.sh -server 127.0.0.1:2181
Bei erfolgreicher Verbindung sehen Sie die Eingabeaufforderung:
[zk: 127.0.0.1:2181(CONNECTED) 1]
Geben Sie help
ein, um verfügbare Befehle anzuzeigen (Beispiel):
help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
...
quit
Beenden Sie die Sitzung mit quit
.
Stoppen Sie den Server:
bin/zkServer.sh stop
Ausgabe:
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
Systemd-Service für ZooKeeper anlegen
Erstellen Sie eine systemd-Einheit, damit ZooKeeper beim Boot startet und via systemctl verwaltet werden kann:
nano /etc/systemd/system/zookeeper.service
Inhalt:
[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
Aktualisieren und aktivieren:
systemctl daemon-reload
systemctl start zookeeper
systemctl enable zookeeper
systemctl status zookeeper
Beispielauszug des Status (gekürzt):
? zookeeper.service - Zookeeper Daemon
Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2019-03-06 15:03:01 UTC; 5s ago
Abnahmekriterien
- Der systemd-Dienst läuft und ist aktiv:
systemctl status zookeeper
zeigt Active: active (running). - Der Client verbindet sich lokal:
bin/zkCli.sh -server 127.0.0.1:2181
→ CONNECTED. - Datenverzeichnis
/data/zookeeper
ist im Besitz von zookeeper:zookeeper und enthält Snapshots/logs. zkServer.sh status
zeigt den Server alsMode: standalone
oderMode: leader
/follower
in Multi-Knoten-Setups.
Testfälle / Akzeptanztests
- Verbindungs-Test: Client verbindet sich und
create /test hello
erzeugt einen Znode. - Lese-/Schreibtest:
get /test
lieferthello
. - Restart-Test:
systemctl restart zookeeper
→ danach noch erreichbar. - Rechte-Test: Dateien im dataDir sind nicht für andere Benutzer schreibbar.
Rolle-basierte Checkliste
- Administrator: systemd-Einheit prüfen, Logs via
journalctl -u zookeeper
einsehen. - Entwickler: Znode-Struktur anlegen, ACL-Tests durchführen.
- Betreiber/DevOps: Backups der Snapshots planen, Monitoring (JMX/Metrics) einrichten.
Sicherheit und Betrieb (Grundlagen)
- Schränken Sie den Zugang zum clientPort (2181) per Firewall (ufw/iptables) ein.
- Setzen Sie ACLs in ZooKeeper für sensible Konfigurationsdaten.
- Aktivieren Sie TLS/SSL und SASL, wenn vertrauliche Daten über das Netzwerk laufen (nur bei unterstützten Versionen).
- Entfernen Sie unnötige sudo-Rechte vom zookeeper-Benutzer, geben Sie nur die nötigen Privilegien.
Wichtig: Für produktive Installationen immer Multi-Knoten und gesicherte Verbindungen verwenden.
Fehlerbehebung (Quick Troubleshooting)
- Kein Start / STARTED fehlt: Prüfen Sie
journalctl -u zookeeper
und/opt/zookeeper/logs
. - Port belegt (2181):
ss -tlnp | grep 2181
prüfen; ggf. anderen Port einstellen. - Datenverzeichnis-Fehler: Prüfen Sie Besitz und Rechte
ls -ld /data/zookeeper
. - Java-Probleme:
java --version
ausführen; Pfade in systemd-Unit überprüfen, falls mehrere Java-Versionen installiert sind.
Wann dieses Tutorial nicht passt (Gegenbeispiele)
- Sie benötigen sofort Produktions-Hochverfügbarkeit: Nutzen Sie stattdessen eine Mehrknoten-Cluster-Anleitung (mindestens 3 Knoten).
- Sie möchten ein paketbasiertes Management (apt/dpkg): Verwenden Sie Distributionen oder Container-Images, die ZooKeeper als Paket bereitstellen.
Alternativen und Erweiterungen
- Installation via apt (wenn verfügbar) oder via Docker-Container für isolierte Umgebungen.
- Nutzung eines verwalteten Services (Cloud-Anbieter) für weniger Betriebsaufwand.
Migrationstipps
- Beim Upgrade der ZooKeeper-Version: Snapshots und Transaktionsprotokollversionen prüfen, Release-Notes lesen.
- Testen Sie Upgrades zuerst in einer Staging-Umgebung.
Kurze Checkliste vor Produktivsetzung
- Multi-Knoten-Plan erstellen (Quorum beachten).
- Backup/Restore von dataDir testen.
- Monitoring (JMX/Prometheus) einrichten.
- Firewall und Zugangsregeln konfigurieren.
- TLS/SASL prüfen und aktivieren falls nötig.
Zusammenfassung
Sie haben nun einen lauffähigen Einzelknoten ZooKeeper auf Ubuntu 18.04 installiert, als systemd-Dienst eingebunden und grundlegende Tests durchgeführt. Für Produktionsbetrieb planen Sie ein Mehrknoten-Cluster, sichere Verbindungen und Monitoring ein.
Häufig gestellte Fragen
Kann ich OpenJDK statt Oracle Java verwenden?
Ja. OpenJDK 11 ist funktional gleichwertig und häufig die empfohlene Option wegen Lizenz- und Sicherheitsvorteilen.
Wie skaliere ich ZooKeeper für Produktion?
Setzen Sie mindestens drei Knoten (Quorum). Verteilen Sie Knoten über verschiedene Hosts/Availability Zones und konfigurieren Sie server.X
-Einträge in zoo.cfg
.
Wo finde ich Logs?
Standardmäßig im Verzeichnis /opt/zookeeper/logs
und über journalctl -u zookeeper
für systemd-gestartete Instanzen.
Wenn Sie möchten, helfe ich Ihnen beim Upgrade zu einer neueren ZooKeeper-Version, beim Einrichten eines Mehrknoten-Clusters oder beim Absichern der Kommunikation.
Ähnliche Materialien

Benutzerdefiniertes Netflix‑Profilbild: Anleitung

iPhone als WLAN‑Hotspot einrichten

Fortnite Crew kündigen — Anleitung

LGV-Theorieprüfung online meistern
Terminal-Server mit FreeNX auf Ubuntu 9.10 einrichten
