Replicare i dati da un cluster Kafka a Hub eventi usando Apache Kafka Mirror Maker 1

Questa esercitazione illustra come eseguire il mirroring di un broker Kafka in un Hub eventi di Azure usando Kafka Mirror Maker 1.

Kafka MirrorMaker con Hub eventi

Nota

Questo esempio è disponibile su GitHub

Nota

Questo articolo contiene riferimenti a un termine che Microsoft non usa più. Quando il termine verrà rimosso dal software, verrà rimosso anche dall'articolo.

In questa esercitazione verranno illustrate le procedure per:

  • Creare uno spazio dei nomi di Hub eventi
  • Clonare il progetto di esempio
  • Configurare un cluster Kafka
  • Configurare Kafka MirrorMaker
  • Eseguire Kafka MirrorMaker

Introduzione

Questa esercitazione illustra come un hub eventi e Kafka MirrorMaker può integrare una pipeline Kafka esistente in Azure tramite "mirroring" del flusso di input Kafka nel servizio Hub eventi, che consente l'integrazione dei flussi Apache Kafka usando diversi modelli di federazione.

Un endpoint Kafka di Hub eventi di Azure consente la connessione a Hub eventi di Azure tramite il protocollo Kafka, ovvero i client Kafka. Apportando modifiche minime a un'applicazione Kafka, è possibile connettersi a Hub eventi di Azure e sfruttare i vantaggi dell'ecosistema di Azure. Hub eventi supporta attualmente il protocollo di Apache Kafka versioni 1.0 e successive.

È possibile usare MirrorMaker 1 di Apache Kafka in modo bidirezionale da Apache Kafka a Hub eventi. MirrorMaker 2 può essere usato in entrambe le direzioni, ma l'oggettoMirrorCheckpointConnector e MirrorHeartbeatConnector configurabile in MirrorMaker 2 deve essere configurato per puntare al broker Apache Kafka e non a Hub eventi. Questa esercitazione illustra la configurazione di MirrorMaker 1.

Prerequisiti

Per completare questa esercitazione, accertarsi di avere:

  • Leggere con attenzione l'articolo Hub eventi per Apache Kafka.
  • Una sottoscrizione di Azure. Se non se ne ha una, creare un account gratuito prima di iniziare.
  • Java Development Kit (JDK) 1.7+
    • In Ubuntu eseguire apt-get install default-jdk per installare JDK.
    • Assicurarsi di impostare la variabile di ambiente JAVA_HOME in modo che faccia riferimento alla cartella di installazione di JDK.
  • Scaricare e installare un archivio binario Maven
    • In Ubuntu è possibile eseguire apt-get install maven per installare Maven.
  • Git
    • In Ubuntu è possibile eseguire sudo apt-get install git per installare Git.

Creare uno spazio dei nomi di Hub eventi

Per l'invio e la ricezione da qualsiasi servizio Hub eventi è richiesto uno spazio dei nomi di Hub eventi. Per istruzioni per creare uno spazio dei nomi e un hub eventi, vedere Creazione di un hub eventi . Assicurarsi di copiare la stringa di connessione di Hub eventi per usarla in seguito.

Clonare il progetto di esempio

Dopo aver creato una stringa di connessione di Hub eventi, clonare il Hub eventi di Azure per il mirror-maker repository Kafka e passare alla sottocartella:

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

Configurare un cluster Kafka

Usare la Guida introduttiva per Kafka per configurare un cluster con le impostazioni desiderate (o usare un cluster Kafka esistente).

Configurare Kafka MirrorMaker

Kafka MirrorMaker consente il "mirroring" di un flusso. Dati i cluster Kafka di origine e di destinazione, MirrorMaker garantisce che qualsiasi messaggio inviato al cluster di origine venga ricevuto da entrambi i cluster di origine e di destinazione. Questo esempio illustra come eseguire il mirroring di un cluster Kafka di origine con un hub eventi di destinazione. Questo scenario può essere usato per inviare i dati da una pipeline Kafka esistente a Hub eventi senza interrompere il flusso dei dati.

Per informazioni più dettagliate su Kafka MirrorMaker, vedere la guida Kafka Mirroring/MirrorMaker (Mirroring Kafka/MirrorMaker).

Per configurare Kafka MirrorMaker, assegnare un cluster Kafka come consumer/origine e un hub eventi come produttore/destinazione.

Configurazione del consumer

Aggiornare il file di configurazione del consumer source-kafka.config, che specifica a MirrorMaker le proprietà del cluster Kafka di origine.

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

Configurazione del producer

Aggiornare quindi il file di configurazione del producer mirror-eventhub.config, che specifica a MirrorMaker di inviare i dati duplicati (o "con mirroring") al servizio Hub eventi. In particolare, modificare bootstrap.servers e sasl.jaas.config in modo che puntino all'endpoint Kafka di Hub eventi. Il servizio Hub eventi richiede la comunicazione sicura (SASL), che viene garantita impostando le ultime tre proprietà nella configurazione seguente:

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}";

Importante

Sostituire {YOUR.EVENTHUBS.CONNECTION.STRING} con la stringa di connessione per lo spazio dei nomi di Hub eventi. Per istruzioni su come ottenere la stringa di connessione, vedere Ottenere una stringa di connessione ad Hub eventi. Ecco un esempio di configurazione: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Eseguire Kafka MirrorMaker

Eseguire lo script di Kafka MirrorMaker dalla directory radice di Kafka usando i file di configurazione appena aggiornati. Assicurarsi di copiare i file di configurazione nella directory radice di Kafka o di aggiornare i relativi percorsi nel comando seguente.

bin/kafka-mirror-maker.sh --consumer.config source-kafka.config --num.streams 1 --producer.config mirror-eventhub.config --whitelist=".*"

Per verificare che gli eventi raggiungano l'hub eventi, vedere le statistiche in ingresso nel portale di Azure o eseguire un consumer nell'hub eventi.

Con MirrorMaker in esecuzione, tutti gli eventi inviati al cluster Kafka di origine vengono ricevuti sia dal cluster Kafka che dall'hub eventi con mirroring. Usando MirrorMaker e un endpoint Kafka di Hub eventi, è possibile migrare una pipeline Kafka esistente al servizio Hub eventi di Azure gestito senza modificare il cluster esistente o interrompere eventuali flussi di dati in corso.

Esempi

Vedere gli esempi seguenti in GitHub:

Passaggi successivi

Per altre informazioni su Hub eventi per Kafka, vedere gli articoli seguenti: