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.