ZooKeeper adalah proyek perangkat lunak oleh Apache Software Foundation yang menyediakan layanan data bersama berkinerja tinggi yang digunakan untuk membangun aplikasi terdistribusi. Ini digunakan oleh sebuah cluster untuk memelihara data bersama dengan teknik sinkronisasi yang kuat. Ini menyediakan antarmuka sederhana untuk mengelola informasi konfigurasi, penamaan, sinkronisasi terdistribusi, dan penyediaan layanan grup.
Dalam tutorial ini, kami akan menunjukkan cara menginstal Apache ZooKeeper di server Ubuntu 20.04.
Prasyarat
- Server yang menjalankan Ubuntu 20.04.
- Sandi root dikonfigurasi untuk server.
Instal Java
Apache ZooKeeper ditulis dalam Java sehingga Anda perlu menginstal Java di sistem Anda. Anda dapat menginstalnya dengan perintah berikut:
apt-get install default-jdk -y
Setelah menginstal Java, verifikasi versi Java yang diinstal dengan perintah berikut:
java --version
Anda akan mendapatkan output berikut:
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)
Instal Zookeeper
Sebelum menginstal Apache zookeeper, Anda harus membuat pengguna baru untuk zookeeper. Anda dapat membuatnya dengan perintah berikut:
useradd zookeeper -m
Selanjutnya, atur kata sandi untuk pengguna ini dan tambahkan ke grup sudo dengan perintah berikut:
usermod --shell /bin/bash zookeeper
passwd zookeeper
usermod -aG sudo zookeeper
Selanjutnya, buat direktori data untuk zookeeper dan ubah kepemilikan direktori ini:
mkdir /zookeeper
chown -R zookeeper:zookeeper /zookeeper
Selanjutnya, Anda perlu mengunduh versi terbaru dari zookeeper ke direktori /opt. Anda dapat mengunduhnya dengan perintah berikut:
cd /opt
wget https://mirrors.estointernet.in/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
Setelah unduhan selesai, ekstrak file yang diunduh dengan perintah berikut:
tar -xvzf apache-zookeeper-3.6.2-bin.tar.gz
Selanjutnya, ganti nama direktori yang diekstrak menjadi zookeeper dengan perintah berikut:
mv apache-zookeeper-3.6.2-bin zookeeper
Selanjutnya, ubah kepemilikan direktori zookeeper dengan perintah berikut:
chown -R zookeeper:zookeeper /opt/zookeeper
Konfigurasikan ZooKeeper dalam Mode Standalone
Selanjutnya, Anda perlu membuat file konfigurasi ZooKeeper untuk menyiapkan ZooKeeper dalam mode mandiri. Anda dapat membuatnya dengan perintah berikut:
nano /opt/zookeeper/conf/zoo.cfg
Tambahkan baris berikut:
tickTime=2500 dataDir=/zookeeper clientPort=2181 maxClientCnxns=80
Simpan dan tutup file setelah Anda selesai. Kemudian, mulai layanan ZooKeeper dengan perintah berikut:
cd /opt/zookeeper
bin/zkServer.sh start
Anda akan mendapatkan output berikut:
ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
Secara default, ZooKeeper mendengarkan pada port 2181. Anda dapat memeriksanya dengan perintah berikut:
ss -ntpl | grep 2181
Anda akan mendapatkan output berikut:
LISTEN 0 50 *:2181 *:* users:(("java",pid=12749,fd=53))
Anda sekarang dapat terhubung ke server lokal ZooKeeper dengan perintah berikut:
bin/zkCli.sh -server 127.0.0.1:2181
Setelah terhubung, Anda akan mendapatkan output berikut:
WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: 127.0.0.1:2181(CONNECTED) 0]
Sekarang, keluar dari sesi dengan perintah berikut:
quit
Selanjutnya, hentikan layanan ZooKeeper dengan perintah berikut:
bin/zkServer.sh stop
Anda akan melihat output berikut:
ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED
Buat File Layanan Systemd untuk ZooKeeper
Selanjutnya, Anda perlu membuat file layanan systemd untuk mengelola layanan ZooKeeper. Anda dapat membuatnya dengan perintah berikut:
nano /etc/systemd/system/zookeeper.service
Tambahkan baris berikut:
[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
Simpan dan tutup file lalu muat ulang daemon systemd untuk menerapkan perubahan konfigurasi:
systemctl daemon-reload
Selanjutnya, ubah kepemilikan ZooKeeper dan direktori data dengan perintah berikut:
chown -R zookeeper:zookeeper /opt/zookeeper
chown -R zookeeper:zookeeper /zookeeper
Selanjutnya, mulai layanan ZooKeeper dan aktifkan untuk memulai pada sistem reboot dengan perintah berikut:
systemctl start zookeeper
systemctl enable zookeeper
Anda sekarang dapat memeriksa status layanan ZooKeeper dengan perintah berikut:
systemctl status zookeeper
Anda akan mendapatkan output berikut:
? 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.
Kesimpulan
Selamat! Anda telah berhasil menginstal dan mengkonfigurasi ZooKeeper di server Ubuntu 20.04. Sekarang Anda dapat dengan mudah membangun dan menerapkan aplikasi terdistribusi dengan ZooKeeper.