Delen via


Gegevens van een Kafka-cluster repliceren naar Event Hubs met behulp van Apache Kafka Mirror Maker 2

Deze zelfstudie laat zien hoe u gegevens van een bestaand Kafka-cluster repliceert naar Azure Event Hubs met behulp van Mirror Maker 2.

Afbeelding van de stroom van gebeurtenissen van Kafka MirrorMaker naar Event Hubs.

Notitie

Dit voorbeeld is beschikbaar op GitHub

In deze zelfstudie leert u het volgende:

  • Een Event Hubs-naamruimte maken
  • Een bestaand Kafka-cluster instellen of gebruiken
  • Kafka Mirror Maker 2 configureren
  • Kafka Mirror Maker 2 uitvoeren

Introductie

Apache Kafka MirrorMaker 2.0 (MM2) is ontworpen om het gemakkelijker te maken om onderwerpen van het ene Kafka-cluster naar het andere te spiegelen of te repliceren. Mirror Maker maakt gebruik van het Kafka Connect-framework om de configuratie en het schalen te vereenvoudigen. Zie de Kafka Mirroring/MirrorMaker-handleiding voor meer informatie over Kafka MirrorMaker.

Omdat Azure Event Hubs compatibel is met het Apache Kafka-protocol, kunt u Mirror Maker 2 gebruiken om gegevens te repliceren tussen een bestaand Kafka-cluster en een Event Hubs-naamruimte.

Mirror Maker 2 detecteert dynamisch wijzigingen in onderwerpen en zorgt ervoor dat de eigenschappen van bron- en doelonderwerpen worden gesynchroniseerd, inclusief verschuivingen en partities. Het kan worden gebruikt om gegevens in twee richtingen te repliceren tussen het Kafka-cluster en de Event Hubs-naamruimte.

Vereisten

Het volgende moet zijn geïnstalleerd om deze zelfstudie te voltooien:

  • Lees het artikel Event Hubs voor Apache Kafka door.
  • Een Azure-abonnement. Als u nog geen abonnement hebt, maakt u een gratis account voordat u begint.
  • Java Development Kit (JDK) 1.7+
    • Voer op Ubuntu apt-get install default-jdk uit om de JDK te installeren.
    • Zorg dat de omgevingsvariabele JAVA_HOME verwijst naar de map waarin de JDK is geïnstalleerd.
  • Een binair Maven-archief downloaden en installeren
    • Op Ubuntu kunt u apt-get install maven uitvoeren om Maven te installeren.
  • Git
    • Op Ubuntu kunt u sudo apt-get install git uitvoeren om Git te installeren.
  • Apache Kafka-distributie
    • Download de gewenste Apache Kafka-distributie (die de Mirror Maker 2-distributie moet bevatten.)

Een Event Hubs-naamruimte maken

Er is een Event Hubs-naamruimte vereist om gegevens te verzenden naar en te ontvangen van Event Hubs-services. Zie Een Event Hub maken voor instructies voor het maken van een naamruimte en een Event Hub. Zorg ervoor dat u de Event Hubs-connection string kopieert voor later gebruik.

Het voorbeeldproject klonen

Nu u een Event Hubs-connection string hebt, kloont u de opslagplaats Azure Event Hubs voor Kafka en navigeert u naar de mirror-maker-2 submap:

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

Een bestaand Kafka-cluster instellen of gebruiken

Als u geen bestaand Kafka-cluster hebt, gebruikt u de Kafka-snelstartgids om een Kafka-cluster in te stellen met de gewenste instellingen (of een bestaand Kafka-cluster te gebruiken). Voor testdoeleinden kunt u ook een aantal onderwerpen maken in het zojuist gemaakte Kafka-cluster en er gegevens naar publiceren.

Als u al een bestaand Kafka-cluster on-premises of in een beheerde Kafka-cloudservice hebt, kunt u dit gebruiken om bestaande gegevens te repliceren naar Event Hubs.

Kafka Mirror Maker 2 configureren

Apache Kafka-distributie wordt geleverd met connect-mirror-maker.sh een script dat is gebundeld met de Kafka-bibliotheek die een gedistribueerd Mirror Maker 2-cluster implementeert. De Connect-werkrollen worden intern beheerd op basis van een configuratiebestand. Intern mirrormaker-stuurprogramma maakt en verwerkt paren van elke connector: MirrorSource-connector, MirrorSink-connector, MirrorCheckpoint-connector en MirrorHeartbeat-connector.

  1. Als u Mirror Maker 2 wilt configureren om gegevens te repliceren, moet u het configuratiebestand kafka-to-eh-connect-mirror-maker.properties van Mirror Maker 2 bijwerken om de replicatietopologie te definiëren.

  2. Definieer in het kafka-to-eh-connect-mirror-maker.properties configuratiebestand clusteraliassen die u wilt gebruiken voor uw Kafka-cluster(bron) en Event Hubs (doel).

     # cluster aliases 
     clusters = source, destination
    
  3. Geef vervolgens de verbindingsgegevens op voor uw bron, namelijk uw Kafka-cluster.

     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. Geef verbindingsgegevens op voor het doel. Dit is de Event Hubs-naamruimte die u hebt gemaakt.

     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. Schakel de replicatiestroom in van het Kafka-broncluster naar de Event Hubs-doelnaamruimte.

     source->destination.enabled = true
     source->destination.topics = .*
    
  6. Werk de replicatiefactor bij van de externe onderwerpen en interne onderwerpen die Mirror Maker maakt op de bestemming.

     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. Vervolgens kopieert kafka-to-eh-connect-mirror-maker.properties u het configuratiebestand naar de configuratiemap van de Kafka-distributie en kunt u het Mirror Maker 2-script uitvoeren met behulp van de volgende opdracht.

     ./bin/connect-mirror-maker.sh ./config/kafka-to-eh-connect-mirror-maker.properties
    
  8. Wanneer het script is uitgevoerd, ziet u dat de Kafka-onderwerpen en -gebeurtenissen worden gerepliceerd naar uw Event Hubs-naamruimte.

  9. Als u wilt controleren of gebeurtenissen de Event Hubs met Kafka-functionaliteit bereiken, bekijkt u de statistieken voor inkomend verkeer in de Azure Portal of voert u een consument uit op de Event Hubs.

Voorbeelden

Bekijk de volgende voorbeelden op GitHub:

Volgende stappen

Zie de volgende artikelen voor meer informatie over Event Hubs voor Kafka: