Replikera data från ett Kafka-kluster till Event Hubs med Apache Kafka Mirror Maker 2

Den här självstudien visar hur du replikerar data från ett befintligt Kafka-kluster till Azure Event Hubs med hjälp av Mirror Maker 2.

Bild som visar händelseflödet från Kafka MirrorMaker till Event Hubs.

Anteckning

Det här exemplet finns på GitHub

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

  • Skapa ett Event Hubs-namnområde
  • Konfigurera eller använda ett befintligt Kafka-kluster
  • Konfigurera Kafka Mirror Maker 2
  • Kör Kafka Mirror Maker 2

Introduktion

Apache Kafka MirrorMaker 2.0 (MM2) är utformat för att göra det enklare att spegla eller replikera ämnen från ett Kafka-kluster till ett annat. Mirror Maker använder Kafka Connect-ramverket för att förenkla konfiguration och skalning. Mer detaljerad information om Kafka MirrorMaker finns i guiden Kafka Mirroring/MirrorMaker.

Eftersom Azure Event Hubs är kompatibelt med Apache Kafka-protokollet kan du använda Mirror Maker 2 för att replikera data mellan ett befintligt Kafka-kluster och ett Event Hubs-namnområde.

Mirror Maker 2 identifierar dynamiskt ändringar i ämnen och ser till att käll- och målämnesegenskaper synkroniseras, inklusive förskjutningar och partitioner. Den kan användas för att replikera data dubbelriktade mellan Kafka-klustret och Event Hubs-namnområdet.

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 något skapar du 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.
  • Apache Kafka-distribution
    • Ladda ned önskad Apache Kafka-distribution (som ska innehålla Mirror Maker 2-distributionen.)

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ä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-2:

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

Konfigurera eller använda ett befintligt Kafka-kluster

Om du inte har ett befintligt Kafka-kluster använder du snabbstartsguiden kafka för att konfigurera ett Kafka-kluster med önskade inställningar (eller använda ett befintligt Kafka-kluster). I testsyfte kan du också skapa ett par ämnen i det nyligen skapade Kafka-klustret och publicera data till dem.

Om du redan har ett befintligt Kafka-kluster lokalt eller i en hanterad Kafka-molntjänst kan du använda det för att replikera befintliga data till Event Hubs.

Konfigurera Kafka Mirror Maker 2

Apache Kafka-distribution levereras med connect-mirror-maker.sh skript som paketeras med Kafka-biblioteket som implementerar ett distribuerat Mirror Maker 2-kluster. Den hanterar Connect-arbetare internt baserat på en konfigurationsfil. Internt skapar och hanterar MirrorMaker-drivrutinen par för varje anslutningsapp – MirrorSource Connector, MirrorSink Connector, MirrorCheckpoint Connector och MirrorHeartbeat Connector.

  1. Om du vill konfigurera Mirror Maker 2 för att replikera data måste du uppdatera mirror maker 2-konfigurationsfilen kafka-to-eh-connect-mirror-maker.properties för att definiera replikeringstopologin.

  2. I konfigurationsfilen kafka-to-eh-connect-mirror-maker.properties definierar du klusteralias som du planerar att använda för ditt Kafka-kluster (källa) och Event Hubs (mål).

     # cluster aliases 
     clusters = source, destination
    
  3. Ange sedan anslutningsinformationen för källan, som är ditt Kafka-kluster.

     source.bootstrap.servers = your-kafka-cluster-hostname:9092
     #source.security.protocol=SASL_SSL
     #source.sasl.mechanism=PLAIN
     #source.sasl.jaas.config=<replace sasl jaas config of your Kafka cluster>;
    
  4. Ange anslutningsinformation för målet, vilket är det Event Hubs-namnområde som du skapade.

     destination.bootstrap.servers = <your-enventhubs-namespace>.servicebus.windows.net:9093
     destination.security.protocol=SASL_SSL
     destination.sasl.mechanism=PLAIN
     destination.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username='$ConnectionString' password='<Your Event Hubs namespace connection string.>';
    
  5. Aktivera replikeringsflöde från Kafka-källklustret till målhändelsehubbens namnområde.

     source->destination.enabled = true
     source->destination.topics = .*
    
  6. Uppdatera replikeringsfaktorn för de fjärrämnen och interna ämnen som Mirror Maker skapar på målet.

     replication.factor=3
    
     checkpoints.topic.replication.factor=3
     heartbeats.topic.replication.factor=3
     offset-syncs.topic.replication.factor=3    
    
     offset.storage.replication.factor=3
     status.storage.replication.factor=3
     config.storage.replication.factor=3
    
  7. Sedan kopierar kafka-to-eh-connect-mirror-maker.properties du konfigurationsfilen till Kafka-distributionens konfigurationskatalog och kan köra Mirror Maker 2-skriptet med följande kommando.

     ./bin/connect-mirror-maker.sh ./config/kafka-to-eh-connect-mirror-maker.properties
    
  8. När skriptet har körts bör du se Kafka-ämnena och händelserna som replikeras till Event Hubs-namnområdet.

  9. Kontrollera att händelser tar sig till Kafka-aktiverade händelsehubbar genom att kolla in ingressstatistiken i Azure Portal eller köra en konsument mot Event Hubs.

Exempel

Se följande exempel på GitHub:

Nästa steg

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