Replikera data från ett Kafka-kluster till Event Hubs med Apache Kafka Mirror Maker 1
Den här självstudien visar hur du speglar en asynkron Kafka-meddelandekö till en Azure Event Hubs med hjälp av Kafka Mirror Maker 1.
Anteckning
Det här exemplet finns på GitHub
Anteckning
Den här artikeln innehåller referenser till 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ör 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 en Azure Event Hubs Kafka-slutpunkt kan du ansluta till Azure Event Hubs med hjälp av 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 för Apache Kafka-versionerna 1.0 och senare.
Du kan använda Apache Kafkas MirrorMaker 1 enkelriktat från Apache Kafka till Event Hubs. MirrorMaker 2 kan användas i båda riktningarna, men MirrorCheckpointConnector
och MirrorHeartbeatConnector
som kan konfigureras i MirrorMaker 2 måste båda konfigureras för att peka 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.
- I Ubuntu kör du
-
Ladda ned och installera ett binärt Maven-arkiv
- I Ubuntu kan du köra
apt-get install maven
för att installera Maven.
- I Ubuntu kan du köra
-
Git
- I Ubuntu kan du köra
sudo apt-get install git
fö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. Instruktioner för att skapa 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 en Event Hubs-anslutningssträng klonar du Azure Event Hubs för Kafka-lagringsplatsen och navigerar till undermappenmirror-maker
:
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ända ett befintligt Kafka-kluster).
Konfigurera Kafka MirrorMaker
Kafka MirrorMaker möjliggör "spegling" av en ström. Med angivna Kafka-kluster för källa och mål ser MirrorMaker till att alla meddelanden som skickas till källklustret tas emot av både käll- och målkluster. 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 mirror-eventhub.config
, som instruerar MirrorMaker att skicka duplicerade (eller "speglade") data till Event Hubs-tjänsten. Mer specifikt ändrar bootstrap.servers
och sasl.jaas.config
pekar du på Din Event Hubs Kafka-slutpunkt. Event Hubs-tjänsten kräver säker kommunikation (SASL), vilket uppnås genom att de tre sista egenskaperna anges 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 en exempelkonfiguration: 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ör Kafka MirrorMaker
Kör Kafka MirrorMaker-skriptet från kafka-rotkatalogen med hjälp av 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 läsa 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 för Kafka finns i följande artiklar: