Apache Zookeeper adalah layanan free and open-source untuk sistem terdistribusi yang membantu Anda mengelola sejumlah besar host. Zookeeper adalah layanan terpusat yang digunakan untuk memelihara informasi terkait konfigurasi, penamaan dan layanan grup.

Apache Zookeeper ditulis dalam bahasa pemrograman Java dan memungkinkan pengembang untuk fokus pada membangun fitur perangkat lunak tanpa khawatir tentang sifat terdistribusi aplikasi. Apache ZooKeeper paling sering digunakan dalam beban kerja “read-dominant” di mana proses membaca data jauh lebih umum daripada menulis data.

Muncul dengan serangkaian fitur yang kaya termasuk, Synchronization, Ordered Messages, Serialization, Reliability, Atomicity, Fast Processing dan banyak lagi. Apache Zookeeper memiliki mekanisme penguncian dan sinkronisasi yang membantu Anda dalam fail recovery secara otomatis saat terhubung dengan aplikasi terdistribusi lainnya. Proyek Zookeeper adalah salah satu proyek paling sukses dari yayasan Apache. Banyak perusahaan mengadopsi Zookeeper untuk menciptakan sistem terdistribusi yang tersedia dalam skala besar.

Dalam tutorial ini, kami akan menunjukkan kepada Anda cara mengatur cluster single-node Apache Zookeeper pada server Debian 10.

Persyaratan Tutorial

Sebelum Mulai

Pertama, disarankan untuk memperbarui sistem Anda dengan versi terbaru. Anda dapat melakukannya dengan menjalankan perintah berikut:

sudo apt update && sudo apt upgrade -y

Setelah sistem diperbarui, restart sistem untuk menerapkan perubahan konfigurasi.

Install Java

Apache Zookeeper adalah aplikasi berbasis Java. Jadi, Kita perlu install Java ke sistem. Secara default, versi terbaru Java tersedia di repositori default Debian 10. Anda dapat menginstalnya dengan menjalankan perintah berikut:

apt-get install default-jdk -y

Setelah instalasi selesai, periksa versi Java dengan perintah berikut:

java --version

output :

openjdk 11.0.5 2019-10-15
OpenJDK Runtime Environment (build 11.0.5+10-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Debian-1deb10u1, mixed mode, sharing)

Setelah selesai, Anda dapat melanjutkan untuk membuat system user untuk Zookeeper.

Buat System User untuk Zookeeper

Merupakan ide bagus untuk membuat user yang tugasnya hanya untuk menjalankan layanan Zookeeper. Ini akan meningkatkan keamanan dan mempermudah pengelolaan.

Pertama, jalankan perintah berikut untuk membuat user zookeeper dengan direktori home:

useradd zookeeper -m

Selanjutnya, atur shell default untuk user zookeeper menggunakan perintah berikut:

usermod --shell /bin/bash zookeeper

Selanjutnya, tetapkan kata sandi untuk user zookeeper menggunakan perintah berikut:

passwd zookeeper

Selanjutnya, tambahkan user zookeeper ke grup sudo:

usermod -aG sudo zookeeper

Pada titik ini, Anda telah membuat dan mengonfigurasi user Zookeeper. Anda sekarang dapat melanjutkan untuk download Zookeeper.

Download Zookeeper

Pertama, download versi terbaru dari Apache Zookeeper dari situs resminya. Pada saat menulis artikel ini, versi terbaru dari Apache Zookeeper adalah 3.5.6.

Untuk download, ubah direktori ke /opt dan jalankan perintah wget berikut:

cd /opt
 wget https://archive.apache.org/dist/zookeeper/stable/apache-zookeeper-3.5.6-bin.tar.gz

Setelah download selesai, ekstrak file yang diunduh dengan perintah berikut:

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

Selanjutnya, ganti nama direktori yang diekstrak dengan perintah mv menjadi zookeeper dan berikan izin yang tepat:

mv apache-zookeeper-3.5.6-bin zookeeper
chown -R zookeeper:zookeeper /opt/zookeeper

Selanjutnya, kita perlu membuat direktori data untuk Zookeeper untuk menyimpan semua data konfigurasi dan status. Anda dapat membuatnya di sistem file lokal atau sistem file jarak jauh sesuai kebutuhan.

Anda dapat membuat direktori data menggunakan perintah berikut:

mkdir -p /data/zookeeper

Selanjutnya, ubah kepemilikan direktori data menjadi pengguna zookeeper:

chown -R zookeeper:zookeeper /data/zookeeper

Pada titik ini, Anda telah mengunduh Zookeeper dan membuat direktori data untuknya. Anda sekarang dapat melanjutkan untuk mengkonfigurasi Zookeeper.

Konfigurasi Zookeeper

Zookeeper dan semua file konfigurasi terletak di dalam direktori /opt/zookeeper/conf/. Anda dapat membuat file konfigurasi Zookeeper di dalam direktori /opt/zookeeper/conf/ menggunakan perintah berikut:

nano /opt/zookeeper/conf/zoo.cfg

tambahkan baris berikut :

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

Simpan dan tutup setelah selesai.

Penjelasan untuk Perintah di atas

  • tickTime: Opsi ini mengatur panjang tick dalam milliseconds.
  • dataDir: Direktori data untuk menyimpan data Zookeeper.
  • clientPort: Tentukan port yang digunakan untuk listen koneksi klien.
  • maxClientCnxns: Digunakan untuk membatasi jumlah maksimum koneksi klien.

Catatan: Parameter di atas untuk pengembangan dan pengujian. Anda dapat mengubahnya sesuai dengan kebutuhan Anda.

Pada titik ini, Anda telah mengonfigurasi Zookeeper. Anda sekarang dapat siap untuk memulai server Zookeeper.

Mulai dan Uji Server Zookeeper

Anda dapat memulai server Zookeeper menggunakan perintah berikut:

/opt/zookeeper/bin/zkServer.sh start

Anda akan mendapatkan output berikut:

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

Selanjutnya, Anda dapat terhubung ke server Zookeeper pada port 2181 menggunakan perintah berikut:

/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181

Setelah terhubung, Anda akan melihat output berikut:

[zk: 127.0.0.1:2181(CONNECTED) 0]

Selanjutnya, jalankan perintah help untuk mendapatkan daftar perintah yang dapat Anda jalankan dari klien.

[zk: 127.0.0.1:2181(CONNECTED) 0] help

Anda akan melihat output berikut:

ZooKeeper -server host:port cmd args
	addauth scheme auth
	close 
	config [-c] [-w] [-s]
	connect host:port
	create [-s] [-e] [-c] [-t ttl] path [data] [acl]
	delete [-v version] path
	deleteall path
	delquota [-n|-b] path
	get [-s] [-w] path
	getAcl [-s] path
	history 
	listquota path
	ls [-s] [-w] [-R] path
	ls2 path [watch]
	printwatches on|off
	quit 
	reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
	redo cmdno
	removewatches path [-c|-d|-a] [-l]
	rmr path
	set [-s] [-v version] path data
	setAcl [-s] [-v version] [-R] path acl
	setquota -n|-b val path
	stat [-w] path
	sync path

Setelah pengujian, keluar dari sesi klien menggunakan perintah berhenti:

[zk: 127.0.0.1:2181(CONNECTED) 0] quit

Anda sekarang dapat menghentikan layanan Zookeeper dengan perintah berikut:

/opt/zookeeper/bin/zkServer.sh stop

Anda akan melihat output berikut:

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

Pada titik ini, Anda telah berhasil start dan menguji server Zookeeper.

Buat File Systemd untuk Zookeeper

Selanjutnya, Anda perlu membuat file systemd service untuk mengelola layanan Zookeeper menggunakan systemd.

Buka text editor nano  dan buat file zookeeper.service 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 setelah Anda selesai. Kemudian, reload systemd daemon dengan perintah berikut:

systemctl daemon-reload

Selanjutnya, start layanan Zookeeper dan aktifkan untuk memulai setelah sistem reboot menggunakan perintah berikut:

systemctl start zookeeper
 systemctl enable zookeeper

Kemudian, verifikasi status Zookeper menggunakan perintah berikut :

systemctl status zookeeper

Anda akan melihat output berikut:

? zookeeper.service - Zookeeper Daemon
   Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-12-29 15:12:39 UTC; 8min ago
     Docs: http://zookeeper.apache.org
  Process: 9229 ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg (code=exited, status=0/SUCCESS)
 Main PID: 9245 (java)
    Tasks: 29 (limit: 2359)
   Memory: 49.7M
   CGroup: /system.slice/zookeeper.service
           ??9245 java -Dzookeeper.log.dir=/opt/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-zookeeper-server-debian10.log -Dzookeeper.

Dec 29 15:12:38 debian10 systemd[1]: Starting Zookeeper Daemon...
Dec 29 15:12:38 debian10 zkServer.sh[9229]: /usr/bin/java
Dec 29 15:12:38 debian10 zkServer.sh[9229]: ZooKeeper JMX enabled by default
Dec 29 15:12:38 debian10 zkServer.sh[9229]: Using config: /opt/zookeeper/conf/zoo.cfg
Dec 29 15:12:39 debian10 zkServer.sh[9229]: Starting zookeeper ... STARTED
Dec 29 15:12:39 debian10 systemd[1]: Started Zookeeper Daemon.

Sekarang, Anda dapat dengan mudah mengelola layanan Zookeeper dengan systemd.

Kesimpulan

Selamat! Anda telah berhasil install dan konfigurasi Zookeeper cluster single node di server Debian 10. Pengaturan ini sangat berguna untuk lingkungan pengembangan dan pengujian.