ZooKeeper je softwarový projekt společnosti Apache Software Foundation, který poskytuje vysoce výkonnou sdílenou datovou službu používanou k vytváření distribuovaných aplikací. Cluster jej používá k udržování sdílených dat pomocí robustních synchronizačních technik. Poskytuje jednoduché rozhraní pro správu konfiguračních informací, pojmenování, distribuovanou synchronizaci a poskytování skupinových služeb.
V tomto tutoriálu vám ukážeme, jak nainstalovat Apache ZooKeeper na server Ubuntu 20.04.
Předpoklady
- Server se systémem Ubuntu 20.04.
- Na serveru je nakonfigurováno heslo uživatele root.
Instalovat Javu
Apache ZooKeeper je napsán v Javě, takže si do svého systému budete muset Javu nainstalovat. Můžete jej nainstalovat pomocí následujícího příkazu:
apt-get install default-jdk -y
Po instalaci Javy ověřte nainstalovanou verzi Javy pomocí následujícího příkazu:
java --version
Měli byste získat následující výstup:
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)
Nainstalovat Zookeeper
Před instalací Apache zookeeper budete muset vytvořit nového uživatele pro zookeeper. Můžete jej vytvořit pomocí následujícího příkazu:
useradd zookeeper -m
Dále nastavte heslo pro tohoto uživatele a přidejte jej do skupiny sudo pomocí následujícího příkazu:
usermod --shell /bin/bash zookeeper
passwd zookeeper
usermod -aG sudo zookeeper
Dále vytvořte datový adresář pro zookeeper a změňte vlastnictví tohoto adresáře:
mkdir /zookeeper
chown -R zookeeper:zookeeper /zookeeper
Dále si budete muset stáhnout nejnovější verzi zookeeper do adresáře /opt. Můžete si jej stáhnout pomocí následujícího příkazu:
cd /opt
wget https://mirrors.estointernet.in/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
Po dokončení stahování rozbalte stažený soubor pomocí následujícího příkazu:
tar -xvzf apache-zookeeper-3.6.2-bin.tar.gz
Dále přejmenujte extrahovaný adresář na zookeeper pomocí následujícího příkazu:
mv apache-zookeeper-3.6.2-bin zookeeper
Dále změňte vlastnictví adresáře zookeeper pomocí následujícího příkazu:
chown -R zookeeper:zookeeper /opt/zookeeper
Konfigurace ZooKeeper v samostatném režimu
Dále budete muset vytvořit konfigurační soubor ZooKeeper pro nastavení ZooKeeper v samostatném režimu. Můžete jej vytvořit pomocí následujícího příkazu:
nano /opt/zookeeper/conf/zoo.cfg
Přidejte následující řádky:
tickTime=2500 dataDir=/zookeeper clientPort=2181 maxClientCnxns=80
Po dokončení uložte a zavřete soubor. Poté spusťte službu ZooKeeper pomocí následujícího příkazu:
cd /opt/zookeeper
bin/zkServer.sh start
Měli byste získat následující výstup:
ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
Ve výchozím nastavení ZooKeeper naslouchá na portu 2181. Můžete to zkontrolovat pomocí následujícího příkazu:
ss -ntpl | grep 2181
Měli byste získat následující výstup:
LISTEN 0 50 *:2181 *:* users:(("java",pid=12749,fd=53))
Nyní se můžete připojit k místnímu serveru ZooKeeper pomocí následujícího příkazu:
bin/zkCli.sh -server 127.0.0.1:2181
Po připojení byste měli získat následující výstup:
WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: 127.0.0.1:2181(CONNECTED) 0]
Nyní ukončete relaci pomocí následujícího příkazu:
quit
Dále zastavte službu ZooKeeper pomocí následujícího příkazu:
bin/zkServer.sh stop
Měli byste vidět následující výstup:
ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED
Vytvoření souboru Systemd Service pro ZooKeeper
Dále budete muset vytvořit soubor služby systemd pro správu služby ZooKeeper. Můžete jej vytvořit pomocí následujícího příkazu:
nano /etc/systemd/system/zookeeper.service
Přidejte následující řádky:
[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
Uložte a zavřete soubor a poté znovu načtěte démona systemd, abyste použili změny konfigurace:
systemctl daemon-reload
Dále změňte vlastnictví ZooKeeper a datového adresáře pomocí následujícího příkazu:
chown -R zookeeper:zookeeper /opt/zookeeper
chown -R zookeeper:zookeeper /zookeeper
Dále spusťte službu ZooKeeper a povolte její spuštění při restartu systému pomocí následujícího příkazu:
systemctl start zookeeper
systemctl enable zookeeper
Nyní můžete zkontrolovat stav služby ZooKeeper pomocí následujícího příkazu:
systemctl status zookeeper
Měli byste získat následující výstup:
? 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.
Závěr
Gratulujeme! úspěšně jste nainstalovali a nakonfigurovali ZooKeeper na serveru Ubuntu 20.04. Nyní můžete snadno sestavit a nasadit distribuovanou aplikaci pomocí ZooKeeper.