Technologieführer

ZooKeeper auf Ubuntu 18.04 installieren (Einzelknoten)

5 min read DevOps Aktualisiert 18 Oct 2025
ZooKeeper auf Ubuntu 18.04 installieren
ZooKeeper auf Ubuntu 18.04 installieren

Foto eines Servers mit Terminal und Konsole

Ü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 als Mode: standalone oder Mode: 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 liefert hello.
  • 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.

Autor
Redaktion

Ähnliche Materialien

Benutzerdefiniertes Netflix‑Profilbild: Anleitung
How-to

Benutzerdefiniertes Netflix‑Profilbild: Anleitung

iPhone als WLAN‑Hotspot einrichten
Anleitung

iPhone als WLAN‑Hotspot einrichten

Fortnite Crew kündigen — Anleitung
Gaming

Fortnite Crew kündigen — Anleitung

LGV-Theorieprüfung online meistern
Fahrschule

LGV-Theorieprüfung online meistern

Terminal-Server mit FreeNX auf Ubuntu 9.10 einrichten
Linux Server

Terminal-Server mit FreeNX auf Ubuntu 9.10 einrichten

Touchpad-Gesten in Windows 8/8.1 deaktivieren
Windows

Touchpad-Gesten in Windows 8/8.1 deaktivieren