Gunakan Apache Kafka dengan Docker Compose

Gunakan Apache Kafka Dengan Docker Compose



Docker ialah perisian kontena percuma dan sumber terbuka yang telah mengubah sepenuhnya landskap cara pembangun membungkus dan menggunakan aplikasi. Docker membenarkan kami membungkus aplikasi dan semua kebergantungan yang diperlukan dalam satu entiti. Ini bermakna kita boleh mengedarkan pakej, dan persekitaran boleh direplikasi dalam hampir setiap mesin tanpa pakej yang bercanggah atau hilang.

Dalam tutorial ini, kita akan mempelajari cara kita boleh menggunakan kluster Apache Kafka menggunakan docker. Ini membolehkan kami menggunakan imej docker yang disediakan untuk memutar gugusan Kafka dengan cepat dalam hampir mana-mana persekitaran.

Mari kita mulakan dengan asas dan bincangkan apa itu Kafka.







Apakah Apache Kafka?

Apache Kafka ialah sistem pemesejan penerbitan-langganan percuma, sumber terbuka, sangat berskala, diedarkan dan toleran terhadap kesalahan. Ia direka bentuk untuk mengendalikan volum tinggi, daya pemprosesan tinggi dan strim data masa nyata, menjadikannya sesuai untuk banyak kes penggunaan termasuk pengagregatan log, analitik masa nyata dan seni bina dipacu peristiwa.



Kafka adalah berdasarkan seni bina yang diedarkan yang membolehkannya mengendalikan sejumlah besar data merentas berbilang pelayan. Ia menggunakan model terbitkan-langganan di mana pengeluar menghantar mesej kepada topik dan pengguna melanggannya untuk menerimanya. Ini membolehkan komunikasi terpisah antara pengeluar dan pengguna, memberikan skalabiliti dan fleksibiliti yang tinggi.



Apa Itu Docker Compose

Karang Docker merujuk kepada pemalam atau alat docker untuk mentakrif dan menjalankan aplikasi berbilang bekas. Docker menyusun kami untuk menentukan konfigurasi kontena dalam fail YAML. Fail konfigurasi termasuk spesifikasi bekas seperti perkhidmatan, rangkaian dan volum yang diperlukan oleh aplikasi.





Menggunakan arahan docker-compose, kita boleh mencipta dan memulakan berbilang bekas dengan satu arahan.

Memasang Docker dan Docker Compose

Langkah pertama ialah memastikan anda memasang docker pada mesin tempatan anda. Anda boleh menyemak sumber berikut untuk mengetahui 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/

Semasa menulis tutorial ini, memasang karang docker memerlukan pemasangan desktop Docker pada mesin sasaran anda. Oleh itu, pemasangan docker compose sebagai unit kendiri tidak digunakan lagi.

Sebaik sahaja kami memasang Docker, kami boleh mengkonfigurasi fail YAML. Fail ini mengandungi semua butiran yang kita perlukan untuk memutar gugusan Kafka menggunakan bekas docker.

Menyediakan Docker-Compose.YAML

Buat docker-compose.yaml dan edit dengan editor teks kegemaran anda:

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

Seterusnya, tambahkan fail konfigurasi docker seperti yang ditunjukkan dalam yang berikut:

versi : '3'
perkhidmatan :
penjaga zoo :
gambar : bitnami / penjaga zoo : 3.8
pelabuhan :
- '2181:2181'
jilid :
- 'data_zookeeper:/bitnami'
persekitaran :
- BENARKAN_LOGIN_TANPA_NAM = ya
kafka :
gambar : pekerja pelabuhan. ini / bitnami / kafka : 3.3
pelabuhan :
- '9092:9092'
jilid :
- 'kafka_data:/bitnami'
persekitaran :
- KAFKA_CFG_ZOOKEEPER_CONNECT = penjaga zoo : 2181
- ALLOW_PLAINTEXT_LISTENER = ya
bergantung kepada :
- penjaga zoo
jilid :
zookeeper_data :
pemandu : tempatan
kafka_data :
pemandu : tempatan

Fail docker contoh menyediakan gugusan Zookeeper dan Kafka di mana gugusan Kafka disambungkan kepada perkhidmatan Zookeeper untuk penyelarasan. Fail ini juga mengkonfigurasi port dan pembolehubah persekitaran untuk setiap perkhidmatan untuk membolehkan komunikasi dan akses kepada perkhidmatan.

Kami juga menyediakan volum yang dinamakan untuk mengekalkan data perkhidmatan walaupun bekas dimulakan semula atau dicipta semula.

Mari kita pecahkan fail sebelumnya kepada bahagian mudah:

Kami bermula dengan perkhidmatan Zookeeper menggunakan imej bitnami/zookeeper:3.8. Imej ini kemudiannya memetakan port 2181 pada mesin hos kepada port 2181 pada bekas. Kami juga menetapkan pembolehubah persekitaran ALLOW_ANONYMOUS_LOGIN kepada 'ya'. Akhir sekali, kami menetapkan volum di mana perkhidmatan menyimpan data sebagai volum zookeeper_data.

Blok kedua mentakrifkan butiran untuk menyediakan perkhidmatan Kafka. Dalam kes ini, kami menggunakan imej docker.io/bitnami/kafka:3.3 yang memetakan port hos 9092 ke port kontena 9092. Begitu juga, kami juga mentakrifkan pembolehubah persekitaran KAFKA_CFG_ZOOKEEPER_CONNECT dan menetapkan nilainya kepada alamat Zookeeper seperti yang dipetakan kepada port 2181. Pembolehubah persekitaran kedua yang kami takrifkan dalam bahagian ini ialah pembolehubah persekitaran ALLOW_PLAINTEXT_LISTENER. Menetapkan nilai pembolehubah persekitaran ini kepada 'ya' membolehkan trafik tidak selamat ke gugusan Kafka.

Akhir sekali, kami menyediakan volum di mana perkhidmatan Kafka menyimpan datanya.

Untuk memastikan bahawa docker mengkonfigurasi volum untuk Zookeeper dan Kafka, kita perlu mentakrifkannya seperti yang ditunjukkan dalam bahagian volum. Ini menyediakan volum zookeeper_data dan kafka_data. Kedua-dua volum menggunakan pemacu tempatan yang bermaksud bahawa data disimpan dalam mesin hos.

Itulah anda mempunyainya! Fail konfigurasi mudah yang membolehkan anda memutarkan bekas Kafka menggunakan docker dengan langkah mudah.

Menjalankan Kontena

Untuk memastikan bahawa docker sedang berjalan, kita boleh menjalankan bekas dari fail YAML dengan arahan berikut:

$ sudo pekerja pelabuhan mengarang

Perintah harus mencari fail konfigurasi YAML dan menjalankan bekas dengan nilai yang ditentukan:

Kesimpulan

Anda kini mempelajari cara anda boleh mengkonfigurasi dan menjalankan Apache Kafka daripada fail konfigurasi YAML karang docker.