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.
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.
- En Ubuntu, ejecute
-
Descargue e instale un archivo binario de Maven
- En Ubuntu, puede ejecutar
apt-get install maven
para instalar Maven.
- En Ubuntu, puede ejecutar
-
Git
- En Ubuntu, puede ejecutar
sudo apt-get install git
para instalar Git.
- En Ubuntu, puede ejecutar
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:
- Código de ejemplo de este tutorial en GitHub
- Kafka MirrorMaker para Azure Event Hubs que se ejecuta en una instancia de contenedor de Azure
Pasos siguientes
Para obtener más información acerca de Event Hubs para Kafka, consulte los artículos siguientes:
- Conexión de Apache Spark a un centro de eventos
- Conexión de Apache Flink a un centro de eventos
- Integración de Kafka Connect con un centro de eventos
- Exploración de ejemplos en nuestro GitHub
- Conexión de Akka Streams a un centro de eventos
- Guía del desarrollador de Apache Kafka para Azure Event Hubs