Implementați Apache Kafka cu Docker Compose

Implementati Apache Kafka Cu Docker Compose



Docker este un software de containerizare gratuit și open-source care a schimbat complet peisajul modului în care dezvoltatorii ambalează și implementează aplicații. Docker ne permite să ambalăm o aplicație și toate dependențele necesare într-o singură entitate. Aceasta înseamnă că putem distribui pachetul, iar mediul poate fi replicat în aproape fiecare mașină fără pachete conflictuale sau lipsă.

În acest tutorial, vom afla cum putem implementa un cluster Apache Kafka folosind docker. Acest lucru ne permite să folosim imaginea docker furnizată pentru a dezvolta rapid un cluster Kafka în aproape orice mediu.

Să începem cu elementele de bază și să discutăm despre ce este Kafka.







Ce este Apache Kafka?

Apache Kafka este un sistem de mesagerie gratuit, open-source, foarte scalabil, distribuit și tolerant la erori. Este conceput pentru a gestiona un flux de date cu volum mare, debit mare și în timp real, făcându-l potrivit pentru multe cazuri de utilizare, inclusiv agregarea jurnalelor, analiză în timp real și arhitecturi bazate pe evenimente.



Kafka se bazează pe o arhitectură distribuită care îi permite să gestioneze cantități mari de date pe mai multe servere. Utilizează un model de publicare-abonare în care producătorii trimit mesaje la subiecte, iar consumatorii se abonează la acestea pentru a le primi. Acest lucru permite comunicarea decuplată între producători și consumatori, oferind scalabilitate și flexibilitate ridicate.



Ce este Docker Compose

Docker compose se referă la un plugin sau un instrument Docker pentru definirea și rularea aplicațiilor cu mai multe containere. Docker ne compune să definim configurația containerului într-un fișier YAML. Fișierul de configurare include specificațiile containerului, cum ar fi serviciile, rețelele și volumele cerute de o aplicație.





Folosind comanda docker-compose, putem crea și porni mai multe containere cu o singură comandă.

Instalarea Docker și Docker Compose

Primul pas este să vă asigurați că ați instalat docker-ul pe mașina dvs. locală. Puteți verifica următoarele resurse pentru a afla mai multe:



  • 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/

În momentul scrierii acestui tutorial, instalarea docker composer necesită instalarea desktopului Docker pe mașina țintă. Prin urmare, instalarea docker compose ca unitate autonomă este depreciată.

Odată ce instalăm Docker, putem configura fișierul YAML. Acest fișier conține toate detaliile de care avem nevoie pentru a crea un cluster Kafka folosind un container docker.

Configurarea Docker-Compose.YAML

Creați docker-compose.yaml și editați cu editorul de text preferat:

$ touch docker-compose.yaml
$ vim docker-compose.yaml

Apoi, adăugați fișierul de configurare Docker, așa cum se arată în continuare:

versiune : '3'
Servicii :
ingrijitor zoo :
imagine : bitnami / ingrijitor zoo : 3.8
porturi :
- „2181:2181”
volumele :
- „zookeeper_data:/bitnami”
mediu inconjurator :
- ALLOW_ANONYMOUS_LOGIN = da
kafka :
imagine : docher. acest / bitnami / kafka : 3.3
porturi :
- „9092:9092”
volumele :
- „kafka_data:/bitnami”
mediu inconjurator :
- KAFKA_CFG_ZOOKEEPER_CONNECT = ingrijitor zoo : 2181
- ALLOW_PLAINTEXT_LISTENER = da
depinde de :
- ingrijitor zoo
volumele :
zookeeper_data :
conducător auto : local
kafka_data :
conducător auto : local

Exemplul de fișier docker setează un Zookeeper și un cluster Kafka unde clusterul Kafka este conectat la serviciul Zookeeper pentru coordonare. Fișierul configurează, de asemenea, porturile și variabilele de mediu pentru fiecare serviciu, pentru a permite comunicarea și accesul la servicii.

De asemenea, am configurat volumele numite pentru a persista datele serviciilor chiar dacă containerele sunt repornite sau recreate.

Să împărțim fișierul anterior în secțiuni simple:

Începem cu serviciul Zookeeper folosind imaginea bitnami/zookeeper:3.8. Această imagine mapează apoi portul 2181 de pe mașina gazdă la portul 2181 de pe container. De asemenea, setăm variabila de mediu ALLOW_ANONYMOUS_LOGIN la „da”. În cele din urmă, setăm volumul pe care serviciul stochează datele ca volum zookeeper_data.

Al doilea bloc definește detaliile pentru configurarea serviciului Kafka. În acest caz, folosim imaginea docker.io/bitnami/kafka:3.3 care mapează portul gazdă 9092 la portul container 9092. În mod similar, definim, de asemenea, variabila de mediu KAFKA_CFG_ZOOKEEPER_CONNECT și setăm valoarea acesteia la adresa Zookeeper așa cum este mapată la portul 2181. A doua variabilă de mediu pe care o definim în această secțiune este variabila de mediu ALLOW_PLAINTEXT_LISTENER. Setarea valorii acestei variabile de mediu la „da” permite traficul nesecurizat către clusterul Kafka.

În cele din urmă, vă oferim volumul pe care serviciul Kafka își stochează datele.

Pentru a ne asigura că docker-ul configurează volumele pentru Zookeeper și Kafka, trebuie să le definim așa cum se arată în secțiunea volume. Aceasta setează volumele zookeeper_data și kafka_data. Ambele volume folosesc driverul local, ceea ce înseamnă că datele sunt stocate în mașina gazdă.

Iată-l! Un fișier de configurare simplu, care vă permite să rotiți un container Kafka folosind docker în pași simpli.

Rularea Containerului

Pentru a ne asigura că dockerul rulează, putem rula containerul din fișierul YAML cu următoarea comandă:

$ sudo docker compune

Comanda ar trebui să găsească fișierul de configurare YAML și să ruleze containerul cu valorile specificate:

Concluzie

Acum ați învățat cum puteți configura și rula Apache Kafka dintr-un fișier de configurare YAML compus din docker.