Hai, Sobat Jagoan! Artikel kali ini akan membahas cara instalasi Apache Kafka versi 3.8.1 dan 4.0.0. Penting untuk kamu ketahui bahwa terdapat perubahan besar pada Kafka versi terbaru (4.0.0), di mana ZooKeeper tidak lagi digunakan. Sebagai gantinya, Kafka sekarang memakai mode baru yang disebut KRaft (Kafka Raft Metadata mode), yaitu sistem penyimpanan metadata internal milik Kafka sendiri. Sementara itu, Kafka versi 3.x seperti 3.8.1 masih tetap menggunakan ZooKeeper sebagai dependensi utamanya untuk manajemen cluster.
Bagi kamu yang baru mengenal Kafka, jangan khawatir, artikel ini akan membantu kamu memahami perbedaan teknis antara dua versi tersebut, serta langkah-langkah instalasinya sesuai versi yang kamu butuhkan.
Apa itu Apache Kafka?
Apache Kafka adalah sebuah platform open-source yang dirancang untuk menangani aliran data secara real-time, cepat, dan terdistribusi. Kafka digunakan untuk mengirim, menerima, menyimpan, dan memproses data dalam jumlah besar antar layanan atau aplikasi.
Secara teknis, Kafka bekerja dengan konsep publish-subscribe, di mana ada producer (pengirim data) dan consumer (penerima data) yang berkomunikasi melalui topic (saluran data). Kafka menyimpan data tersebut dalam bentuk log yang tahan lama (durable), sehingga consumer bisa membaca ulang jika diperlukan.
Kafka banyak digunakan dalam arsitektur microservices, big data pipelines, event-driven systems, hingga sistem monitoring dan log. Kafka juga sangat scalable dan fault-tolerant, artinya dapat diandalkan untuk kebutuhan produksi besar.
Kamu perlu ketelitian dalam membaca artikelnya Sob, supaya tidak tertukar membaca konfigurasi untuk instalasi versi 3.8.1 atau 4.0.0. Info juga, produk layanan VPS Jagoan Hosting yang dipakai pada artikel ini yaitu Ubuntu versi 22.04
Step 1: Buat Koneksi SSH VPS
Pertama, buat koneksi SSH ke VPS kamu melalui terminal. Jika menggunakan sistem operasi Windows, kamu bisa menggunakan PuTTY.
Step 2: Membuat Pengguna untuk Kafka
Sebelum mulai instalasi, update list package dan perbarui package lama ke versi terbaru dulu.
sudo apt update && sudo apt upgrade -y
Server Kafka sebaiknya dijalankan dengan user khusus demi alasan keamanan dan manajemen yang baik.
sudo adduser kafka
Selanjutnya, ikuti setiap pop-up untuk mengisi informasi user ‘kafka’ tersebut, seperti password dan detail lainnya.
Agar user kafka bisa menjalankan perintah dengan hak akses administrator (sudo), tambahkan user ‘kafka’ ke group sudo. Karena membutuhkan privileges admin untuk menginstal dependensi kafka.
sudo adduser kafka sudo
Lalu masuk sebagai user kafka dengan command:
su -l kafka
Fyi, tujuan menggunakan user khusus (kafka) agar instalasi dan file Kafka tidak bercampur dengan user utama. Ini juga memudahkan proses troubleshooting.
Step 3: Install Java
Kalau kamu belum menginstal JDK Java command ini akan menampilkan saran instalasi versi Java yang dibutuhkan untuk menjalankan Kafka. Tapi, kalau sudah instal Java akan menampilkan versi Java yang terinstal.
java -version
Kafka umumnya membutuhkan Java JDK versi 11 atau versi diatasnya. Untuk menginstalnya, jalankan:.
sudo apt install openjdk-11-jdk -y
ATAU kalau mau menginstal versi JDK yang direkomendasikan secara default oleh sistem:
sudo apt install default-jdk -y
Tapi kalau instal Kafka versi 4.0.0 instal jdk versi 17 ya, Sob!
sudo apt install openjdk-17-jdk -y
Step 4: Download dan Ekstrak Kafka
Setelah berhasil membuat user untuk Kafka dan instal JDK Java, buat direktori Downloads untuk menyimpan file Kafka.
mkdir ~/Downloads
Lalu, unduh kafka dengan command:
Versi 3.8.1
curl -L https://dlcdn.apache.org/kafka/3.8.1/kafka_2.12-3.8.1.tgz -o ~/Downloads/kafka.tgz
Versi 4.0.0
curl -L "https://downloads.apache.org/kafka/4.0.0/kafka_2.13-4.0.0.tgz" -o ~/Downloads/kafka.tgz
Perintah tersebut akan mendownload file berformat .tgz. Kamu bisa mengecek situs resmi Kafka untuk melihat rilis Kafka jika diperlukan.
Selanjutnya, buat direktori instalasi Kafka dan masuk ke dalamnya.
mkdir ~/kafka && cd ~/kafka
Ekstrak file download kafka tadi ke dalam direktori ini.
tar -xvzf ~/Downloads/kafka.tgz --strip 1
Command –strip 1 digunakan agar isi file langsung diekstrak ke dalam folder ~/kafka dan tidak membuat folder tambahan
Step 5: Konfigurasi Server Kafka
Edit file konfigurasi utama Kafka.
sudo nano ~/kafka/config/server.properties
Lakukan modifikasi berikut:
- Aktifkan opsi penghapusan topik Kafka (opsional tapi disarankan untuk development)
delete.topic.enable = true

- Ubah direktori penyimpanan log Kafka dari /tmp ke lokasi yang lebih permanen. Karena Kafka menyimpan semua pesan di folder log. Jika kamu menggunakan folder /tmp, data bisa hilang saat reboot karena itu adalah direktori sementara.
log.dirs= /home/kafka/logs

- Kalau kamu instal Kafka versi 4.0.0 kamu periksa juga bagian ini, pastikan ada seperti ini. Kalau tidak ada kamu tambahkan didalam server.properties
process.roles=broker,controller
node.id=1
controller.quorum.voters=1@localhost:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
Sampai di sini, kamu sudah mengkonfigurasi kafka dan membuat unit file systemd untuk menjalankan dan mengijinkan Kafka server.
Step 6: Membuat File Unit systemd untuk Kafka dan ZooKeeper
Sebelum Kafka bisa berjalan, kamu perlu menjalankan ZooKeeper. Karena Kafka bergantung padanya (kecuali jika menggunakan metode KRaft pada versi terbaru). Metode ZooKeeper ini lebih umum untuk pemula.
Catatan: Untuk versi 4.0.0 kamu bisa menggunakan metode KRaft, jadi lewati saja langkah terkait ZooKeeper, langsung jalankan command untuk membuat file systemd service untuk kafka. Lihat caranya ada di bawah konfigurasi ZooKeeper ini.
Buat unit zookeeper dengan command:
sudo nano /etc/systemd/system/zookeeper.service
Lalu masukkan kode berikut di dalamnya:
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=kafka
ExecStart=/home/kafka/kafka/bin/zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties
ExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

Unit di atas mendefinisikan bagaimana ZooKeeper dijalankan sebagai layanan. Restart=on-abnormal memastikan ZooKeeper akan restart kalau terjadi crash.
CTRL+X, Y lalu ENTER untuk menyimpan.
Agar perubahan di ZooKeeper dapat dibaca jalankan command:
sudo systemctl daemon-reload
Kemudian jalankan command berikut untuk membuat file systemd service untuk Kafka:
sudo nano /etc/systemd/system/kafka.service
Dan masukkan kode berikut ini.
[Service]
Type=simple
User=kafka
ExecStart=/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties
ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
StandardError=journal
[Install]
WantedBy=multi-user.target

Langkah UUID ini hanya untuk versi 4.0.0
Kemudian, jalankan command berikut ini untuk inisialisasi cluster dan buat UUID.
./bin/kafka-storage.sh random-uuid
Copy ke text editor kode UUID yang dihasilkan.
Jika sudah, jalankan command untuk memformat direktori log Kafka dengan UUID tersebut dan membuatnya siap digunakan.
./bin/kafka-storage.sh format -t paste-kode-UUID-disini -c config/ server.properties
Command di bawah ini untuk menerapkan perubahan pada ZooKeeper dan systemd.
sudo systemctl daemon-reload
Step 7: Menjalankan Kafka dan ZooKeeper (kalau pakai KRaft lewati langkah terkait ZooKeeper)
Untuk menjalankan Kafka, pertama kamu harus memulai ZooKeeper dulu dan pastikan statusnya.
sudo systemctl start zookeeper
sudo systemctl status zookeeper
Outputnya:
Berikutnya jalankan Kafka dengan command:
sudo systemctl start kafka
sudo systemctl status kafka
Kamu akan mendapatkan output seperti berikut.
Kafka berhasil berjalan, ia aktif dan listen di port 9092.
Supaya Kafka dan ZooKeeper otomatis dijalankan ketika server mengalami reboot, jalankan command:
sudo systemctl enable zookeeper
sudo systemctl enable kafka
Outputnya akan seperti:
$ sudo systemctl enable zookeeper
Created symlink /etc/systemd/system/multi-user.target.wants/zookeeper.service → /etc/systemd/system/zookeeper.service.
$ sudo systemctl enable kafka
Created symlink /etc/systemd/system/multi-user.target.wants/kafka.service → /etc/systemd/system/kafka.service.
Step 8: Memeriksa Hasil Instalasi Kafka
Membuat topik baru karena di Kafka menggunakan topik untuk mengelompokkan pesan.
Buat topik bernama TutorialTopic dengan command:
~/kafka/bin/kafka-topics.sh --create \
--bootstrap-server localhost:9092 \
--replication-factor 1 \
--partitions 1 \
--topic TutorialTopic
Kirim pesan pertama ke Kafka
Sekarang publish string ‘Hello World’ ke TutorialTopic artinya ini mengirimkan pesan ke Kafka.
echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic TutorialTopic > /dev/null
Terima pesan pertama
Selanjutnya buka terminal baru (masih user sebagai kafka). Terminal ini akan menerima pesan Kafka disebut sebagai terminal konsumer. Kalau menggunakan koneksi SSH VPS di PuTTY kamu tinggal klik kanan dibagian atas pada terminal aktif saat ini > pilih New session dan jalankan:
~/kafka/bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic TutorialTopic \
--from-beginning
Kamu akan melihat output:
Kirim pesan kedua
Tes lagi dengan kembali ke terminal pertama dan jalankan:
echo "Hello World from Jagoan Hosting!" | ~/kafka/bin/kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic TutorialTopic > /dev/null
Kalau berhasil output di terminal kedua (consumer) seperti berikut ini.
Tekan CTRL+C untuk berhenti menerima pesan.
Selamat! Kamu telah berhasil menginstal dan menjalankan Apache Kafka secara manual. Kafka sekarang siap digunakan untuk belajar sistem streaming data real-time. Kalau ada yang masih bikin bingung, jangan ragu hubungi Tim Support Jagoan Hosting ya, Sob!
Hai, Sob! Buat kamu yang udah kepo sama cara pantau monitoring kinerja VPS kamu, yuk ikutin tutorialnya dibawah ini.Tapi, sebenernya Read more
Hai, Sob, kamu suka bingung gimana caranya migrasi file server website ke VPS tanpa cPanel? Yuk, kamu harus banget pantengin Read more
Kamu ingin melakukan login SSH secara otomatis? Gak perlu bingung karena kamu bisa ikutin tutorial di bawah ini untuk melakukan Read more
Hai, Sob! Tahukah kamu, Mengamankan akses ke VPS kamu sangat penting tak terkecuali untuk akses dari SSH. Wah, gimana tuh Read more