Répliquer des données d’un cluster Kafka vers Event Hubs à l’aide d’Apache Kafka Mirror Maker 1

Ce tutoriel montre comment mettre en miroir un répartiteur Kafka dans Azure Event Hubs avec Kafka Mirror Maker 1.

Kafka MirrorMaker avec Event Hubs

Notes

Cet exemple est disponible sur GitHub.

Notes

Cet article contient des références à un terme qui n’est plus utilisé par Microsoft. Lorsque le terme sera supprimé du logiciel, nous le supprimerons de cet article.

Dans ce tutoriel, vous allez apprendre à :

  • Créer un espace de noms Event Hubs
  • Cloner l’exemple de projet
  • Configurer un cluster Kafka
  • Configurer Kafka MirrorMaker
  • Exécuter Kafka MirrorMaker

Introduction

Ce tutoriel montre comment un hub d’événements et Kafka MirrorMaker peuvent intégrer un pipeline Kafka existant dans Azure en mettant en miroir le flux d’entrée Kafka dans le service Event Hubs. Cette opération permet l’intégration des flux Apache Kafka suivant plusieurs modèles de fédération.

Un point de terminaison Kafka Azure Event Hubs vous permet de vous connecter à des Azure Event Hubs (c’est-à-dire, des clients Kafka) en utilisant le protocole Kafka. En apportant des modifications minimales à une application Kafka, vous pouvez vous connecter à Azure Event Hubs et profiter des avantages de l’écosystème Azure. Event Hubs prend actuellement en charge le protocole de la version 1.0 et des versions ultérieures d’Apache Kafka.

Vous pouvez utiliser Apache Kafka MirrorMaker 1 de façon unidirectionnelle d’Apache Kafka à Event Hubs. MirrorMaker 2 peut fonctionner dans les deux sens. Cependant, les MirrorCheckpointConnector et MirrorHeartbeatConnector, qui sont paramétrables dans MirrorMaker 2, doivent être configurés pour pointer vers le répartiteur Apache Kafka et non Event Hubs. Ce tutoriel montre comment configurer MirrorMaker 1.

Prérequis

Pour suivre ce tutoriel, veillez à disposer des éléments suivants :

  • Lisez l’article Event Hubs pour Apache Kafka.
  • Un abonnement Azure. Si vous n’en avez pas, créez un compte gratuit avant de commencer.
  • Java Development Kit (JDK) 1.7+
    • Sur Ubuntu, exécutez apt-get install default-jdk pour installer le JDK.
    • Veillez à définir la variable d’environnement JAVA_HOME pour qu’elle pointe vers le dossier dans lequel le JDK est installé.
  • Téléchargé et installé une archive binaire Maven.
    • Sur Ubuntu, vous pouvez exécuter apt-get install maven pour installer Maven.
  • Git
    • Sur Ubuntu, vous pouvez exécuter sudo apt-get install git pour installer Git.

Créer un espace de noms Event Hubs

Un espace de noms Event Hubs est requis pour échanger avec tout service Event Hubs. Pour obtenir des instructions sur la création d’un espace de noms et d’un Event Hub, consultez Créer un Event Hub. Veillez à copier la chaîne de connexion Event Hubs pour une utilisation ultérieure.

Cloner l’exemple de projet

Maintenant que vous disposez d’une chaîne de connexion Event Hubs, clonez le dépôt Azure Event Hubs pour Kafka, puis accédez au sous-dossier mirror-maker :

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

Configurer un cluster Kafka

Utilisez le guide de démarrage rapide de Kafka pour configurer un cluster avec les paramètres souhaités (ou utilisez un cluster Kafka existant).

Configurer Kafka MirrorMaker

Kafka MirrorMaker permet la « mise en miroir » d’un flux. Étant donné des clusters Kafka source et cible, MirrorMaker garantit que tous les messages envoyés au cluster source sont reçus à la fois par les clusters source et cible. Cet exemple montre comment mettre en miroir un cluster Kafka source avec un Event Hub de destination. Ce scénario peut être utilisé pour envoyer des données d’un pipeline Kafka existant à Event Hubs sans interrompre le flux de données.

Pour plus d’informations sur Kafka MirrorMaker, voir le Guide Mise en miroir de Kafka/MirrorMaker.

Pour configurer Kafka MirrorMaker, attribuez-lui un cluster Kafka en tant que contrôle serveur consommateur/source et un Event Hub en tant que contrôle serveur producteur/destination.

Configuration du consommateur

Mettez à jour le fichier de configuration du consommateur source-kafka.config, qui indique à MirrorMaker les propriétés du cluster Kafka source.

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

Configuration du producteur

Maintenant, mettez à jour le fichier de configuration du producteur mirror-eventhub.config, qui indique à MirrorMaker d’envoyer les données dupliquées (ou « en miroir ») au service Event Hubs. Modifiez en particulier bootstrap.servers et sasl.jaas.config pour pointer vers votre point de terminaison Kafka Event Hubs. Le service Event Hubs nécessite une communication sécurisée (SASL), qui est obtenue en définissant les trois dernières propriétés dans la configuration suivante :

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}";

Important

Remplacez {YOUR.EVENTHUBS.CONNECTION.STRING} par la chaîne de connexion de votre espace de noms Event Hubs. Pour savoir comment obtenir la chaîne de connexion, consultez Obtenir une chaîne de connexion Event Hubs. Voici un exemple de configuration : sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Exécuter Kafka MirrorMaker

Exécutez le script Kafka MirrorMaker à partir du répertoire racine Kafka en utilisant les fichiers de configuration récemment mis à jour. Veillez à copier les fichiers de configuration dans le répertoire Kafka racine, ou à mettre à jour leurs chemins dans la commande suivante.

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

Pour vérifier que les événements atteignent l’Event Hub, consultez les statistiques d’entrée sur le Portail Azure ou exécutez un contrôle serveur consommateur sur l’Event Hub.

Lorsque MirrorMaker est en cours d’exécution, tous les événements envoyés au cluster Kafka source sont reçus à la fois par le cluster Kafka et par le hub d’événements en miroir. En utilisant MirrorMaker et un point de terminaison Kafka Event Hubs, vous pouvez migrer un pipeline Kafka existant vers le service Azure Event Hubs géré sans modifier le cluster existant ou interrompre le flux de données en cours.

Exemples

Consultez les exemples suivants sur GitHub :

Étapes suivantes

Pour plus d’informations sur Event Hubs pour Kafka, consultez les articles suivants :