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

En este tutorial se muestra cómo crear un reflejo de un agente de Kafka en Azure Event Hubs mediante Kafka Mirror Maker 1.

Kafka MirrorMaker con Event Hubs

Nota

Este ejemplo está disponible en GitHub.

Nota

Este artículo contiene referencias a un término que Microsoft ya no utiliza. Cuando se elimine el término del software, se eliminará también de este artículo.

En este tutorial, aprenderá a:

  • Creación de un espacio de nombres de Event Hubs
  • Clonación del proyecto de ejemplo
  • Configuración de un clúster de Kafka
  • Configurar de Kafka MirrorMaker
  • Ejecución de Kafka MirrorMaker

Introducción

En este tutorial se muestra la manera en que un centro de eventos y Kafka MirrorMaker se pueden integrar en una canalización de Kafka existente en Azure al crear un "reflejo" del flujo de entrada de Kafka en el servicio Event Hubs, lo que permite la integración de secuencias de Apache Kafka mediante el uso de varios patrones de federación.

Un punto de conexión de Kafka en Azure Event Hubs permite conectarse a Azure Event Hubs mediante el protocolo Kafka (es decir, clientes de Kafka). Al realizar cambios mínimos en una aplicación de Kafka, puede conectarse a Azure Event Hubs y disfrutar de las ventajas del ecosistema de Azure. Event Hubs es actualmente compatible con el protocolo de Apache Kafka, versión 1.0 y posteriores.

Puede usar MirrorMaker 1 de Apache Kafka unidireccionalmente desde Apache Kafka a Event Hubs. MirrorMaker 2 se puede usar en ambas direcciones, pero los conectores MirrorCheckpointConnector y MirrorHeartbeatConnector que se pueden configurar en MirrorMaker 2 deben estar configurados para apuntar al agente de Apache Kafka, y no Event Hubs. En este tutorial se muestra la configuración de MirrorMaker 1.

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.

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:

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

Configuración de un clúster de Kafka

Utilice la guía de inicio rápido de Kafka para configurar un clúster con la configuración deseada (o use un clúster de Kafka existente).

Configurar de Kafka MirrorMaker

Kafka MirrorMaker permite la "creación de reflejos" de un flujo de datos. Dados clústeres de Kafka de origen y destino, MirrorMaker garantiza que los mensajes enviados al clúster de origen se reciban tanto en el clúster de origen como en el clúster de destino. En este ejemplo se muestra cómo crear el reflejo de un clúster de Kafka de origen con el centro de eventos de destino. Este escenario puede utilizarse para enviar datos de una canalización de Kafka existente a Event Hubs sin interrumpir el flujo de datos.

Para obtener información más detallada sobre Kafka MirrorMaker, consulte la guía de creación de reflejo de Kafka para MirrorMaker.

Para configurar Kafka MirrorMaker, asígnele un clúster de Kafka como su consumidor u origen, y un centro de evento como su productor o destino.

Configuración del consumidor

Actualice el archivo de configuración del consumidor source-kafka.config, que indica a MirrorMaker las propiedades del clúster de origen de Kafka.

source-kafka.config
bootstrap.servers={SOURCE.KAFKA.IP.ADDRESS1}:{SOURCE.KAFKA.PORT1},{SOURCE.KAFKA.IP.ADDRESS2}:{SOURCE.KAFKA.PORT2},etc
group.id=example-mirrormaker-group
exclude.internal.topics=true
client.id=mirror_maker_consumer

Configuración del productor

Ahora, actualice el archivo de configuración del productor mirror-eventhub.config, que indica a MirrorMaker que envíe los datos duplicados (o "reflejados") al servicio de Event Hubs. En concreto, cambie bootstrap.servers y sasl.jaas.config para que apunten a su punto de conexión de Kafka para Event Hubs. El servicio de Event Hubs requiere una comunicación segura (SASL), que se consigue estableciendo las tres últimas propiedades en la configuración siguiente:

mirror-eventhub.config
bootstrap.servers={YOUR.EVENTHUBS.FQDN}:9093
client.id=mirror_maker_producer

#Required for Event Hubs
sasl.mechanism=PLAIN
security.protocol=SASL_SSL
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="{YOUR.EVENTHUBS.CONNECTION.STRING}";

Importante

Reemplace {YOUR.EVENTHUBS.CONNECTION.STRING} por la cadena de conexión para el espacio de nombres de Event Hubs. Para obtener instrucciones sobre cómo obtener la cadena de conexión, consulte Obtención de una cadena de conexión de Event Hubs. A continuación se muestra un ejemplo de configuración: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Ejecución de Kafka MirrorMaker

Ejecute el script de Kafka MirrorMaker desde el directorio raíz de Kafka con los archivos de configuración recientemente actualizados. Asegúrese de copiar los archivos de configuración al directorio raíz de Kafka, o de actualizar sus rutas de acceso en el siguiente comando.

bin/kafka-mirror-maker.sh --consumer.config source-kafka.config --num.streams 1 --producer.config mirror-eventhub.config --whitelist=".*"

Para comprobar que los eventos llegan al centro de eventos, consulte las estadísticas de entrada en Azure Portal o ejecute un consumidor en el centro de eventos.

Con MirrorMaker en ejecución, los eventos que se envían al clúster de Kafka de origen son recibidos por el clúster de Kafka y el centro de eventos reflejado. Al usar MirrorMaker y un punto de conexión de Kafka para Event Hubs, puede migrar una canalización de Kafka existente al servicio de Azure Event Hubs administrado sin cambiar el clúster existente ni interrumpir ningún flujo de datos en curso.

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: