Setelah melalui beberapa tahap googling, akhirnya saya berhasil menemukan penyebabnya. Yaitu:
- Node 1 adalah GroupCoordinator, dimana itu berarti ia adalah node yang bekerja sebagai leader, mengatur node lainnya (follower) dalam menangani topic sebagai sebuah cluster, dalam hal ini adalah proses yang dilakukan oleh Producer dan Consumer.
- Seharusnya, pada saat sebuah GroupCoordinator mati, ZooKeeper akan melakukan reassignment tugas leader dari node tersebut ke node lainnya. Namun, hal ini tidak terjadi sehingga Consumer gagal mendapatkan data karena cluster tidak memiliki leader.
Kafka memiliki sebuah topic yang di-generate secara otomatis, yaitu __consumer_offsets yang berada di GroupCoordinator dan topic ini diperlukan agar Kafka dapat bekerja dengan normal. Namun ternyata, secara default, replication factor Kafka Topic adalah 1. Termasuk dalam hal ini adalah topic __comsumer_offsets tersebut. Dengan demikian, apabila GroupCoordinator mati, maka Kafka tidak dapat bekerja karena tidak ada topic tersebut di node lainnya.
Untuk mengecek topic __consumer_offsets
kafka_dir/bin/kafka-topics.sh --describe --zookeeper ip_address:port --topic __consumer_offsets
Oleh karena itu, untuk menangani error tersebut di atas, cukup dengan mereplikasi topic __consumer_offsets, langkahnya:
- Matikan semua node Kafka
kafka_dir/bin/kafka-server-stop.sh - Tambahkan konfigurasi default replication factor
nano kafka_dir/config/server.properties
Tambahkan baris berikut:
offsets.topic.replication.factor=3
default.replication.factor=3 - Konfigurasi ulang topic __consumer_offsetsMasuk ke server Zookeeper
zookeeper_dir/zkCli.sh -server localhost:2181
rmr /brokers/topics/__consumer_offsets
Pada versi ZooKeeper terbaru
deleteall /brokers/topics/__consumer_offsets - Restart semua node Kafka
kafka_dir/bin/kafka-server-start.sh kafka_dir/config/server.properties
Tidak ada komentar:
Posting Komentar