Gebruik Apache Kafka MirrorMaker met Event Hubs

Deze zelfstudie laat zien hoe u een Kafka-broker kunt spiegelen naar een Azure Event Hub met behulp van Kafka MirrorMaker. Als u Apache Kafka host op Kubernetes met behulp van de CNCF Stchinzi-operator, raadpleegt u de zelfstudie in dit blogbericht voor meer informatie over het instellen van Kafka met Stchinzi en Mirror Maker 2.

Kafka MirrorMaker met Event Hubs

Notitie

Dit voorbeeld is beschikbaar op GitHub

Notitie

Dit artikel bevat verwijzingen naar de term whitelist, een term die Microsoft niet meer gebruikt. Zodra de term uit de software wordt verwijderd, verwijderen we deze uit dit artikel.

In deze zelfstudie leert u het volgende:

  • Een Event Hubs-naamruimte maken
  • Het voorbeeldproject klonen
  • Een Kafka-cluster instellen
  • Kafka MirrorMaker configureren
  • Kafka MirrorMaker uitvoeren

Introductie

Deze zelfstudie laat zien hoe een Event Hub en Kafka MirrorMaker een bestaande Kafka-pijplijn kunnen integreren in Azure door de Kafka-invoerstroom in de Event Hubs-service te spiegelen, waardoor Apache Kafka-streams kunnen worden geïntegreerd met behulp van verschillende federatiepatronen.

Met Azure Event Hubs Kafka-eindpunt kunt u verbinding maken met Azure Event Hubs via het Kafka-protocol (dat wil zeggen Kafka-clients). Door minimale wijzigingen aan te brengen in een Kafka-toepassing, kunt u verbinding maken met Azure Event Hubs en profiteren van de voordelen van het Azure-ecosysteem. Event Hubs ondersteunt momenteel het protocol van Apache Kafka versie 1.0 en hoger.

U kunt Apache Kafka MirrorMaker 1 in één richting gebruiken van Apache Kafka naar Event Hubs. MirrorMaker 2 kan in beide richtingen worden gebruikt, maar de en die MirrorCheckpointConnector MirrorHeartbeatConnector in MirrorMaker 2 kunnen worden geconfigureerd, moeten beide worden geconfigureerd om naar de Apache Kafka-broker te wijzen en niet om Event Hubs. In deze zelfstudie ziet u hoe u MirrorMaker 1 configureert.

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

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 nieuwe Event Hubs connection string hebt, kloont u de Azure Event Hubs voor de Kafka-opslagplaats en navigeert u naar de mirror-maker submap:

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

Een Kafka-cluster instellen

Gebruik de Snelstartgids voor Kafka om een cluster in te stellen met de gewenste instellingen (of gebruik een bestaand Kafka-cluster).

Kafka MirrorMaker configureren

Kafka MirrorMaker maakt het spiegelen van een stroom mogelijk. Op basis van de Kafka-bron- en doelclusters zorgt MirrorMaker ervoor dat berichten die naar het broncluster worden verzonden, worden ontvangen door zowel de bron- als doelclusters. In dit voorbeeld ziet u hoe u een Kafka-broncluster spiegelt met een doel-Event Hub. Dit scenario kan worden gebruikt voor het verzenden van gegevens van een bestaande Kafka-pijplijn naar Event Hubs zonder de gegevensstroom te onderbreken.

Zie de Kafka Mirroring/MirrorMaker-handleidingvoor meer informatie over Kafka MirrorMaker.

Als u Kafka MirrorMaker wilt configureren, geeft u het een Kafka-cluster als consument/bron en een Event Hub als producent/doel.

Consumentenconfiguratie

Werk het consumentenconfiguratiebestand source-kafka.config bij, waarmee MirrorMaker de eigenschappen van het Kafka-broncluster weet.

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

Producentconfiguratie

Werk nu het producentconfiguratiebestand bij, waarmee MirrorMaker de gedupliceerde (of 'gespiegelde') gegevens naar de mirror-eventhub.config Event Hubs verzenden. Wijzig met name bootstrap.servers en om te wijzen naar Event Hubs sasl.jaas.config Kafka-eindpunt. Voor Event Hubs service is beveiligde (SASL)-communicatie vereist. Dit wordt bereikt door de laatste drie eigenschappen in te stellen in de volgende configuratie:

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}";

Belangrijk

Vervang {YOUR.EVENTHUBS.CONNECTION.STRING} door de verbindingsreeks voor uw Event Hubs-naamruimte. Zie Een verbindingsreeks voor Event Hubs ophalen voor instructies voor het ophalen van de verbindingsreeks. Hier volgt een voorbeeldconfiguratie: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Kafka MirrorMaker uitvoeren

Voer het Kafka MirrorMaker-script uit vanuit de Kafka-hoofdmap met behulp van de zojuist bijgewerkte configuratiebestanden. Kopieer de configuratiebestanden naar de Kafka-hoofdmap of werk de paden bij met de volgende opdracht.

bin/kafka-mirror-maker.sh --consumer.config source-kafka.config --num.streams 1 --producer.config mirror-eventhub.config --whitelist=".*"

Als u wilt controleren of gebeurtenissen de Event Hub bereiken, bekijkt u de ingress-statistieken in de Azure Portalof voer een consumer uit op de Event Hub.

Als MirrorMaker wordt uitgevoerd, worden alle gebeurtenissen die naar het Kafka-broncluster worden verzonden, ontvangen door zowel het Kafka-cluster als de gespiegelde Event Hub. Door MirrorMaker en een Event Hubs Kafka-eindpunt te gebruiken, kunt u een bestaande Kafka-pijplijn migreren naar de beheerde Azure Event Hubs-service zonder het bestaande cluster te wijzigen of een doorlopende gegevensstroom te onderbreken.

Voorbeelden

Bekijk de volgende voorbeelden op GitHub:

Volgende stappen

Zie de volgende artikelen Event Hubs meer informatie over het maken van een Event Hubs kafka: