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.
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.
- In Ubuntu eseguire
-
Scaricare e installare un archivio binario Maven
- In Ubuntu è possibile eseguire
apt-get install maven
per installare Maven.
- In Ubuntu è possibile eseguire
-
Git
- In Ubuntu è possibile eseguire
sudo apt-get install git
per installare Git.
- In Ubuntu è possibile eseguire
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:
- Codice di esempio per questa esercitazione su GitHub
- Hub eventi di Azure Kafka MirrorMaker in esecuzione in un'istanza di Azure Container
Passaggi successivi
Per altre informazioni su Hub eventi per Kafka, vedere gli articoli seguenti: