een Apache ZooKeeper Cluster opzetten op Ubuntu 18.04 LTS

Zookeeper is een gecentraliseerde dienst voor het beheer van configuratie-informatie, naamgeving, gedistribueerde synchronisatie, en beschikbaarstelling van groepsdiensten, die als open source software wordt uitgegeven. Het is geschreven in een Java taal die je in staat stelt je op de kern van de toepassingslogica te concentreren zonder je zorgen te maken over het gedistribueerde karakter van de toepassing. ZooKeeper’s architectuur ondersteunt hoge beschikbaarheid door redundante diensten. Zookeeper stelt gedistribueerde processen in staat om met elkaar te coördineren via een gemeenschappelijke hiërarchische naamruimte van gegevensregisters. Zookeeper biedt zijn klanten ook hoge doorvoer, hoge beschikbaarheid, lage latency en strikt gecontroleerde toegang tot de Znodes. Zookeeper is speciaal ontworpen om statusinformatie, configuraties, locatie-informatie, en meer op te slaan. ZooKeeper biedt veel eigenschappen zoals een betrouwbaar systeem, eenvoudige architectuur, snelle verwerking, schaalbaarheid en nog veel meer.

In deze handleiding leren we hoe je een Apache ZooKeeper Cluster met enkele knooppunten kunt opzetten op Ubuntu 18.04.

Vereisten

  • Een server met Ubuntu 18.04.
  • Een root wachtwoord is ingesteld op je server.

Aan de slag

Eerst moet je je systeem updaten met de nieuwste versie. Je kunt dit doen door het volgende commando uit te voeren:

apt-get update -y
apt-get upgrade -y

Als het systeem bijgewerkt is, herstart je je systeem om alle veranderingen toe te passen.

Installeer Java

Zookeeper is geschreven in Java. Je zult dus Java op je systeem moeten installeren. Standaard is de nieuwste versie van Java niet beschikbaar in de Ubuntu 18.04 standaard repository. Voeg dus de Java repository toe met het volgende commando:

add-apt-repository ppa:linuxuprising/java

Werk vervolgens de repository bij en installeer Java met het volgende commando:

apt-get update -y
apt-get install oracle-java11-set-default

Als Java geïnstalleerd is, kun je de Java versie controleren met het volgende commando:

java --version

Je zou de volgende uitvoer moeten zien:

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)

Als je klaar bent, kun je verder gaan met de volgende stap.

Maak een ZooKeeper gebruiker

Vervolgens moet je een zookeeper gebruiker aanmaken om de zookeeper dienst te draaien.

Maak eerst een zookeeper gebruiker aan met het volgende commando:

useradd zookeeper -m
usermod --shell /bin/bash zookeeper

Stel vervolgens een wachtwoord in met het volgende commando:

passwd zookeeper

Voeg de zookeeper gebruiker vervolgens toe aan de sudo groep, zodat hij commando’s in een bevoorrechte modus kan uitvoeren:

usermod -aG sudo zookeeper

Na het aanmaken van de gebruiker kun je verder gaan met de installatie van ZooKeeper.

Installeer ZooKeeper

ZooKeeper slaat alle configuratie- en toestandsgegevens op schijf op. Je moet dus een mappenstructuur voor ZooKeeper maken met het volgende commando:

mkdir -p /data/zookeeper

Geef vervolgens het juiste eigendom aan de map /data met het volgende commando:

chown -R zookeeper:zookeeper /data/zookeeper

Verander vervolgens de directory in de /opt en download de nieuwste versie van ZooKeeper met het volgende commando:

cd /opt
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

Pak vervolgens het gedownloade bestand uit met het volgende commando:

tar -xvzf zookeeper-3.4.9.tar.gz

Hernoem vervolgens het uitgepakte binary met het volgende commando:

mv zookeeper-3.4.9 zookeeper

Geef vervolgens het eigendom aan de ZooKeeper gebruiker met het volgende commando:

chown -R zookeeper:zookeeper /opt/zookeeper

Configureer ZooKeeper

Vervolgens moet je een configuratiebestand voor ZooKeeper maken. Je kunt dat doen met het volgende commando:

nano /opt/zookeeper/conf/zoo.cfg

Voeg de volgende regels toe:

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

Bewaar en sluit het bestand, als je klaar bent.

Start vervolgens de ZooKeeper dienst met het volgende commando:

cd /opt/zookeeper
bin/zkServer.sh start

Je zou de volgende uitvoer moeten zien:

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

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

bin/zkCli.sh -server 127.0.0.1:2181

Als je met succes verbinding gemaakt hebt, zou je de volgende uitvoer moeten zien:

[zk: 127.0.0.1:2181(CONNECTED) 1] 

Typ nu help op de prompt, je zou de een lijst moeten zien van commando’s die je vanaf de client kunt uitvoeren.

help
ZooKeeper -server host:port cmd args
	stat path [watch]
	set path data [version]
	ls path [watch]
	delquota [-n|-b] path
	ls2 path [watch]
	setAcl path acl
	setquota -n|-b val path
	history 
	redo cmdno
	printwatches on|off
	delete path [version]
	sync path
	listquota path
	rmr path
	get path [watch]
	create [-s] [-e] path data acl
	addauth scheme auth
	quit 
	getAcl path
	close 
	connect host:port

Typ nu quit om de verbonden sessie te verlaten.

Je kunt de ZooKeeper stoppen 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 service bestand maken om de ZooKeeper dienst te beheren. Je kunt dat doen 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, als je klaar bent.

Herlaad vervolgens de systemd daemon, start de ZooKeeper dienst en zet hem aan om bij het opstarten te starten met het volgende commando:

systemctl daemon-reload
systemctl start zookeeper
systemctl enable zookeeper

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

systemctl status zookeeper

Je zou de volgende uitvoer moeten zien:

? 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
     Docs: http://zookeeper.apache.org
  Process: 3909 ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg (code=exited, status=0/SUCCESS)
 Main PID: 3926 (java)
    Tasks: 17 (limit: 1113)
   CGroup: /system.slice/zookeeper.service
           ??3926 java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /opt/zookeeper/bin/../build/classes:/opt/zookeeper/bin/..

Mar 06 15:03:00 ubuntu1804 systemd[1]: Starting Zookeeper Daemon...
Mar 06 15:03:00 ubuntu1804 zkServer.sh[3909]: ZooKeeper JMX enabled by default
Mar 06 15:03:00 ubuntu1804 zkServer.sh[3909]: Using config: /opt/zookeeper/conf/zoo.cfg
Mar 06 15:03:01 ubuntu1804 zkServer.sh[3909]: Starting zookeeper ... STARTED
Mar 06 15:03:01 ubuntu1804 systemd[1]: Started Zookeeper Daemon.

Gefeliciteerd! je hebt met succes ZooKeeper single node cluster geïnstalleerd en geconfigureerd op Ubuntu 18.04 server. Je kunt nu multi-node ZooKeeper cluster inzetten voor productie. Voel je vrij om me te vragen als je vragen hebt.