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.
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 unter Ubuntu
- 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.
- Unter Ubuntu können Sie
- Git-Client
- Unter Ubuntu können Sie
sudo apt-get install git
ausführen, um Git zu installieren.
- Unter Ubuntu können Sie
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:
- Beispielcode für dieses Tutorial auf GitHub
- Azure Event Hubs Kafka MirrorMaker unter Azure Container Instances
Nächste Schritte
Weitere Informationen zu Event Hubs für Kafka finden Sie in folgenden Artikeln: