No Docker, No Problem: Run Apache Kafka on Windows
Apache Kafka adalah platform streaming peristiwa terdistribusi yang kuat dan populer, sering digunakan untuk membangun saluran data real-time dan aplikasi streaming. Biasanya, orang-orang langsung berpikir tentang Docker dan lingkungan Linux saat membicarakan Kafka. Namun, bagaimana jika Anda seorang pengembang Windows dan ingin bereksperimen dengan Kafka tanpa kerumitan Docker? Jangan khawatir! Artikel ini akan memandu Anda melalui proses menjalankan Apache Kafka di Windows tanpa Docker, langkah demi langkah.
Why Run Kafka on Windows Without Docker?
Meskipun Docker menyediakan cara mudah untuk menyebarkan Kafka, ada beberapa alasan mengapa Anda mungkin ingin menjalankannya secara langsung di Windows:
- Belajar dan Pengembangan: Untuk pengembang yang bekerja di Windows, menjalankan Kafka secara lokal tanpa Docker menyederhanakan proses belajar dan pengembangan. Anda tidak perlu bergulat dengan virtualisasi atau manajemen kontainer.
- Sumber Daya Sistem: Docker dapat memerlukan overhead sumber daya, terutama pada mesin yang lebih lama. Menjalankan Kafka langsung di Windows dapat menghasilkan kinerja yang lebih baik dalam beberapa kasus.
- Integrasi dengan Lingkungan Windows: Jika aplikasi Anda terutama berjalan di Windows, menjalankan Kafka secara lokal memfasilitasi integrasi dan pengujian yang lebih mudah.
- Memahami Komponen: Menyiapkan Kafka secara manual membantu Anda memahami komponen dan konfigurasi yang mendasarinya.
Prerequisites
Sebelum kita mulai, pastikan Anda memiliki prasyarat berikut yang terinstal di sistem Windows Anda:
- Java Development Kit (JDK): Kafka ditulis dalam Java, jadi Anda memerlukan JDK yang kompatibel. Kami merekomendasikan menggunakan JDK 8 atau yang lebih baru.
- Apache Kafka: Unduh distribusi biner Kafka terbaru dari situs web Apache Kafka.
- Apache ZooKeeper: Kafka membutuhkan ZooKeeper untuk manajemen kluster. Anda perlu mengunduh dan mengonfigurasi ZooKeeper.
Step-by-Step Guide: Setting Up Kafka on Windows
Mari kita bahas proses menyiapkan Kafka di Windows secara rinci:
1. Install Java Development Kit (JDK)
Jika Anda belum menginstal JDK, ikuti langkah-langkah berikut:
- Unduh JDK dari situs web Oracle atau menggunakan pengelola paket seperti Chocolatey. Misalnya, menggunakan Chocolatey:
choco install jdk8
- Jalankan installer dan ikuti petunjuk di layar.
- Setelah instalasi selesai, atur variabel lingkungan
JAVA_HOME
untuk menunjuk ke direktori instalasi JDK. Misalnya:C:\Program Files\Java\jdk1.8.0_XXX
- Tambahkan
%JAVA_HOME%\bin
ke variabel lingkunganPath
Anda. - Buka command prompt baru dan ketik
java -version
. Ini harus menampilkan informasi versi JDK yang terinstal.
2. Download Apache Kafka
Selanjutnya, unduh distribusi biner Kafka:
- Kunjungi situs web Apache Kafka.
- Unduh distribusi biner Kafka terbaru (misalnya, kafka_2.13-X.X.X.tgz).
- Ekstrak file yang diunduh ke lokasi pilihan Anda (misalnya,
C:\kafka
).
3. Configure Apache ZooKeeper
Kafka menggunakan ZooKeeper untuk mengelola konfigurasi kluster dan koordinasi. Kami akan mengonfigurasi ZooKeeper terlebih dahulu.
- Unduh ZooKeeper: Meskipun Kafka hadir dengan versi ZooKeeper yang disematkan, kami akan menyiapkan instalasi mandiri untuk kontrol yang lebih baik. Unduh distribusi ZooKeeper dari situs web Apache ZooKeeper.
- Ekstrak ZooKeeper: Ekstrak file yang diunduh ke lokasi pilihan Anda (misalnya,
C:\zookeeper
). - Konfigurasi ZooKeeper:
- Buka direktori
conf
di direktori instalasi ZooKeeper (misalnya,C:\zookeeper\conf
). - Buat salinan file
zoo_sample.cfg
dan beri namazoo.cfg
. - Edit file
zoo.cfg
. Temukan baris yang menyatakandataDir=/tmp/zookeeper
dan ubah ke direktori tempat Anda ingin menyimpan data ZooKeeper (misalnya,dataDir=C:/zookeeper/data
). Buat direktori ini jika belum ada.
- Buka direktori
4. Start ZooKeeper Server
Sekarang, mari kita mulai server ZooKeeper.
- Buka command prompt.
- Arahkan ke direktori instalasi ZooKeeper (misalnya,
cd C:\zookeeper
). - Jalankan perintah berikut:
bin\zkServer.cmd
- Jendela command prompt akan menampilkan log server ZooKeeper. Biarkan jendela ini tetap terbuka saat ZooKeeper berjalan.
5. Configure Apache Kafka
Setelah ZooKeeper berjalan, mari kita konfigurasi Kafka.
- Buka direktori
config
di direktori instalasi Kafka (misalnya,C:\kafka\config
). - Edit file
server.properties
. - Beberapa parameter penting yang perlu dikonfigurasi meliputi:
broker.id
: Atur ini ke integer unik untuk setiap broker Kafka dalam kluster. Untuk instalasi satu broker, Anda dapat membiarkannya sebagai0
.listeners
: Atur ini ke alamat dan port tempat broker Kafka akan mendengarkan koneksi. Secara default, ini diatur kePLAINTEXT://:9092
, yang berarti Kafka akan mendengarkan di semua antarmuka jaringan pada port 9092. Anda mungkin ingin mengubah ini ke alamat IP khusus jika Anda memiliki beberapa antarmuka jaringan. Misalnya,PLAINTEXT://127.0.0.1:9092
log.dirs
: Atur ini ke direktori tempat Kafka akan menyimpan data log. Buat direktori ini jika belum ada. Misalnya,log.dirs=C:/kafka/kafka-logs
zookeeper.connect
: Atur ini ke alamat dan port server ZooKeeper. Secara default, ini diatur kelocalhost:2181
. Pastikan ini sesuai dengan konfigurasi ZooKeeper Anda.
6. Start Kafka Server
Dengan ZooKeeper dan Kafka yang dikonfigurasi, mari kita mulai server Kafka.
- Buka command prompt baru.
- Arahkan ke direktori instalasi Kafka (misalnya,
cd C:\kafka
). - Jalankan perintah berikut:
bin\windows\kafka-server-start.bat config\server.properties
- Jendela command prompt akan menampilkan log server Kafka. Biarkan jendela ini tetap terbuka saat Kafka berjalan.
7. Create a Kafka Topic
Setelah server Kafka berjalan, Anda dapat membuat topik Kafka.
- Buka command prompt baru.
- Arahkan ke direktori instalasi Kafka (misalnya,
cd C:\kafka
). - Jalankan perintah berikut untuk membuat topik bernama “my-topic” dengan satu partisi dan satu replika:
bin\windows\kafka-topics.bat --create --topic my-topic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
- Anda dapat menyesuaikan nama topik, jumlah partisi, dan faktor replikasi sesuai kebutuhan Anda.
8. Send and Consume Messages
Sekarang setelah topik dibuat, Anda dapat mulai mengirim dan menerima pesan.
- Send Messages (Producer):
- Buka command prompt baru.
- Arahkan ke direktori instalasi Kafka (misalnya,
cd C:\kafka
). - Jalankan perintah berikut untuk mengirim pesan ke topik “my-topic”:
bin\windows\kafka-console-producer.bat --topic my-topic --bootstrap-server localhost:9092
- Ketik pesan Anda dan tekan Enter. Pesan akan dikirim ke topik Kafka.
- Consume Messages (Consumer):
- Buka command prompt baru.
- Arahkan ke direktori instalasi Kafka (misalnya,
cd C:\kafka
). - Jalankan perintah berikut untuk mengonsumsi pesan dari topik “my-topic”:
bin\windows\kafka-console-consumer.bat --topic my-topic --bootstrap-server localhost:9092 --from-beginning
- Setiap pesan yang dikirim ke topik “my-topic” akan ditampilkan di jendela command prompt ini. Opsi
--from-beginning
memastikan bahwa Anda mengonsumsi pesan dari awal topik.
Troubleshooting
Berikut adalah beberapa masalah umum dan solusi yang mungkin Anda temui saat menyiapkan Kafka di Windows:
- “java” is not recognized as an internal or external command: Pastikan variabel lingkungan
JAVA_HOME
danPath
diatur dengan benar. - Connection refused: Pastikan server ZooKeeper dan Kafka berjalan dan mendengarkan pada port yang benar. Periksa konfigurasi
zookeeper.connect
danlisteners
di fileserver.properties
. - Topic not found: Pastikan Anda telah membuat topik menggunakan perintah
kafka-topics.bat
. - Out of memory errors: Kafka dapat menggunakan sejumlah besar memori, terutama dengan beban kerja yang besar. Pertimbangkan untuk meningkatkan alokasi memori untuk server Kafka dengan mengubah opsi
KAFKA_HEAP_OPTS
dalam filekafka-server-start.bat
. Contoh:set KAFKA_HEAP_OPTS="-Xmx2G -Xms2G"
untuk mengalokasikan 2GB memori. - ZooKeeper fails to start: Periksa konfigurasi
zoo.cfg
, terutama direktoridataDir
. Pastikan direktori ada dan dapat diakses oleh proses ZooKeeper. Juga, pastikan tidak ada instance ZooKeeper lain yang sudah berjalan di port yang sama. - Kafka server fails to start due to port binding issues: Periksa apakah ada aplikasi lain yang sudah menggunakan port yang dikonfigurasi untuk Kafka (defaultnya 9092). Anda dapat menggunakan alat seperti
netstat
atauResource Monitor
di Windows untuk mengidentifikasi proses mana yang menggunakan port tertentu. Ubah konfigurasilisteners
diserver.properties
ke port yang berbeda jika perlu. - Error related to file paths with spaces: Windows file paths seringkali memiliki spasi. Pastikan untuk mengelilingi path dengan tanda kutip ganda (“) saat menggunakan perintah baris perintah. Misalnya:
"C:\Program Files\Java\jdk1.8.0_XXX\bin\java" -version
. Juga, pastikan konfigurasi Kafka menggunakan garis miring (/) atau garis miring ganda (\\) sebagai pemisah path, bukan garis miring terbalik tunggal (\), yang dapat menyebabkan masalah dalam properti konfigurasi. - Authentication errors: Jika Anda mengaktifkan autentikasi (misalnya, menggunakan SASL), pastikan untuk mengonfigurasi klien (produser dan konsumen) dengan kredensial yang benar. Konfigurasi spesifik tergantung pada mekanisme autentikasi yang Anda gunakan (misalnya, SASL/PLAIN, SASL/GSSAPI).
- Firewall issues: Pastikan firewall Windows Anda tidak memblokir komunikasi antara server Kafka, server ZooKeeper, dan klien Anda. Anda mungkin perlu menambahkan aturan firewall untuk mengizinkan lalu lintas pada port yang digunakan oleh Kafka (defaultnya 9092) dan ZooKeeper (defaultnya 2181).
- Log file analysis: Ketika mengalami masalah, selalu periksa log server Kafka (terletak di direktori yang dikonfigurasi di
log.dirs
) dan log server ZooKeeper (terletak di direktori yang dikonfigurasi didataDir
). Log ini seringkali berisi informasi yang berharga tentang akar penyebab masalah. - Version compatibility: Pastikan versi Kafka dan ZooKeeper Anda kompatibel satu sama lain. Lihat dokumentasi Kafka untuk informasi kompatibilitas.
- Permissions: Pastikan akun pengguna yang menjalankan Kafka dan ZooKeeper memiliki izin yang diperlukan untuk membaca dan menulis ke direktori yang dikonfigurasi (misalnya,
log.dirs
untuk Kafka,dataDir
untuk ZooKeeper). - Incorrect file encoding: Terkadang, file konfigurasi dapat disimpan dengan encoding yang salah (misalnya, UTF-16 dengan BOM). Ini dapat menyebabkan Kafka gagal mengurai file konfigurasi dengan benar. Pastikan file konfigurasi disimpan dengan encoding UTF-8 tanpa BOM.
Alternative: Using WSL (Windows Subsystem for Linux)
Meskipun artikel ini fokus pada menjalankan Kafka secara native di Windows, alternatif lain yang populer adalah menggunakan WSL (Windows Subsystem for Linux). WSL memungkinkan Anda menjalankan lingkungan Linux di dalam Windows, yang dapat menyederhanakan proses menyiapkan Kafka. Berikut adalah manfaat utama menggunakan WSL:
- Simplified Setup: Menyiapkan Kafka di WSL sangat mirip dengan menyiapkan Kafka di server Linux. Anda dapat menggunakan pengelola paket seperti
apt
atauyum
untuk menginstal Java, Kafka, dan ZooKeeper. - Better Performance: Dalam beberapa kasus, WSL dapat menawarkan kinerja yang lebih baik daripada menjalankan Kafka secara native di Windows, terutama jika Anda menggunakan WSL 2, yang menggunakan kernel Linux yang divirtualisasikan.
- Familiar Linux Environment: Jika Anda terbiasa dengan lingkungan Linux, menggunakan WSL dapat membuat pengalaman menyiapkan Kafka lebih intuitif.
Untuk menggunakan WSL, Anda perlu mengaktifkannya di Windows dan menginstal distribusi Linux (misalnya, Ubuntu). Setelah WSL disiapkan, Anda dapat mengikuti petunjuk standar untuk menyiapkan Kafka di Linux.
Conclusion
Menjalankan Apache Kafka di Windows tanpa Docker mungkin tampak menantang pada awalnya, tetapi dengan panduan langkah demi langkah ini, Anda dapat dengan mudah menyiapkan lingkungan Kafka lokal untuk pengembangan dan pengujian. Ingatlah untuk mengatasi masalah umum apa pun yang mungkin Anda temui, dan jangan ragu untuk menjelajahi alternatif seperti WSL untuk pengalaman yang lebih sederhana.
Next Steps
Setelah Anda berhasil menjalankan Kafka di Windows, Anda dapat menjelajahi topik berikut:
- Kafka Connect: Gunakan Kafka Connect untuk mengintegrasikan Kafka dengan sistem lain, seperti database, sistem file, dan layanan cloud.
- Kafka Streams: Bangun aplikasi streaming real-time menggunakan Kafka Streams API.
- Kafka Security: Amankan kluster Kafka Anda dengan mengaktifkan autentikasi dan otorisasi.
- Kafka Monitoring: Pantau kinerja kluster Kafka Anda menggunakan alat seperti Prometheus dan Grafana.
“`