Distribuer Apache Kafka med Docker Compose

Distribuer Apache Kafka Med Docker Compose



Docker er en gratis og åpen kildekode-beholderiseringsprogramvare som fullstendig har endret landskapet for hvordan utviklerne pakker og distribuerer applikasjoner. Docker lar oss pakke en applikasjon og alle nødvendige avhengigheter i en enkelt enhet. Dette betyr at vi kan distribuere pakken, og miljøet kan replikeres i nesten alle maskiner uten at det kommer i konflikt med eller mangler pakker.

I denne opplæringen lærer vi hvordan vi kan distribuere en Apache Kafka-klynge ved hjelp av docker. Dette lar oss bruke det medfølgende docker-bildet til raskt å spinne opp en Kafka-klynge i nesten alle miljøer.

La oss starte med det grunnleggende og diskutere hva Kafka er.







Hva er Apache Kafka?

Apache Kafka er et gratis, åpen kildekode, svært skalerbart, distribuert og feiltolerant publiserings-abonnent meldingssystem. Den er designet for å håndtere et høyt volum, høy gjennomstrømning og sanntidsdatastrøm, noe som gjør den egnet for mange brukstilfeller, inkludert loggaggregering, sanntidsanalyse og hendelsesdrevne arkitekturer.



Kafka er basert på en distribuert arkitektur som lar den håndtere store mengder data på tvers av flere servere. Den bruker en publiser-abonner-modell der produsentene sender meldinger til emnene og forbrukerne abonnerer på dem for å motta dem. Dette muliggjør frakoblet kommunikasjon mellom produsenter og forbrukere, noe som gir høy skalerbarhet og fleksibilitet.



Hva er Docker Compose

Docker compose refererer til en docker-plugin eller verktøy for å definere og kjøre multi-container-applikasjoner. Docker komponerer oss for å definere containerkonfigurasjonen i en YAML-fil. Konfigurasjonsfilen inkluderer beholderspesifikasjonene som tjenestene, nettverkene og volumene som kreves av en applikasjon.





Ved å bruke docker-compose-kommandoen kan vi opprette og starte flere containere med en enkelt kommando.

Installere Docker og Docker Compose

Det første trinnet er å sikre at du har installert docker på din lokale maskin. Du kan sjekke følgende ressurser for å lære mer:



  • 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 opplæringen, krever installasjon av docker compose at du installerer Docker-skrivebordet på målmaskinen din. Derfor er installasjon av docker compose som en frittstående enhet utdatert.

Når vi har installert Docker, kan vi konfigurere YAML-filen. Denne filen inneholder alle detaljene vi trenger for å spinne opp en Kafka-klynge ved hjelp av en docker-beholder.

Sette opp Docker-Compose.YAML

Lag docker-compose.yaml og rediger med din favoritt tekstredigerer:

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

Deretter legger du til docker-konfigurasjonsfilen som vist i følgende:

versjon : '3'
tjenester :
dyrepasser :
bilde : bitnami / dyrepasser : 3.8
havner :
- '2181:2181'
volumer :
- 'zookeeper_data:/bitnami'
miljø :
- ALLOW_ANONYMOUS_LOGIN = ja
kafka :
bilde : havnearbeider. dette / bitnami / kafka : 3.3
havner :
- '9092:9092'
volumer :
- 'kafka_data:/bitnami'
miljø :
- KAFKA_CFG_ZOOKEEPER_CONNECT = dyrepasser : 2181
- ALLOW_PLAINTEXT_LISTENER = ja
kommer an på :
- dyrepasser
volumer :
dyrepasserdata :
sjåfør : lokale
kafka_data :
sjåfør : lokale

Eksempel på docker-filen setter opp en Zookeeper og en Kafka-klynge der Kafka-klyngen er koblet til Zookeeper-tjenesten for koordinering. Filen konfigurerer også portene og miljøvariablene for hver tjeneste for å tillate kommunikasjon og tilgang til tjenestene.

Vi setter også opp de navngitte volumene for å opprettholde dataene til tjenestene selv om beholderne startes på nytt eller gjenopprettes.

La oss bryte ned den forrige filen i enkle deler:

Vi starter med Zookeeper-tjenesten ved å bruke bitnami/zookeeper:3.8-bildet. Dette bildet tilordner deretter port 2181 på vertsmaskinen til port 2181 på containeren. Vi setter også miljøvariabelen ALLOW_ANONYMOUS_LOGIN til 'ja'. Til slutt setter vi volumet som tjenesten lagrer dataene på som zookeeper_data-volum.

Den andre blokken definerer detaljene for å sette opp Kafka-tjenesten. I dette tilfellet bruker vi docker.io/bitnami/kafka:3.3-bildet som tilordner vertsporten 9092 til containerporten 9092. På samme måte definerer vi miljøvariabelen KAFKA_CFG_ZOOKEEPER_CONNECT og setter verdien til adressen til Zookeeper som kartlagt til port 2181. Den andre miljøvariabelen som vi definerer i denne delen er miljøvariabelen ALLOW_PLAINTEXT_LISTENER. Å sette verdien av denne miljøvariabelen til 'ja' gir mulighet for usikret trafikk til Kafka-klyngen.

Til slutt gir vi volumet som Kafka-tjenesten lagrer dataene sine på.

For å sikre at docker konfigurerer volumene for Zookeeper og Kafka, må vi definere dem som vist i volumdelen. Dette setter opp volumene zookeeper_data og kafka_data. Begge volumene bruker den lokale driveren som betyr at dataene lagres i vertsmaskinen.

Der har du det! En enkel konfigurasjonsfil som lar deg spinne opp en Kafka-beholder ved hjelp av docker i enkle trinn.

Kjøre containeren

For å sikre at docker kjører, kan vi kjøre beholderen fra YAML-filen med følgende kommando:

$ sudo docker komponere opp

Kommandoen skal finne YAML-konfigurasjonsfilen og kjøre beholderen med de angitte verdiene:

Konklusjon

Du har nå lært hvordan du kan konfigurere og kjøre Apache Kafka fra en docker compose YAML-konfigurasjonsfil.