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
- Server yang menjalankan Debian 10 dengan 2GB RAM.
- Masuk sebagai root atau user dengan hak sudo
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.