Apache ZooKeeper installeren op Ubuntu 20.04

ZooKeeper is een softwareproject van de Apache Software Foundation dat een krachtige gedeelde gegevensdienst biedt die gebruikt wordt om gedistribueerde toepassingen te bouwen. Het wordt door een cluster gebruikt om gedeelde gegevens te onderhouden met robuuste synchronisatietechnieken. Het biedt een eenvoudige interface voor het beheer van configuratie-informatie, naamgeving, gedistribueerde synchronisatie, en het verlenen van groepsdiensten.

In deze handleiding laten we je zien hoe je Apache ZooKeeper op een Ubuntu 20.04 server kunt installeren.

Vereisten

  • Een server met Ubuntu 20.04.
  • Een root wachtwoord is de server geconfigureerd.

Installeer Java

Apache ZooKeeper is geschreven in Java, dus je zult Java in je systeem moeten installeren. Je kunt het installeren met het volgende commando:

apt-get install default-jdk -y

Controleer na de installatie van Java de geïnstalleerde versie van Java met het volgende commando:

java --version

Je zou de volgende uitvoer moeten krijgen:

openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)

Installeer zookeeper

Voordat je Apache zookeeper installeert, moet je een nieuwe gebruiker voor zookeeper maken. Je kunt hem aanmaken met het volgende commando:

useradd zookeeper -m

Stel vervolgens een wachtwoord in voor deze gebruiker en voeg hem toe aan de sudo groep met het volgende commando:

usermod --shell /bin/bash zookeeper
passwd zookeeper
usermod -aG sudo zookeeper

Maak vervolgens een gegevensmap voor zookeeper en verander het eigendom van deze map:

mkdir /zookeeper
chown -R zookeeper:zookeeper /zookeeper

Vervolgens moet je de nieuwste versie van zookeeper downloaden naar de /opt directory. Je kunt het downloaden met het volgende commando:

cd /opt
wget https://mirrors.estointernet.in/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz

Als de download voltooid is, pak je het gedownloade bestand uit met het volgende commando:

tar -xvzf apache-zookeeper-3.6.2-bin.tar.gz

Hernoem vervolgens de uitgepakte directory naar zookeeper met het volgende commando:

mv apache-zookeeper-3.6.2-bin zookeeper

Verander vervolgens het eigendom van de zookeeper map met het volgende commando:

chown -R zookeeper:zookeeper /opt/zookeeper

Configureer ZooKeeper in Standalone Modus

Vervolgens moet je een ZooKeeper configuratiebestand maken om ZooKeeper in standalone modus in te stellen. Je kunt het maken met het volgende commando:

nano /opt/zookeeper/conf/zoo.cfg

Voeg de volgende regels toe:

tickTime=2500
dataDir=/zookeeper
clientPort=2181
maxClientCnxns=80

Sla het bestand op en sluit het als je klaar bent. Start dan de ZooKeeper dienst met het volgende commando:

cd /opt/zookeeper
bin/zkServer.sh start

Je zou de volgende uitvoer moeten krijgen:

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

Standaard luistert ZooKeeper op poort 2181. Je kunt het controleren met het volgende commando:

ss -ntpl | grep 2181

Je zou de volgende uitvoer moeten krijgen:

LISTEN    0         50                       *:2181                   *:*        users:(("java",pid=12749,fd=53)) 

Je kunt nu verbinding maken met de lokale ZooKeeper server met het volgende commando:

bin/zkCli.sh -server 127.0.0.1:2181

Eenmaal verbonden zou je de volgende uitvoer moeten krijgen:

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: 127.0.0.1:2181(CONNECTED) 0] 

Verlaat nu de sessie met het volgende commando:

quit

Stop vervolgens de ZooKeeper service met het volgende commando:

bin/zkServer.sh stop

Je zou de volgende uitvoer moeten zien:

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

Maak een Systemd Service bestand voor ZooKeeper

Vervolgens moet je een systemd dienstbestand maken om de ZooKeeper dienst te beheren. Je kunt het aanmaken met het volgende commando:

nano /etc/systemd/system/zookeeper.service

Voeg de volgende regels toe:

[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

Bewaar en sluit het bestand en herlaad dan de systemd daemon om de veranderingen in de configuratie toe te passen:

systemctl daemon-reload

Verander vervolgens het eigendom van de ZooKeeper en gegevens map met het volgende commando:

chown -R zookeeper:zookeeper /opt/zookeeper
chown -R zookeeper:zookeeper /zookeeper

Start vervolgens de ZooKeeper service en zet hem aan om te starten bij het herstarten van het systeem met het volgende commando:

systemctl start zookeeper
systemctl enable zookeeper

Je kunt nu de status van de ZooKeeper dienst controleren met het volgende commando:

systemctl status zookeeper

Je zou de volgende uitvoer moeten krijgen:

? zookeeper.service - Zookeeper Daemon
     Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-09-27 06:43:28 UTC; 8s ago
       Docs: http://zookeeper.apache.org
    Process: 13915 ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg (code=exited, status=0/SUCCESS)
   Main PID: 13946 (java)
      Tasks: 37 (limit: 4691)
     Memory: 50.6M
     CGroup: /system.slice/zookeeper.service
             ??13946 java -Dzookeeper.log.dir=/opt/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-zookeeper-server-ubuntu2004.log -Dzook>

Sep 27 06:43:27 ubuntu2004 systemd[1]: Starting Zookeeper Daemon...
Sep 27 06:43:27 ubuntu2004 zkServer.sh[13915]: /usr/bin/java
Sep 27 06:43:27 ubuntu2004 zkServer.sh[13915]: ZooKeeper JMX enabled by default
Sep 27 06:43:27 ubuntu2004 zkServer.sh[13915]: Using config: /opt/zookeeper/conf/zoo.cfg
Sep 27 06:43:28 ubuntu2004 zkServer.sh[13915]: Starting zookeeper ... STARTED
Sep 27 06:43:28 ubuntu2004 systemd[1]: Started Zookeeper Daemon.

Conclusie

Gefeliciteerd! Je hebt ZooKeeper met succes geïnstalleerd en geconfigureerd op Ubuntu 20.04 server. Je kunt nu eenvoudig de gedistribueerde toepassing met ZooKeeper bouwen en uitrollen.