Terapkan Apache Kafka dengan Docker Compose

Terapkan Apache Kafka Dengan Docker Compose



Docker adalah perangkat lunak kontainerisasi sumber terbuka dan gratis yang telah sepenuhnya mengubah lanskap cara pengembang mengemas dan menyebarkan aplikasi. Docker memungkinkan kita mengemas aplikasi dan semua dependensi yang diperlukan dalam satu entitas. Ini berarti kami dapat mendistribusikan paket, dan lingkungan dapat direplikasi di hampir setiap mesin tanpa paket yang bertentangan atau hilang.

Dalam tutorial ini, kita akan belajar bagaimana kita bisa menerapkan klaster Apache Kafka menggunakan buruh pelabuhan. Ini memungkinkan kami untuk menggunakan gambar buruh pelabuhan yang disediakan untuk menjalankan klaster Kafka dengan cepat di hampir semua lingkungan.

Mari kita mulai dengan dasar-dasarnya dan membahas apa itu Kafka.







Apa itu Apache Kafka?

Apache Kafka adalah sistem pesan publish-subscribe yang gratis, open-source, sangat skalabel, terdistribusi, dan toleran terhadap kesalahan. Ini dirancang untuk menangani volume tinggi, throughput tinggi, dan aliran data real-time, sehingga cocok untuk banyak kasus penggunaan termasuk agregasi log, analitik real-time, dan arsitektur berbasis peristiwa.



Kafka didasarkan pada arsitektur terdistribusi yang memungkinkannya menangani data dalam jumlah besar di beberapa server. Ini menggunakan model terbitkan-berlangganan di mana produsen mengirim pesan ke topik dan konsumen berlangganan untuk menerimanya. Hal ini memungkinkan komunikasi yang terpisah antara produsen dan konsumen, memberikan skalabilitas dan fleksibilitas yang tinggi.



Apa Komposisi Docker

Komposisi Docker mengacu pada plugin atau alat buruh pelabuhan untuk mendefinisikan dan menjalankan aplikasi multi-kontainer. Docker menyusun kita untuk menentukan konfigurasi wadah dalam file YAML. File konfigurasi mencakup spesifikasi wadah seperti layanan, jaringan, dan volume yang diperlukan oleh aplikasi.





Dengan menggunakan perintah docker-compose, kita dapat membuat dan memulai banyak kontainer dengan satu perintah.

Menginstal Docker dan Docker Compose

Langkah pertama adalah memastikan bahwa Anda menginstal buruh pelabuhan di mesin lokal Anda. Anda dapat memeriksa sumber daya berikut untuk mempelajari lebih lanjut:



  • https://linuxhint.com/install_configure_docker_ubuntu/
  • https://linuxhint.com/install-docker-debian/
  • https://linuxhint.com/install_docker_debian_10/
  • https://linuxhint.com/install-docker-ubuntu-22-04/
  • https://linuxhint.com/install-docker-on-pop_os/
  • https://linuxhint.com/how-to-install-docker-desktop-windows/
  • https://linuxhint.com/install-use-docker-centos-8/
  • https://linuxhint.com/install_docker_on_raspbian_os/

Saat tutorial ini ditulis, menginstal docker compose memerlukan menginstal desktop Docker di mesin target Anda. Oleh karena itu, menginstal docker compose sebagai unit mandiri sudah tidak digunakan lagi.

Setelah kami menginstal Docker, kami dapat mengonfigurasi file YAML. File ini berisi semua detail yang kita perlukan untuk menjalankan klaster Kafka menggunakan wadah buruh pelabuhan.

Menyiapkan Docker-Compose.YAML

Buat docker-compose.yaml dan edit dengan editor teks favorit Anda:

$ sentuh docker-compose.yaml
$ vim docker-compose.yaml

Selanjutnya, tambahkan file konfigurasi buruh pelabuhan seperti yang ditunjukkan berikut ini:

Versi: kapan : '3'
jasa :
penjaga kebun binatang :
gambar : bitnami / penjaga kebun binatang : 3.8
port :
- '2181:2181'
volume :
- 'zookeeper_data:/bitnami'
lingkungan :
- ALLOW_ANONYMOUS_LOGIN = Ya
kafka :
gambar : buruh pelabuhan. ini / bitnami / kafka : 3.3
port :
- '9092:9092'
volume :
- 'kafka_data:/bitnami'
lingkungan :
- KAFKA_CFG_ZOOKEEPER_CONNECT = penjaga kebun binatang : 2181
- ALLOW_PLAINTEXT_LISTENER = Ya
tergantung pada :
- penjaga kebun binatang
volume :
zookeeper_data :
pengemudi : lokal
kafka_data :
pengemudi : lokal

Contoh file buruh pelabuhan menyiapkan Zookeeper dan klaster Kafka di mana klaster Kafka terhubung ke layanan Zookeeper untuk koordinasi. File juga mengonfigurasi port dan variabel lingkungan untuk setiap layanan untuk memungkinkan komunikasi dan akses ke layanan.

Kami juga menyiapkan volume bernama untuk mempertahankan data layanan bahkan jika penampung dimulai ulang atau dibuat ulang.

Mari kita memecah file sebelumnya menjadi beberapa bagian sederhana:

Kita mulai dengan layanan Zookeeper menggunakan gambar bitnami/zookeeper:3.8. Gambar ini kemudian memetakan port 2181 di mesin host ke port 2181 di container. Kami juga menyetel variabel lingkungan ALLOW_ANONYMOUS_LOGIN ke 'yes'. Terakhir, kita menyetel volume tempat layanan menyimpan data sebagai volume zookeeper_data.

Blok kedua menentukan detail untuk menyiapkan layanan Kafka. Dalam hal ini, kami menggunakan gambar docker.io/bitnami/kafka:3.3 yang memetakan port host 9092 ke port kontainer 9092. Demikian pula, kami juga menentukan variabel lingkungan KAFKA_CFG_ZOOKEEPER_CONNECT dan menetapkan nilainya ke alamat Zookeeper seperti yang dipetakan ke port 2181. Variabel lingkungan kedua yang kita definisikan di bagian ini adalah variabel lingkungan ALLOW_PLAINTEXT_LISTENER. Menetapkan nilai variabel lingkungan ini ke 'ya' memungkinkan lalu lintas tidak aman ke klaster Kafka.

Terakhir, kami memberikan volume tempat layanan Kafka menyimpan datanya.

Untuk memastikan bahwa buruh pelabuhan mengonfigurasi volume untuk Zookeeper dan Kafka, kita perlu mendefinisikannya seperti yang ditunjukkan di bagian volume. Ini mengatur volume zookeeper_data dan kafka_data. Kedua volume menggunakan driver lokal yang artinya data disimpan di mesin host.

Itu dia! File konfigurasi sederhana yang memungkinkan Anda memutar wadah Kafka menggunakan buruh pelabuhan dalam langkah-langkah sederhana.

Menjalankan Kontainer

Untuk memastikan docker berjalan, kita dapat menjalankan container dari file YAML dengan perintah berikut:

$ sudo komposisi buruh pelabuhan

Perintah harus menemukan file konfigurasi YAML dan menjalankan container dengan nilai yang ditentukan:

Kesimpulan

Sekarang Anda telah mempelajari cara mengonfigurasi dan menjalankan Apache Kafka dari file konfigurasi YAML yang dibuat oleh buruh pelabuhan.