Implementer Apache Kafka med Docker Compose

Implementer Apache Kafka Med Docker Compose



Docker er en gratis og open source containeriseringssoftware, der fuldstændig har ændret landskabet for, hvordan udviklerne pakker og implementerer applikationer. Docker giver os mulighed for at pakke en applikation og alle de nødvendige afhængigheder i en enkelt enhed. Det betyder, at vi kan distribuere pakken, og miljøet kan replikeres i næsten alle maskiner uden modstridende eller manglende pakker.

I denne tutorial lærer vi, hvordan vi kan implementere en Apache Kafka-klynge ved hjælp af dockeren. Dette giver os mulighed for at bruge det medfølgende docker-billede til hurtigt at skabe en Kafka-klynge i næsten ethvert miljø.

Lad os starte med det grundlæggende og diskutere, hvad Kafka er.







Hvad er Apache Kafka?

Apache Kafka er et gratis, open source, meget skalerbart, distribueret og fejltolerant publicerings-abonnement-meddelelsessystem. Det er designet til at håndtere en høj volumen, høj gennemstrømning og realtidsdatastrøm, hvilket gør den velegnet til mange brugssager, herunder logaggregering, realtidsanalyse og hændelsesdrevne arkitekturer.



Kafka er baseret på en distribueret arkitektur, som gør det muligt at håndtere store mængder data på tværs af flere servere. Den bruger en public-subscribe-model, hvor producenterne sender beskeder til emnerne, og forbrugerne abonnerer på dem for at modtage dem. Dette giver mulighed for afkoblet kommunikation mellem producenter og forbrugere, hvilket giver høj skalerbarhed og fleksibilitet.



Hvad er Docker Compose

Docker compose refererer til et docker-plugin eller værktøj til at definere og køre multi-container-applikationer. Docker sammensætter os til at definere containerkonfigurationen i en YAML-fil. Konfigurationsfilen inkluderer containerspecifikationerne, såsom tjenester, netværk og mængder, der kræves af en applikation.





Ved at bruge kommandoen docker-compose kan vi oprette og starte flere containere med en enkelt kommando.

Installation af Docker og Docker Compose

Det første trin er at sikre, at du har installeret docker på din lokale maskine. Du kan tjekke følgende ressourcer for at lære mere:



  • 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år du skriver denne tutorial, kræver installation af docker compose installation af Docker-skrivebordet på din målmaskine. Derfor er installation af docker compose som en selvstændig enhed forældet.

Når vi har installeret Docker, kan vi konfigurere YAML-filen. Denne fil indeholder alle de detaljer, som vi skal bruge for at opbygge en Kafka-klynge ved hjælp af en docker-beholder.

Opsætning af Docker-Compose.YAML

Opret docker-compose.yaml og rediger med dit foretrukne tekstredigeringsværktøj:

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

Tilføj derefter docker-konfigurationsfilen som vist i følgende:

version : '3'
tjenester :
dyrepasser :
billede : bitnami / dyrepasser : 3.8
havne :
- '2181:2181'
mængder :
- 'zookeeper_data:/bitnami'
miljø :
- ALLOW_ANONYMOUS_LOGIN = Ja
kafka :
billede : havnearbejder. det her / bitnami / kafka : 3.3
havne :
- '9092:9092'
mængder :
- 'kafka_data:/bitnami'
miljø :
- KAFKA_CFG_ZOOKEEPER_CONNECT = dyrepasser : 2181
- ALLOW_PLAINTEXT_LISTENER = Ja
afhænger af :
- dyrepasser
mængder :
zookeeper_data :
chauffør : lokal
kafka_data :
chauffør : lokal

Docker-eksemplet sætter en Zookeeper og en Kafka-klynge op, hvor Kafka-klyngen er forbundet med Zookeeper-tjenesten for koordinering. Filen konfigurerer også porte og miljøvariabler for hver tjeneste for at tillade kommunikation og adgang til tjenesterne.

Vi sætter også de navngivne volumener op til at bevare dataene fra tjenesterne, selvom containerne genstartes eller genskabes.

Lad os opdele den forrige fil i simple sektioner:

Vi starter med Zookeeper-tjenesten ved at bruge bitnami/zookeeper:3.8-billedet. Dette billede kortlægger derefter port 2181 på værtsmaskinen til port 2181 på containeren. Vi sætter også miljøvariablen ALLOW_ANONYMOUS_LOGIN til 'ja'. Til sidst indstiller vi den volumen, som tjenesten gemmer dataene på, som zookeeper_data volumen.

Den anden blok definerer detaljerne til opsætning af Kafka-tjenesten. I dette tilfælde bruger vi docker.io/bitnami/kafka:3.3-billedet, som kortlægger værtsporten 9092 til containerporten 9092. På samme måde definerer vi også miljøvariablen KAFKA_CFG_ZOOKEEPER_CONNECT og indstiller dens værdi til adressen på Zookeeper som kortlagt til port 2181. Den anden miljøvariabel, som vi definerer i dette afsnit, er miljøvariablen ALLOW_PLAINTEXT_LISTENER. Indstilling af værdien af ​​denne miljøvariabel til 'ja' giver mulighed for usikret trafik til Kafka-klyngen.

Endelig giver vi den mængde, hvor Kafka-tjenesten gemmer sine data.

For at sikre, at docker konfigurerer volumerne for Zookeeper og Kafka, skal vi definere dem som vist i volumenafsnittet. Dette opsætter zookeeper_data og kafka_data volumen. Begge enheder bruger den lokale driver, hvilket betyder, at dataene gemmes på værtsmaskinen.

Der har du det! En simpel konfigurationsfil, som giver dig mulighed for at spinne en Kafka-beholder op ved hjælp af docker i enkle trin.

Kørsel af containeren

For at sikre, at dockeren kører, kan vi køre containeren fra YAML-filen med følgende kommando:

$ sudo docker komponere op

Kommandoen skal finde YAML-konfigurationsfilen og køre containeren med de angivne værdier:

Konklusion

Du har nu lært, hvordan du kan konfigurere og køre Apache Kafka fra en docker compose YAML-konfigurationsfil.