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.

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-jdkfö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.
- I Ubuntu kör du
- Ladda ned och installera ett maven-binärt arkiv
- I Ubuntu kan du köra
apt-get install mavenför att installera Maven.
- I Ubuntu kan du köra
- Git
- I Ubuntu kan du köra
sudo apt-get install gitför att installera Git.
- I Ubuntu kan du köra
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:
- Exempelkod för den här självstudien på GitHub
- Azure Event Hubs Kafka MirrorMaker som körs på en Azure Container Instance
Nästa steg
Mer information om Event Hubs kafka finns i följande artiklar: