Configuración Básica de Mirror Maker 2.0 en Apache Kafka (2023)

Apache Kafka se ha consolidado como una parte integral de muchos sistemas y soluciones en los últimos años, abarcando redes, servidores web, big data, entre otros. Su arquitectura y implementación lo convierten en una herramienta robusta, tolerante a fallos y escalable. Esto facilita la organización más eficiente de flujos de datos y canalizaciones para manejar grandes volúmenes de información. No es sorprendente que Apache Kafka haya crecido rápidamente en popularidad, generando un ecosistema con docenas de herramientas, marcos de trabajo y complementos a su alrededor.

Kafka Connect y el Plugin Mirror Maker 2.0

Kafka Connect es una herramienta para transmitir datos de manera escalable y confiable entre Apache Kafka y otros sistemas de datos. A través de conectores, que son plugins que proporcionan integración con sistemas de terceros, es posible lograr la integración sin necesidad de programar, simplemente mediante la creación de algunos archivos de configuración.

Uno de estos conectores es Mirror Maker 2.0, diseñado específicamente para replicar temas de Kafka a otro clúster de Kafka. Aunque pueda parecer curioso replicar Kafka a Kafka, esta necesidad surge en situaciones donde es esencial replicar algunos temas a un clúster externo sin proporcionar acceso directo desde el clúster externo a los temas originales.

Ingredientes para la Configuración

La mejor opción para implementar localmente todos los servicios de este tutorial es utilizar Docker. A través de un archivo de configuración Docker Compose, desplegaremos los servicios esenciales:

  • Apache Kafka (2 unidades)
  • Apache Zookeeper (2 unidades)
  • Kafka Connect (1 unidad)

Convenientemente, Confluent proporciona imágenes de Docker para estos servicios, lo que simplifica la configuración mediante variables de entorno.

# Extracto de docker-compose.yml
version: '2'
networks:
  kafka_network:
    name: kafka-network
services:
  zookeeper:
    # Configuración para Zookeeper
  broker:
    # Configuración para el primer broker de Kafka
  broker2:
    # Configuración para el segundo broker de Kafka
  connect:
    # Configuración para Kafka Connect

Configuración de Kafka Connect

Kafka Connect requiere una configuración específica para funcionar correctamente. Utilizaremos variables de entorno en el archivo Docker Compose para especificar parámetros clave, como los servidores de arranque de Kafka, el puerto REST, el grupo de Kafka Connect, entre otros.

# Configuración de Kafka Connect en Docker Compose
connect:
  image: confluentinc/cp-kafka-connect:6.2.0
  hostname: connect
  container_name: connect
  networks:
    - kafka_network
  depends_on:
    - zookeeper
    - broker
  ports:
    - "28082:28082"
    - "9998:9998"
    - "9999:9999"
    - "18889:18889"
  environment:
    - CONNECT_BOOTSTRAP_SERVERS=broker:29092
    - CONNECT_REST_PORT=28082
    # Otras configuraciones...

Creación del Tema de Prueba y Configuración del Conector

Antes de iniciar el proceso de replicación, necesitamos un tema en la instancia de Kafka y un flujo de datos para ese tema. Crearemos el tema y utilizaremos el conector Mirror Maker 2.0 para replicar los datos.

# Creación del tema en el primer broker
docker exec -it broker /bin/bash
kafka-topics --create --topic to_replicate --bootstrap-server broker:29092

# Envío de mensajes al tema para simular datos
while [[ true ]]; do
  echo "$RANDOM" | kafka-console-producer --topic to_replicate --bootstrap-server broker:29092
  sleep 1
done &

Luego, configuraremos el conector Mirror Maker 2.0 mediante un archivo JSON que define los parámetros clave del conector.

// Contenido del archivo connectors.json
{
  "name": "test_mirror",
  "config": {
    "connector.class": "org.apache.kafka.connect.mirror.MirrorSourceConnector",
    "name": "test_mirror",
    "source.cluster.alias": "source",
    "topics": "to_replicate",
    "source.cluster.bootstrap.servers": "broker:29092",
    "target.cluster.bootstrap.servers": "broker2:29093",
    "producer.override.bootstrap.servers": "broker2:29093",
    "offset-syncs.topic.replication.factor": "1"
  }
}

Inicio del Proceso de Replicación

Finalmente, iniciaremos el proceso de replicación utilizando la API REST de Kafka Connect. Realizaremos una solicitud POST con la configuración del conector.

# Creación del conector mediante la API REST de Kafka Connect
cat connectors.json | curl -X POST -H 'Content-Type: application/json' localhost:28082/connectors --data-binary @-

# Verificación de la creación del conector
curl localhost:28082/connectors

Validación del Proceso de Replicación

Verificaremos que el proceso de replicación se ha completado correctamente revisando el segundo broker y observando la presencia del tema replicado.

# Verificación de la existencia del tema replicado en el segundo broker
docker exec -it broker2 /bin/bash
kafka-topics --list --bootstrap-server broker2:29093

# Consumo de mensajes del tema replicado para asegurar la replicación
kafka-console-consumer --topic source.to_replicate --bootstrap-server broker2:29093

¡Felicidades! Ahora sabe cómo configurar y utilizar Mirror Maker 2.0 para replicar temas de Kafka a otro clúster de Kafka. Este tutorial proporciona una guía detallada para una configuración básica, pero hay más posibilidades y ajustes avanzados que se pueden explorar para adaptarse a requisitos específicos. Si desea obtener más información sobre las capacidades de configuración, ajustes de rendimiento o monitoreo, no dude en preguntar en los comentarios. Estamos aquí para ayudarle a aprovechar al máximo Mirror Maker 2.0 en su entorno.

Top Articles
Latest Posts
Article information

Author: Foster Heidenreich CPA

Last Updated: 20/11/2023

Views: 6257

Rating: 4.6 / 5 (76 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Foster Heidenreich CPA

Birthday: 1995-01-14

Address: 55021 Usha Garden, North Larisa, DE 19209

Phone: +6812240846623

Job: Corporate Healthcare Strategist

Hobby: Singing, Listening to music, Rafting, LARPing, Gardening, Quilting, Rappelling

Introduction: My name is Foster Heidenreich CPA, I am a delightful, quaint, glorious, quaint, faithful, enchanting, fine person who loves writing and wants to share my knowledge and understanding with you.