Come creare un argomento Kafka utilizzando Docker Compose

1 feb 2024 3 min di lettura
Come creare un argomento Kafka utilizzando Docker Compose
Indice dei contenuti

Introduzione

Apache Kafka è una piattaforma di streaming distribuita che consente di creare pipeline e applicazioni di dati in streaming in tempo reale. La configurazione di Kafka può essere complessa, ma Docker Compose semplifica il processo definendo ed eseguendo applicazioni Docker multi-contenitore. Questa guida fornisce un approccio passo passo alla creazione di un argomento Kafka utilizzando Docker Compose, rendendolo accessibile sia agli sviluppatori che ai professionisti DevOps.

Prerequisiti

Prima di immergerti nel processo di creazione, assicurati di avere i seguenti prerequisiti installati sul tuo sistema:

  • Docker : offre la possibilità di creare, distribuire ed eseguire applicazioni utilizzando i contenitori.
  • Docker Compose : uno strumento per definire ed eseguire applicazioni Docker multi-contenitore.

Passaggio 1: crea un file di composizione Docker

Il primo passo prevede la creazione di un file docker-compose.yml. Questo file definisce i servizi Kafka e Zookeeper necessari per l'esecuzione dell'istanza Kafka. Zookeeper è un servizio centralizzato per il mantenimento delle informazioni di configurazione, la denominazione, la sincronizzazione distribuita e la fornitura di servizi di gruppo.


version: '3'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
    networks:
      - kafka-net
  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9092,OUTSIDE://localhost:9093
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
      KAFKA_LISTENERS: INSIDE://0.0.0.0:9092,OUTSIDE://0.0.0.0:9093
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_CREATE_TOPICS: "YourTopicName:1:1"
    networks:
      - kafka-net
networks:
  kafka-net:
    driver: bridge

Sostituisci YourTopicName con il nome desiderato per il tuo argomento Kafka. Il formato della variabile di ambiente KAFKA_CREATE_TOPICS è TopicName:NumberOfPartitions:ReplicationFactor .

Passaggio 2: esecuzione di Docker Compose

Passare alla directory contenente il file docker-compose.yml ed eseguire il seguente comando nel terminale:

docker-compose up -d

Questo comando scaricherà le immagini Docker necessarie per Kafka e Zookeeper, quindi avvierà i contenitori in modalità distaccata.

Passaggio 3: verifica della creazione dell'argomento

Per verificare che l'argomento Kafka sia stato creato, puoi utilizzare lo strumento da riga di comando degli argomenti Kafka fornito con Kafka. Esegui il comando seguente per elencare gli argomenti per verificare che l'argomento sia stato creato:

docker-compose exec kafka kafka-topics.sh --list --zookeeper zookeeper:2181 

Dovresti vedere YourTopicName elencato tra gli argomenti.

Passaggio 4: produzione e consumo di messaggi

Per testare ulteriormente la tua configurazione, puoi produrre e consumare messaggi con gli script produttore e consumatore della console Kafka.

Produzione di messaggi:

Nella bash del contenitore Kafka, esegui:

docker-compose exec kafka kafka-console-producer.sh --broker-list localhost:9092 --topic YourTopicName 

Dopo aver eseguito il comando, puoi digitare i messaggi nella console. Premi Ctrl+D per inviare i messaggi.

Consumo di messaggi:

Apri un'altra sessione del terminale, accedi nuovamente al contenitore Kafka ed esegui:

docker-compose exec kafka kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic YourTopicName --from-beginning 

Dovresti vedere i messaggi che hai prodotto in precedenza.

Passaggio 4: creazione di un argomento Kafka (facoltativo)

Per impostazione predefinita, la finestra mobile crea argomenti definiti con la variabile KAFKA_CREATE_TOPICS nel docker-compose.yamlfile. Ma puoi comunque creare nuovi argomenti Kafka con il seguente comando:

docker-compose exec kafka kafka-topics.sh --create --topic NewTopicName --partitions 1 --replication-factor 1 --bootstrap-server kafka:9092 

Sostituisci "NewTopicName" con il nome del nuovo argomento. Il comando precedente inizializza un nuovo argomento e configurato con un'unica partizione e un'unica replica, tramite un broker Kafka sulla porta 9092.

Successivamente, elenca gli argomenti per verificare che l'argomento sia stato creato:

docker-compose exec kafka kafka-topics.sh --list --zookeeper zookeeper:2181 

Questo elencherà tutti gli argomenti, inclusi quelli creati sopra.

NOTA: a causa delle limitazioni nei nomi delle metriche, gli argomenti con un punto ('.') o un carattere di sottolineatura ('_') potrebbero entrare in conflitto. Per evitare problemi è meglio usarne uno, ma non entrambi.

Conclusione

Ora hai creato con successo un argomento Kafka utilizzando Docker Compose e ne hai verificato la funzionalità producendo e consumando messaggi. Questa configurazione non solo semplifica il processo di gestione di Kafka, ma fornisce anche un ambiente scalabile e facilmente riproducibile per le tue applicazioni di streaming. Che tu stia sviluppando localmente o distribuendo in un ambiente di produzione, Docker Compose con Kafka offre un potente set di strumenti per semplificare le pipeline di streaming dei dati.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.