Replizieren von Daten aus einem Kafka-Cluster in Event Hubs mithilfe von Apache Kafka Mirror Maker 1

In diesem Tutorial wird gezeigt, wie Sie einen Kafka-Broker in Azure Event Hubs mit Kafka Mirror Maker 1 spiegeln.

Kafka MirrorMaker mit Event Hubs

Hinweis

Dieses Beispiel ist auf GitHub verfügbar.

Hinweis

In diesem Artikel wird ein Begriff verwendet, der von Microsoft nicht mehr genutzt wird. Sobald der Begriff aus der Software entfernt wurde, wird er auch aus diesem Artikel entfernt.

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen eines Event Hubs-Namespace
  • Klonen des Beispielprojekts
  • Einrichten eines Kafka-Clusters
  • Konfigurieren von Kafka MirrorMaker
  • Ausführen von Kafka MirrorMaker

Einführung

In diesem Tutorial erfahren Sie, wie Sie mit einem Event Hub und Kafka MirrorMaker eine vorhandene Kafka-Pipeline in Azure integrieren, indem Sie den Kafka-Eingabedatenstrom im Event Hubs-Dienst spiegeln. Dies ermöglicht die Integration von Apache Kafka-Streams mithilfe verschiedener Verbundmuster.

Mit einem Azure Event Hubs-Kafka-Endpunkt können Sie eine Verbindung mit Azure Event Hubs herstellen, indem Sie das Kafka-Protokoll (Kafka-Clients) verwenden. Durch minimale Änderungen an einer Kafka-Anwendung können Sie eine Verbindung mit Azure Event Hubs herstellen und die Vorteile des Azure-Ökosystems nutzen. Event Hubs unterstützt derzeit das Protokoll der Kafka-Version 1.0 und höher.

Sie können Apache Kafka MirrorMaker 1 unidirektional von Apache Kafka in Event Hubs verwenden. MirrorMaker 2 kann in beiden Richtungen verwendet werden. Der MirrorCheckpointConnector und der MirrorHeartbeatConnector, die in MirrorMaker 2 konfigurierbar sind, müssen jedoch so konfiguriert werden, dass sie auf den Apache Kafka-Broker und nicht auf Event Hubs verweisen. In diesem Tutorial wird das Konfigurieren von MirrorMaker 1 gezeigt.

Voraussetzungen

Damit Sie dieses Tutorial ausführen können, benötigen Sie folgende Komponenten:

  • Lesen Sie den Artikel Event Hubs für Apache Kafka.
  • Ein Azure-Abonnement. Wenn Sie keins besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
  • Java Development Kit (JDK) 1.7+
    • Führen Sie unter Ubuntu apt-get install default-jdk aus, um das JDK zu installieren.
    • Achten Sie darauf, dass die Umgebungsvariable „JAVA_HOME“ auf den Ordner verweist, in dem das JDK installiert ist.
  • Führen Sie den Download und die Installation eines binären Maven-Archivs durch.
    • Unter Ubuntu können Sie apt-get install maven ausführen, um Maven zu installieren.
  • Git-Client
    • Unter Ubuntu können Sie sudo apt-get install git ausführen, um Git zu installieren.

Erstellen eines Event Hubs-Namespace

Ein Event Hubs-Namespace ist erforderlich, um Nachrichten an einen Event Hubs-Dienst zu senden und von diesem zu empfangen. Anweisungen zum Erstellen eines Namespace und eines Event Hub finden Sie unter Erstellen eines Event Hubs. Kopieren Sie die Event Hubs-Verbindungszeichenfolge zur späteren Verwendung.

Klonen des Beispielprojekts

Nachdem Sie nun über eine Event Hubs-Verbindungszeichenfolge verfügen, können Sie das Azure Event Hubs für Kafka-Repository klonen und zum Unterordner mirror-maker navigieren:

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

Einrichten eines Kafka-Clusters

Verwenden Sie die Kafka-Schnellstartanleitung, um einen Cluster mit den gewünschten Einstellungen einzurichten (oder verwenden Sie einen vorhandenen Kafka-Cluster).

Konfigurieren von Kafka MirrorMaker

Mit Kafka MirrorMaker wird die „Spiegelung“ eines Datenstroms ermöglicht. Für Kafka-Quell- und -Zielcluster wird mit MirrorMaker sichergestellt, dass alle Nachrichten, die an den Quellcluster gesendet werden, sowohl vom Quell- als auch vom Zielcluster empfangen werden. In diesem Beispiel wird gezeigt, wie Sie einen Kafka-Quellcluster mit einem Event Hub als Ziel spiegeln. Dieses Szenario kann verwendet werden, um Daten aus einer vorhandenen Kafka-Pipeline an Event Hubs zu senden, ohne den Datenfluss zu unterbrechen.

Ausführlichere Informationen zu Kafka MirrorMaker finden Sie im Leitfaden zur Kafka-Spiegelung und zu MirrorMaker.

Richten Sie zum Konfigurieren von Kafka MirrorMaker einen Kafka-Cluster als Consumer/Quelle und einen Event Hub als Producer/Ziel ein.

Consumerkonfiguration

Aktualisieren Sie die Konfigurationsdatei source-kafka.config für den Consumer, über die MirrorMaker die Eigenschaften des Kafka-Quellclusters mitgeteilt werden.

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

Producerkonfiguration

Aktualisieren Sie nun die Konfigurationsdatei mirror-eventhub.config für den Producer, mit der MirrorMaker angewiesen wird, die duplizierten (bzw. „gespiegelten“) Daten an den Event Hubs-Dienst zu senden. Ändern Sie bootstrap.servers und sasl.jaas.config so, dass darin auf Ihren Event Hubs-Kafka-Endpunkt verwiesen wird. Für den Event Hubs-Dienst ist eine sichere Kommunikation (SASL) erforderlich. Dies wird erreicht, indem die letzten drei Eigenschaften in der folgenden Konfiguration festgelegt werden:

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

Wichtig

Ersetzen Sie {YOUR.EVENTHUBS.CONNECTION.STRING} durch die Verbindungszeichenfolge für Ihren Event Hubs-Namespace. Anweisungen zum Abrufen der Verbindungszeichenfolge finden Sie unter Abrufen einer Event Hubs-Verbindungszeichenfolge. Hier sehen Sie eine Beispielkonfiguration: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Ausführen von Kafka MirrorMaker

Führen Sie das Kafka MirrorMaker-Skript im Kafka-Stammverzeichnis aus, indem Sie die aktualisierten Konfigurationsdateien verwenden. Achten Sie darauf, dass Sie entweder die Konfigurationsdateien in das Kafka-Stammverzeichnis kopieren oder die Pfade im folgenden Befehl aktualisieren.

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

Sie können überprüfen, ob die Ereignisse den Event Hub erreichen, indem Sie im Azure-Portal die Eingangsstatistiken anzeigen oder einen Consumer für den Event Hub ausführen.

Bei Ausführung von MirrorMaker werden alle Ereignisse, die an den Kafka-Quellcluster gesendet werden, sowohl vom Kafka-Cluster als auch vom gespiegelten Event Hub empfangen. Indem MirrorMaker und ein Event Hubs-Kafka-Endpunkt verwendet werden, können Sie eine vorhandene Kafka-Pipeline zum verwalteten Azure Event Hubs-Dienst migrieren, ohne den vorhandenen Cluster zu ändern oder einen ausgehenden Datenfluss zu unterbrechen.

Beispiele

Im Folgenden sind auf GitHub verfügbare Beispiele aufgeführt:

Nächste Schritte

Weitere Informationen zu Event Hubs für Kafka finden Sie in folgenden Artikeln: