Använda Apache Kafka MirrorMaker med Event Hubs

Den här självstudien visar hur du speglar en autjämnare för Kafka i en Azure Event Hub med hjälp av Kafka MirrorMaker. Om du är värd för Apache Kafka på Kubernetes med hjälp av OPERATORF Strimzi-operatören kan du gå till självstudien i det här blogginlägget för att lära dig hur du ställer in Kafka med Strimzi och Mirror Maker 2.

Kafka MirrorMaker med Event Hubs

Anteckning

Det här exemplet finns på GitHub

Anteckning

Den här artikeln innehåller referenser till termen vitlista, en term som Microsoft inte längre använder. När termen tas bort från programvaran tar vi bort den från den här artikeln.

I den här guiden får du lära dig att:

  • Skapa ett Event Hubs-namnområde
  • Klona exempelprojektet
  • Konfigurera ett Kafka-kluster
  • Konfigurera Kafka MirrorMaker
  • Köra Kafka MirrorMaker

Introduktion

Den här självstudien visar hur en händelsehubb och Kafka MirrorMaker kan integrera en befintlig Kafka-pipeline i Azure genom att "spegla" Kafka-indataströmmen i Event Hubs-tjänsten, vilket möjliggör integrering av Apache Kafka-strömmar med hjälp av flera federationsmönster.

Med Azure Event Hubs Kafka-slutpunkten kan du ansluta till Azure Event Hubs kafka-protokollet (det vill säga Kafka-klienter). Genom att göra minimala ändringar i ett Kafka-program kan du ansluta till Azure Event Hubs och dra nytta av fördelarna med Azure-ekosystemet. Event Hubs stöder för närvarande protokollet Apache Kafka version 1.0 och senare.

Du kan använda Apache Kafka MirrorMaker 1 enkelriktat från Apache Kafka till Event Hubs. MirrorMaker 2 kan användas i båda riktningarna, men och som kan konfigureras i MirrorCheckpointConnector MirrorHeartbeatConnector MirrorMaker 2 måste båda konfigureras så att de pekar på Apache Kafka broker och inte till Event Hubs. Den här självstudien visar hur du konfigurerar MirrorMaker 1.

Förutsättningar

För att kunna följa den här självstudien måste du ha:

  • Läs artikeln Event Hubs för Apache Kafka.
  • En Azure-prenumeration. Om du inte har ett konto kan du skapa ett kostnadsfritt konto innan du börjar.
  • Java Development Kit (JDK) 1.7+
    • I Ubuntu kör du apt-get install default-jdk för att installera JDK-paketet.
    • Tänk på att ställa in miljövariabeln JAVA_HOME så att den pekar på den mapp där JDK-paketet är installerat.
  • Ladda ned och installera ett maven-binärt arkiv
    • I Ubuntu kan du köra apt-get install maven för att installera Maven.
  • Git
    • I Ubuntu kan du köra sudo apt-get install git för att installera Git.

Skapa ett Event Hubs-namnområde

En Event Hubs-namnrymd krävs för att skicka och ta emot från Event Hubs-tjänster. Anvisningar för hur du skapar ett namnområde och en händelsehubb finns i Skapa en händelsehubb. Se till att kopiera Event Hubs anslutningssträngen för senare användning.

Klona exempelprojektet

Nu när du har Event Hubs en anslutningssträng klonar du Azure Event Hubs Kafka-lagringsplatsen och navigerar mirror-maker till undermappen:

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

Konfigurera ett Kafka-kluster

Använd Kafka-snabbstartsguiden för att konfigurera ett kluster med önskade inställningar (eller använd ett befintligt Kafka-kluster).

Konfigurera Kafka MirrorMaker

Kafka MirrorMaker möjliggör "spegling" av en dataström. Givet Kafka-käll- och målkluster ser MirrorMaker till att alla meddelanden som skickas till källklustret tas emot av både käll- och målklustren. Det här exemplet visar hur du speglar ett Kafka-källkluster med en målhändelsehubb. Det här scenariot kan användas för att skicka data från en befintlig Kafka-pipeline till Event Hubs utan att avbryta dataflödet.

Mer detaljerad information om Kafka MirrorMaker finns i guiden Kafka Mirroring/MirrorMaker.

Om du vill konfigurera Kafka MirrorMaker ger du det ett Kafka-kluster som konsument/källa och en händelsehubb som producent/mål.

Konsumentkonfiguration

Uppdatera konsumentkonfigurationsfilen source-kafka.config , som talar om för MirrorMaker egenskaperna för Kafka-källklustret.

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

Producentkonfiguration

Uppdatera nu producentkonfigurationsfilen , vilket meddelar MirrorMaker att de duplicerade mirror-eventhub.config (eller "speglade") data ska skickas Event Hubs tjänsten. Mer specifikt ändrar du bootstrap.servers och så att de pekar Event Hubs sasl.jaas.config Kafka-slutpunkten. Tjänsten Event Hubs kräver säker kommunikation (SASL), vilket uppnås genom att ange de tre sista egenskaperna i följande konfiguration:

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

Viktigt

Ersätt {YOUR.EVENTHUBS.CONNECTION.STRING} med anslutningssträngen för Event Hubs namnområdet. Anvisningar om hur du hämtar anslutningssträngen finns i Hämta en Event Hubs-anslutningssträng. Här är ett exempel på en konfiguration: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Köra Kafka MirrorMaker

Kör Kafka MirrorMaker-skriptet från Kafka-rotkatalogen med de nyligen uppdaterade konfigurationsfilerna. Se till att antingen kopiera konfigurationsfilerna till Kafka-rotkatalogen eller uppdatera sökvägarna i följande kommando.

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

Om du vill kontrollera att händelser når händelsehubben kan du se ingressstatistiken i Azure Portal, eller köra en konsument mot händelsehubben.

När MirrorMaker körs tas alla händelser som skickas till Kafka-källklustret emot av både Kafka-klustret och den speglade händelsehubben. Genom att använda MirrorMaker och en Event Hubs Kafka-slutpunkt kan du migrera en befintlig Kafka-pipeline till den hanterade Azure Event Hubs-tjänsten utan att ändra det befintliga klustret eller avbryta pågående dataflöden.

Exempel

Se följande exempel på GitHub:

Nästa steg

Mer information om Event Hubs kafka finns i följande artiklar: