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.
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.
- 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
- 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.
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.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
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>;
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.>';
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 = .*
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
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
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.
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:
Si hospeda Apache Kafka en Kubernetes mediante el operador Strimzi de CNCF, puede usar el ejemplo Strimzi de Mirror Maker 2 para Event Hubs.
Pasos siguientes
Para obtener más información acerca de Event Hubs para Kafka, consulte los artículos siguientes: