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.

Kafka MirrorMaker med Event Hubs

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.
  • 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. 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:

Nästa steg

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