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.
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.
- Voer op Ubuntu
-
Een binair Maven-archief downloaden en installeren
- Op Ubuntu kunt u
apt-get install maven
uitvoeren om Maven te installeren.
- Op Ubuntu kunt u
-
Git
- Op Ubuntu kunt u
sudo apt-get install git
uitvoeren om Git te installeren.
- Op Ubuntu kunt u
-
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.
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.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
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>;
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.>';
Schakel de replicatiestroom in van het Kafka-broncluster naar de Event Hubs-doelnaamruimte.
source->destination.enabled = true source->destination.topics = .*
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
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
Wanneer het script is uitgevoerd, ziet u dat de Kafka-onderwerpen en -gebeurtenissen worden gerepliceerd naar uw Event Hubs-naamruimte.
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:
Als u Apache Kafka host op Kubernetes met behulp van de CNCF Strimzi-operator, kunt u het voorbeeld Strimzi Mirror Maker 2 gebruiken voor Event Hubs.
Volgende stappen
Zie de volgende artikelen voor meer informatie over Event Hubs voor Kafka:
- Explore samples on our GitHub (Voorbeelden bekijken op GitHub)