Replicación de datos de un clúster de Kafka en Event Hubs mediante Apache Kafka Mirror Maker 2

En este tutorial se muestra cómo replicar datos de un clúster de Kafka existente en Azure Event Hubs mediante Mirror Maker 2.

Imagen en la que se muestra el flujo de eventos de Kafka MirrorMaker a Event Hubs.

Nota

Este ejemplo está disponible en GitHub.

En este tutorial, aprenderá a:

  • Creación de un espacio de nombres de Event Hubs
  • Configuración o uso de un clúster de Kafka existente
  • Configuración de Kafka Mirror Maker 2
  • Ejecución de Kafka Mirror Maker 2

Introducción

Apache Kafka MirrorMaker 2.0 (MM2) está diseñado para facilitar la creación de reflejo o replicación de temas de un clúster de Kafka en otro. Mirror Maker usa el marco Kafka Connect para simplificar la configuración y el escalado. Para obtener información más detallada sobre Kafka MirrorMaker, consulte la guía de creación de reflejo de Kafka para MirrorMaker.

Como Azure Event Hubs es compatible con el protocolo Apache Kafka, puede usar Mirror Maker 2 para replicar datos entre un clúster de Kafka existente y un espacio de nombres de Event Hubs.

Mirror Maker 2 detecta dinámicamente los cambios en los temas y garantiza que las propiedades del tema de origen y de destino se sincronicen, incluidos los desplazamientos y las particiones. Se puede usar para replicar datos bidireccionalmente entre el clúster de Kafka y el espacio de nombres de Event Hubs.

Requisitos previos

Para completar este tutorial, asegúrese de disponer de los siguientes elementos:

  • Lea el artículo Event Hubs para Apache Kafka.
  • Suscripción a Azure. Si no tiene una, cree una cuenta gratuita antes de empezar.
  • Kit de desarrollo de Java (JDK) 1.7+
    • En Ubuntu, ejecute apt-get install default-jdk para instalar el JDK.
    • Asegúrese de establecer la variable de entorno JAVA_HOME para que apunte a la carpeta donde está instalado el JDK.
  • Descargue e instale un archivo binario de Maven
    • En Ubuntu, puede ejecutar apt-get install maven para instalar Maven.
  • Git
    • En Ubuntu, puede ejecutar sudo apt-get install git para instalar Git.
  • Distribución de Apache Kafka
    • Descargue la distribución preferida de Apache Kafka (que debe incluir la distribución de Mirror Maker 2).

Creación de un espacio de nombres de Event Hubs

Se requiere un espacio de nombres de Event Hubs para enviar y recibir de cualquier servicio de Event Hubs. Consulte Creación de un centro de eventos para obtener instrucciones sobre cómo crear un espacio de nombres y un centro de eventos. Asegúrese de copiar la cadena de conexión de Event Hubs para su uso posterior.

Clonación del proyecto de ejemplo

Ahora que tiene una cadena de conexión de Event Hubs, clone el repositorio de Azure Event Hubs para Kafka y vaya a la subcarpeta mirror-maker-2:

git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/mirror-maker-2

Configuración o uso de un clúster de Kafka existente

Si no tiene un clúster de Kafka existente, use la guía de inicio rápido de Kafka para configurar un clúster de Kafka con la configuración deseada (o use un clúster de Kafka existente). Con fines de prueba, también puede crear un par de temas en el clúster de Kafka recientemente creado y publicar datos en ellos.

Si ya tiene un clúster de Kafka local o en un servicio en la nube de Kafka administrado, puede usarlo para replicar los datos existentes en Event Hubs.

Configuración de Kafka Mirror Maker 2

La distribución de Apache Kafka viene con el script connect-mirror-maker.sh, que se incluye con la biblioteca de Kafka que implementa un clúster distribuido de Mirror Maker 2. Administra los trabajos de conexión internamente en función de un archivo de configuración. Internamente, el controlador de MirrorMaker crea y controla pares de cada conector: MirrorSource, MirrorSink, MirrorCheckpoint y MirrorHeartbeat.

  1. Para configurar Mirror Maker 2 a fin de replicar datos, debe actualizar el archivo kafka-to-eh-connect-mirror-maker.properties de configuración de Mirror Maker 2 para definir la topología de replicación.

  2. En el archivo de configuración kafka-to-eh-connect-mirror-maker.properties, defina los alias de clúster que tiene previsto usar para el clúster de Kafka (origen) y Event Hubs (destino).

     # cluster aliases 
     clusters = source, destination
    
  3. Después, especifique la información de conexión del origen, que es el clúster de Kafka.

     source.bootstrap.servers = your-kafka-cluster-hostname:9092
     #source.security.protocol=SASL_SSL
     #source.sasl.mechanism=PLAIN
     #source.sasl.jaas.config=<replace sasl jaas config of your Kafka cluster>;
    
  4. Especifique la información de conexión del destino, que es el espacio de nombres de Event Hubs que ha creado.

     destination.bootstrap.servers = <your-enventhubs-namespace>.servicebus.windows.net:9093
     destination.security.protocol=SASL_SSL
     destination.sasl.mechanism=PLAIN
     destination.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username='$ConnectionString' password='<Your Event Hubs namespace connection string.>';
    
  5. Habilite el flujo de replicación desde el clúster de Kafka de origen al espacio de nombres de Event Hubs de destino.

     source->destination.enabled = true
     source->destination.topics = .*
    
  6. Actualice el factor de replicación de los temas remotos y los temas internos que crea Mirror Maker en el destino.

     replication.factor=3
    
     checkpoints.topic.replication.factor=3
     heartbeats.topic.replication.factor=3
     offset-syncs.topic.replication.factor=3    
    
     offset.storage.replication.factor=3
     status.storage.replication.factor=3
     config.storage.replication.factor=3
    
  7. Después, copie el archivo de configuración kafka-to-eh-connect-mirror-maker.properties en el directorio de configuración de la distribución de Kafka y, así, podrá ejecutar el script de Mirror Maker 2 con el comando siguiente.

     ./bin/connect-mirror-maker.sh ./config/kafka-to-eh-connect-mirror-maker.properties
    
  8. Tras la ejecución correcta del script, debería ver los temas y eventos de Kafka que se replican en el espacio de nombres de Event Hubs.

  9. Para comprobar que los eventos llegan a la instancia de Event Hubs habilitada para Kafka, consulte las estadísticas de entrada en Azure Portal o ejecute un consumidor en Event Hubs.

Ejemplos

Consulte los siguientes ejemplos en GitHub:

Pasos siguientes

Para obtener más información acerca de Event Hubs para Kafka, consulte los artículos siguientes: