Replizieren von Daten aus einem Kafka-Cluster in Event Hubs mithilfe von Apache Kafka Mirror Maker 2
In diesem Tutorial wird gezeigt, wie Sie mithilfe von MirrorMaker 2 Daten aus einem vorhandenen Kafka-Cluster in Azure Event Hubs replizieren.
Hinweis
Dieses Beispiel ist auf GitHub verfügbar.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen eines Event Hubs-Namespace
- Einrichten oder Verwenden eines vorhandenen Kafka-Clusters
- Konfigurieren von Kafka MirrorMaker 2
- Ausführen von Kafka MirrorMaker 2
Einführung
Apache Kafka MirrorMaker 2.0 (MM2) wurde zur Vereinfachung der Spiegelung oder Replikation von Themen zwischen Kafka-Clustern konzipiert. MirrorMaker verwendet das Kafka Connect-Framework, um die Konfiguration und Skalierung zu vereinfachen. Ausführlichere Informationen zu Kafka MirrorMaker finden Sie im Leitfaden zur Kafka-Spiegelung und zu MirrorMaker.
Da Azure Event Hubs mit dem Apache Kafka-Protokoll kompatibel ist, können Sie MirrorMaker 2 verwenden, um Daten zwischen einem vorhandenen Kafka-Cluster und einem Event Hubs-Namespace zu replizieren.
MirrorMaker 2 erkennt dynamisch Änderungen an Themen und stellt sicher, dass Eigenschaften von Quell- und Zielthemen synchronisiert werden, einschließlich Offsets und Partitionen. Es kann verwendet werden, um Daten bidirektional zwischen Kafka-Cluster und Event Hubs-Namespace zu replizieren.
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. Sollten Sie kein Abonnement 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
- Apache Kafka-Distribution
- Laden Sie die bevorzugte Apache Kafka-Distribution herunter. (Sie sollte die Mirror Maker 2-Distribution enthalten.)
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-2
navigieren:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/mirror-maker-2
Einrichten oder Verwenden eines vorhandenen Kafka-Clusters
Wenn Sie nicht über einen vorhandenen Kafka-Cluster verfügen, verwenden Sie die Kafka-Schnellstartanleitung, um einen Kafka-Cluster mit den gewünschten Einstellungen einzurichten. (Oder verwenden Sie einen vorhandenen Kafka-Cluster.) Zu Testzwecken können Sie auch einige Themen im neu erstellten Kafka-Cluster erstellen und Daten darin veröffentlichen.
Wenn Sie bereits über einen Kafka-Cluster in der lokalen Umgebung oder in einem verwalteten Kafka-Clouddienst verfügen, können Sie mit ihm vorhandene Daten in Event Hubs replizieren.
Konfigurieren von Kafka MirrorMaker 2
Die Apache Kafka-Distribution enthält das Skript connect-mirror-maker.sh
, das mit der Kafka-Bibliothek gebündelt ist, die einen verteilten Mirror Maker 2-Cluster implementiert. Sie verwaltet die Connect-Worker intern basierend auf einer Konfigurationsdatei. Intern erstellt und verarbeitet der MirrorMaker-Treiber Paare aus den jeweiligen Connectors: MirrorSource-Connector, MirrorSink-Connector, MirrorCheckpoint-Connector und MirrorHeartbeat-Connector.
Um MirrorMaker 2 zum Replizieren von Daten zu konfigurieren, müssen Sie die MirrorMaker 2-Konfigurationsdatei
kafka-to-eh-connect-mirror-maker.properties
aktualisieren, um die Replikationstopologie zu definieren.Definieren Sie in der Konfigurationsdatei
kafka-to-eh-connect-mirror-maker.properties
Clusteraliase, die Sie für Ihren Kafka-Cluster (Quelle) und Event Hubs (Ziel) verwenden möchten.# cluster aliases clusters = source, destination
Geben Sie dann die Verbindungsinformationen für Ihre Quelle an, bei der es sich um Ihren Kafka-Cluster handelt.
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>;
Geben Sie Verbindungsinformationen für das Ziel an, d. h. den von Ihnen erstellten Event Hubs-Namespace.
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.>';
Aktivieren Sie den Replikationsfluss vom Kafka-Quellcluster zum Event Hubs-Zielnamespace.
source->destination.enabled = true source->destination.topics = .*
Aktualisieren Sie den Replikationsfaktor der Remotethemen und internen Themen, die MirrorMaker am Ziel erstellt.
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
Anschließend kopieren Sie die Konfigurationsdatei
kafka-to-eh-connect-mirror-maker.properties
in das Konfigurationsverzeichnis der Kafka-Distribution und können das MirrorMaker 2-Skript mithilfe des folgenden Befehls ausführen:./bin/connect-mirror-maker.sh ./config/kafka-to-eh-connect-mirror-maker.properties
Nach erfolgreicher Ausführung des Skripts sollten die Kafka-Themen und -Ereignisse in Ihrem Event Hubs-Namespace repliziert werden.
Sie können überprüfen, ob die Ereignisse die Kafka-fähige Event Hubs-Instanz erreichen, indem Sie im Azure-Portal die Eingangsstatistiken anzeigen oder einen Consumer für Event Hubs ausführen.
Beispiele
Im Folgenden sind auf GitHub verfügbare Beispiele aufgeführt:
Wenn Sie Apache Kafka in Kubernetes mithilfe des CNCF-Strimzi-Operators hosten, können Sie das Strimzi MirrorMaker 2-Beispiel für Event Hubs verwenden.
Nächste Schritte
Weitere Informationen zu Event Hubs für Kafka finden Sie in folgenden Artikeln: