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.
Kommentar
Det här exemplet finns på GitHub
I den här självstudien lär du 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 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
- 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ä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-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 för 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.
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.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
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>;
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.>';
Aktivera replikeringsflödet från Kafka-källklustret till händelsehubbens målnamnområde.
source->destination.enabled = true source->destination.topics = .*
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
Sedan kopierar
kafka-to-eh-connect-mirror-maker.properties
du konfigurationsfilen till Kafka-distributionens konfigurationskatalog och kan köra Mirror Maker 2-skriptet med hjälp av följande kommando../bin/connect-mirror-maker.sh ./config/kafka-to-eh-connect-mirror-maker.properties
När skriptet har körts bör du se Kafka-ämnena och händelserna som replikeras till Event Hubs-namnområdet.
Kontrollera att händelser tar sig till Kafka-aktiverade händelsehubbar genom att kolla in inkommande statistik i Azure Portal eller köra en konsument mot Event Hubs.
Exempel
Se följande exempel på GitHub:
Om du är värd för Apache Kafka på Kubernetes med hjälp av CNCF Strimzi-operatorn kan du använda Strimzi Mirror Maker 2-exempel för Event Hubs.
Nästa steg
Mer information om Event Hubs för Kafka finns i följande artiklar: