Dela via


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 Kafka-mäklare i en Azure Event Hubs med Kafka Mirror Maker 1.

Kafka MirrorMaker med Event Hubs

Kommentar

Det här exemplet finns på GitHub

Kommentar

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 självstudien lär du 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 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 endirigering 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-koordinatorn 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 binärt Maven-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. Se Skapa en händelsehubb för instruktioner för att skapa ett namnområde och en händelsehubb. Se till att kopiera Event Hubs-anslutningssträng för senare användning.

Klona exempelprojektet

Nu när du har en Event Hubs-anslutningssträng klonar du Azure Event Hubs for 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 tanke på 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 meddelar 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 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äng för Event Hubs-namnområdet. Anvisningar om hur du hämtar anslutningssträng finns i Hämta en Event Hubs-anslutningssträng. Här är ett exempel på 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ör Kafka MirrorMaker

Kör Kafka MirrorMaker-skriptet från rotkatalogen Kafka med hjälp av de nyligen uppdaterade konfigurationsfilerna. Se till att antingen kopiera konfigurationsfilerna till rotkatalogen Kafka 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=".*"

Kontrollera att händelser når händelsehubben genom att 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 ett pågående dataflöde.

Exempel

Se följande exempel på GitHub:

Nästa steg

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