Introducción
Apache Kafka es una plataforma de transmisión distribuida que le permite crear aplicaciones y canalizaciones de datos de transmisión en tiempo real. Configurar Kafka puede ser complejo, pero Docker Compose simplifica el proceso al definir y ejecutar aplicaciones Docker de múltiples contenedores. Esta guía proporciona un enfoque paso a paso para crear un tema de Kafka utilizando Docker Compose, haciéndolo accesible tanto para desarrolladores como para profesionales de DevOps.
Requisitos previos
Antes de sumergirse en el proceso de creación, asegúrese de tener los siguientes requisitos previos instalados en su sistema:
- Docker: brinda la capacidad de crear, implementar y ejecutar aplicaciones utilizando contenedores.
- Docker Compose: una herramienta para definir y ejecutar aplicaciones Docker de múltiples contenedores.
Paso 1: cree un archivo de redacción de Docker
El primer paso consiste en crear un archivo docker-compose.yml
. Este archivo define los servicios Kafka y Zookeeper necesarios para ejecutar la instancia de Kafka. Zookeeper es un servicio centralizado para mantener información de configuración, nombres, sincronización distribuida y proporcionar servicios grupales.
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
Reemplace YourTopicName con el nombre deseado para su tema de Kafka. El formato de la variable de entorno KAFKA_CREATE_TOPICS es TopicName:NumberOfPartitions:ReplicationFactor.
Paso 2: ejecutar Docker Compose
Navegue hasta el directorio que contiene el archivo docker-compose.yml
y ejecute el siguiente comando en la terminal:
docker-compose up -d
Este comando descargará las imágenes de Docker necesarias para Kafka y Zookeeper y luego iniciará los contenedores en modo independiente.
Paso 3: verificar la creación del tema
Para verificar que se haya creado el tema de Kafka, puede utilizar la herramienta de línea de comandos de temas de Kafka que viene con Kafka. Ejecute el siguiente comando para enumerar temas y verificar que se haya creado el tema:
docker-compose exec kafka kafka-topics.sh --list --zookeeper zookeeper:2181
Debería ver YourTopicName entre los temas.
Paso 4: Producción y consumo de mensajes
Para probar más a fondo su configuración, puede producir y consumir mensajes con los scripts de productor y consumidor de la consola Kafka.
Producción de mensajes:
En el contenedor de Kafka, ejecute:
docker-compose exec kafka kafka-console-producer.sh --broker-list localhost:9092 --topic YourTopicName
Después de ejecutar el comando, puede escribir mensajes en la consola. Presione Ctrl+D para enviar mensajes.
Consumo de mensajes:
Abra otra sesión de terminal, acceda nuevamente al contenedor de Kafka y ejecute:
docker-compose exec kafka kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic YourTopicName --from-beginning
Deberías ver los mensajes que generaste anteriormente.
Paso 4: crea un tema de Kafka (opcional)
De forma predeterminada, Docker crea temas definidos con la variable KAFKA_CREATE_TOPICS en el archivo docker-compose.yaml
. Pero aún puedes crear nuevos temas de Kafka con el siguiente comando:
docker-compose exec kafka kafka-topics.sh --create --topic NewTopicName --partitions 1 --replication-factor 1 --bootstrap-server kafka:9092
Reemplace "NewTopicName" con el nombre del nuevo tema. El comando anterior inicializa un tema nuevo y lo configura con una única partición y una única réplica, a través de un intermediario Kafka en el puerto 9092.
A continuación, enumere los temas para verificar que se creó el tema:
docker-compose exec kafka kafka-topics.sh --list --zookeeper zookeeper:2181
Esto enumerará todos los temas, incluidos los creados anteriormente.
NOTA: Debido a limitaciones en los nombres de métricas, los argumentos con un punto ('.') o un guión bajo ('_') pueden entrar en conflicto. Para evitar problemas es mejor utilizar uno, pero no ambos.
Conclusión
Ya ha creado con éxito un tema de Kafka utilizando Docker Compose y ha verificado su funcionalidad produciendo y consumiendo mensajes. Esta configuración no sólo simplifica el proceso de gestión de Kafka, sino que también proporciona un entorno escalable y fácilmente reproducible para sus aplicaciones de streaming. Ya sea que esté desarrollando localmente o implementando en un entorno de producción, Docker Compose con Kafka ofrece un poderoso conjunto de herramientas para simplificar las canalizaciones de transmisión de datos.