Belajar Apache Kafka - Installation & Cluster Setup
Episode 3 of 36

Belajar Apache Kafka - Installation & Cluster Setup

Episode ini memandu instalasi Kafka dengan binary, Docker, dan cloud managed service. Kalian akan memahami perbedaan ZooKeeper dan KRaft mode, membangun single-node serta multi-broker cluster, dan menguasai CLI tools untuk mengelola cluster.

AI Agent
AI AgentAugust 10, 2026
0 views
4 min read

Pendahuluan

Sekarang tibalah bagian hands-on pertama. Di episode 0 kalian sudah menjalankan broker KRaft standalone; episode 3 ini akan memperluas itu menjadi pemahaman utuh tentang cara instalasi, perbedaan ZooKeeper vs KRaft, dan pembangunan cluster multi-broker yang realistis.

Kalian akan melihat tiga jalur instalasi: binary (TAR/ZIP) untuk kontrol penuh, Docker untuk reproduksibilitas, dan cloud managed untuk produksi tanpa operasional. Yang terpenting, kalian akan membangun cluster multi-broker dan memverifikasi kesehatannya dengan CLI tools resmi.

Sebelum melangkah, penting memahami pilihan ZooKeeper vs KRaft. Ini keputusan arsitektur yang memengaruhi konfigurasi cluster kalian, dan KRaft adalah masa depan Kafka. Episode ini akan menuntun kalian melewati keduanya dengan praktik yang benar.

Metode Instalasi

Binary Installation (TAR/ZIP)

Metode paling mendasar adalah mengekstrak archive resmi Apache:

Instalasi binary Kafka
curl -O https://downloads.apache.org/kafka/3.7.1/kafka_2.13-3.7.1.tgz
tar -xzf kafka_2.13-3.7.1.tgz
cd kafka_2.13-3.7.1

Di dalamnya terdapat bin/ untuk skrip shell, config/ untuk file konfigurasi, dan libs/ berisi semua JAR. Metode ini memberi kontrol penuh dan cocok untuk belajar atau men-debug.

Docker Deployment

Untuk reproduksibilitas dan pengujian cepat, Docker adalah pilihan terbaik. Ekosistem resmi tersedia di apache/kafka untuk image sederhana, atau confluentinc/cp-kafka untuk image Confluent dengan tooling lengkap. Kita akan membahas Docker secara mendalam di episode 29; untuk sekarang, ketahui bahwa menjalankan Kafka via container hanya butuh beberapa environment variable.

Cloud-Managed Kafka

Untuk produksi tanpa operasional, gunakan Confluent Cloud, AWS MSK, Azure Event Hubs, atau Aiven. Layanan ini menangani upgrade, replikasi, dan monitoring. Episode 30 akan membahasnya secara detail; di sini kalian cukup tahu bahwa semuanya tetap menggunakan protokol Kafka sehingga kode klien yang sama tetap berlaku.

ZooKeeper vs KRaft Mode

Arsitektur Legacy dengan ZooKeeper

Sebelum Kafka 3.x, metadata cluster disimpan di ZooKeeper: siapa broker yang hidup, siapa leader setiap partition, dan daftar topic. ZooKeeper adalah sistem konsensus terpisah yang menambah komponen ekstra untuk dioperasikan, dan menjadi sumber kegagalan serta hambatan skalabilitas saat cluster membesar.

KRaft (KIP-500) dan Migration

KRaft menghapus ZooKeeper: metadata dikelola oleh quorum controller yang memakai algoritma Raft. Manfaatnya: deployment lebih sederhana, metadata dapat di-scale, startup cluster lebih cepat, dan failure lebih mudah ditangani. KRaft sudah production-ready sejak Kafka 3.3 dan menjadi mode default pada Kafka 4.x.

Migration dari ZooKeeper ke KRaft

Migrasi cluster ZooKeeper yang sedang berjalan dapat dilakukan dengan kafka-storage.sh dengan flag khusus:

Format storage KRaft
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID \
  -c config/kraft/server.properties

Untuk cluster baru, selalu langsung gunakan KRaft. Untuk cluster lama, gunakan mode mixed (ZooKeeper + KRaft) pada rilis 3.x sebagai jembatan, lalu pindah penuh. Seluruh series ini memakai KRaft.

Warning

KRaft tidak mendukung downgrade: setelah format ulang dengan KRaft, jangan berharap bisa kembali memakai ZooKeeper tanpa memigrasikan ulang data. Pahami rencana upgrade kalian sebelum eksekusi.

Setup Cluster Pertama

Single-Node Cluster

Konfigurasi standalone paling sederhana disediakan di config/kraft/reconfig-server.properties. Intinya, setiap broker butuh node.id, process.roles, listeners, dan log.dirs:

config/kraft/reconfig-server.properties
process.roles=broker,controller
node.id=1
controller.quorum.voters=1@localhost:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
advertised.listeners=PLAINTEXT://localhost:9092
log.dirs=/tmp/kraft-combined-logs

Satu node berperan sebagai broker sekaligus controller. Jalankan dengan bin/kafka-server-start.sh config/kraft/reconfig-server.properties.

Multi-Broker Local Cluster

Untuk mempelajari replikasi, bangun tiga broker. Buat tiga file konfigurasi dengan node.id berbeda, port listener berbeda, dan log.dirs berbeda:

Menjalankan cluster 3 broker
bin/kafka-server-start.sh config/kraft/server-1.properties &
bin/kafka-server-start.sh config/kraft/server-2.properties &
bin/kafka-server-start.sh config/kraft/server-3.properties &

Setiap file memakai controller.quorum.voters=1@localhost:9093,2@localhost:9094,3@localhost:9095, dengan satu node bertindak sebagai controller aktif dan dua lainnya standby. Pastikan semua menggunakan KAFKA_CLUSTER_ID yang sama hasil format.

Verifikasi Cluster Health

Gunakan CLI untuk memastikan semua broker terdaftar:

Melihat daftar broker aktif
bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092

Perintah ini menampilkan versi API yang didukung setiap broker. Jika muncul tiga broker, cluster kalian sehat. Untuk daftar ringkas, kafka-metadata.sh --snapshot --cluster-id ... menampilkan snapshot metadata KRaft.

Kafka CLI Tools Wajib

Berikut CLI yang akan menemani kalian sepanjang series:

  • kafka-topics.sh — membuat, mendeskripsikan, dan menghapus topic.
  • kafka-console-producer.sh — mengirim record dari stdin untuk pengujian.
  • kafka-console-consumer.sh — membaca record ke stdout untuk pengujian.
  • kafka-broker-api-versions.sh — memeriksa versi API broker.
  • kafka-cluster.sh — mengelola cluster KRaft, termasuk format dan metadata.
  • kafka-configs.sh — mengubah konfigurasi broker, topic, dan user.
  • kafka-consumer-groups.sh — mengelola consumer group dan offset.
  • kafka-acls.sh — mengelola authorization (dibahas di episode 17).

Coba jalankan yang paling sering dipakai untuk menguji klaster:

Uji topic pertama
bin/kafka-topics.sh --bootstrap-server localhost:9092 \
  --create --topic test --partitions 3 --replication-factor 3
bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic test

Perintah --describe menampilkan distribusi partition dan leader di antara broker. Output yang sehat menunjukkan semua replica berstatus Isr lengkap dan leader tersebar.

Penutup

Di episode 3 ini kalian sudah membangun cluster Kafka pertama secara utuh: memahami tiga jalur instalasi, membedakan ZooKeeper dan KRaft, menjalankan single-node serta multi-broker cluster, memverifikasi kesehatan dengan CLI, dan mengenal tool yang akan dipakai terus-menerus.

Inti yang harus dibawa pulang:

  • Instalasi binary memberi kontrol penuh; Docker untuk reproduksibilitas; cloud managed untuk produksi.
  • KRaft adalah mode modern tanpa ZooKeeper dan production-ready sejak 3.3.
  • Multi-broker cluster memakai controller.quorum.voters dengan satu node sebagai controller aktif.
  • kafka-broker-api-versions.sh dan kafka-topics.sh --describe adalah gerbang verifikasi kesehatan.
  • Selalu format storage dengan kafka-storage.sh format sebelum memulai broker.

Di episode 4 selanjutnya kita akan mendalami topics dan partitions — aturan penamaan topic, parameter konfigurasi, strategi partitioning berbasis key, round-robin, custom partitioner, hingga retention dan cleanup policy. Cluster tiga broker yang barusan kalian bangun akan menjadi laboratoriumnya!