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.

Abbildung: Ereignisfluss von Kafka MirrorMaker zu Event Hubs

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 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.
  • 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.

  1. 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.

  2. 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
    
  3. 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>;
    
  4. 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.>';
    
  5. Aktivieren Sie den Replikationsfluss vom Kafka-Quellcluster zum Event Hubs-Zielnamespace.

     source->destination.enabled = true
     source->destination.topics = .*
    
  6. 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
    
  7. 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
    
  8. Nach erfolgreicher Ausführung des Skripts sollten die Kafka-Themen und -Ereignisse in Ihrem Event Hubs-Namespace repliziert werden.

  9. 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:

Nächste Schritte

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