Replicar dados de um cluster do Kafka para Hubs de Eventos com o Apache Kafka Mirror Maker 1
Este tutorial mostra como espelhar um mediador kafka numa Hubs de Eventos do Azure com o Kafka Mirror Maker 1.
Nota
Este exemplo está disponível no GitHub
Nota
Este artigo contém referências a um termo que a Microsoft já não utiliza. Quando o termo for removido do software, iremos removê-lo deste artigo.
Neste tutorial, ficará a saber como:
- Criar um espaço de nomes dos Hubs de Eventos
- Clonar o projeto de exemplo
- Configurar um cluster do Kafka
- Configurar o MirrorMaker do Kafka
- Executar o Kafka MirrorMaker
Introdução
Este tutorial mostra como um hub de eventos e o Kafka MirrorMaker podem integrar um pipeline do Kafka existente no Azure ao "espelhar" o fluxo de entrada do Kafka no serviço Hubs de Eventos, o que permite a integração de fluxos do Apache Kafka com vários padrões de federação.
Uma Hubs de Eventos do Azure ponto final do Kafka permite-lhe ligar-se a Hubs de Eventos do Azure com o protocolo Kafka (ou seja, clientes Kafka). Ao fazer alterações mínimas a uma aplicação Kafka, pode ligar-se a Hubs de Eventos do Azure e desfrutar das vantagens do ecossistema do Azure. Atualmente, os Hubs de Eventos suportam o protocolo das versões 1.0 e posteriores do Apache Kafka.
Pode utilizar o MirrorMaker 1 do Apache Kafka unidirecionalmente do Apache Kafka para os Hubs de Eventos. O MirrorMaker 2 pode ser utilizado em ambas as direções, mas o MirrorCheckpointConnector
e MirrorHeartbeatConnector
que são configuráveis no MirrorMaker 2 têm de ser configurados para apontar para o mediador do Apache Kafka e não para os Hubs de Eventos. Este tutorial mostra a configuração do MirrorMaker 1.
Pré-requisitos
Para concluir este tutorial, confirme que tem:
- Leia o artigo Hubs de Eventos para o Apache Kafka.
- Uma subscrição do Azure. Se não tiver uma, crie uma conta gratuita antes de começar.
-
Java Development Kit (JDK) 1.7+
- No Ubuntu, execute
apt-get install default-jdk
para instalar o JDK. - Certifique-se de que define a variável de ambiente JAVA_HOME para apontar para a pasta onde está instalado o JDK.
- No Ubuntu, execute
-
Transferir e instalar um arquivo binário do Maven
- No Ubuntu, pode executar
apt-get install maven
para instalar o Maven.
- No Ubuntu, pode executar
-
Git
- No Ubuntu, pode executar
sudo apt-get install git
para instalar o Git.
- No Ubuntu, pode executar
Criar um espaço de nomes dos Hubs de Eventos
É necessário um espaço de nomes dos Hubs de Eventos para enviar e receber a partir de qualquer serviços dos Hubs de Eventos. Veja Criar um hub de eventos para obter instruções para criar um espaço de nomes e um hub de eventos. Certifique-se de que copia a cadeia de ligação dos Hubs de Eventos para utilização posterior.
Clonar o projeto de exemplo
Agora que tem uma cadeia de ligação dos Hubs de Eventos, clone o Hubs de Eventos do Azure para o repositório kafka e navegue para a mirror-maker
subpasta:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/mirror-maker
Configurar um cluster do Kafka
Utilize o guia de início rápido do Kafka para configurar um cluster com as definições pretendidas (ou utilizar um cluster do Kafka existente).
Configurar o MirrorMaker do Kafka
O Kafka MirrorMaker permite o "espelhamento" de um fluxo. Tendo em conta os clusters kafka de origem e destino, o MirrorMaker garante que todas as mensagens enviadas para o cluster de origem são recebidas pelos clusters de origem e de destino. Este exemplo mostra como espelhar um cluster kafka de origem com um hub de eventos de destino. Este cenário pode ser utilizado para enviar dados de um pipeline do Kafka existente para os Hubs de Eventos sem interromper o fluxo de dados.
Para obter informações mais detalhadas sobre o MirrorMaker do Kafka, consulte o guia Kafka Mirroring/MirrorMaker.
Para configurar o Kafka MirrorMaker, atribua-lhe um cluster kafka como consumidor/origem e um hub de eventos como produtor/destino.
Configuração do consumidor
Atualize o ficheiro source-kafka.config
de configuração do consumidor , que indica ao MirrorMaker as propriedades do cluster kafka de origem.
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
Configuração do produtor
Agora, atualize o ficheiro mirror-eventhub.config
de configuração do produtor, que indica ao MirrorMaker para enviar os dados duplicados (ou "espelhados") para o serviço Hubs de Eventos. Especificamente, altere bootstrap.servers
e sasl.jaas.config
aponte para o ponto final do Kafka dos Hubs de Eventos. O serviço Hubs de Eventos requer uma comunicação segura (SASL), que é obtida ao definir as três últimas propriedades na seguinte configuração:
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
Substitua {YOUR.EVENTHUBS.CONNECTION.STRING}
pela cadeia de ligação do espaço de nomes dos Hubs de Eventos. Para obter instruções sobre como obter a cadeia de ligação, veja Obter uma cadeia de ligação dos Hubs de Eventos. Eis um exemplo de configuração: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Executar o Kafka MirrorMaker
Execute o script Kafka MirrorMaker a partir do diretório do Kafka de raiz com os ficheiros de configuração recentemente atualizados. Certifique-se de que copia os ficheiros de configuração para o diretório raiz do Kafka ou atualize os respetivos caminhos no seguinte comando.
bin/kafka-mirror-maker.sh --consumer.config source-kafka.config --num.streams 1 --producer.config mirror-eventhub.config --whitelist=".*"
Para verificar se os eventos estão a chegar ao hub de eventos, veja as estatísticas de entrada no portal do Azure ou execute um consumidor no hub de eventos.
Com o MirrorMaker em execução, todos os eventos enviados para o cluster kafka de origem são recebidos pelo cluster do Kafka e pelo hub de eventos espelhado. Ao utilizar o MirrorMaker e um ponto final do Kafka dos Hubs de Eventos, pode migrar um pipeline do Kafka existente para o serviço de Hubs de Eventos do Azure gerido sem alterar o cluster existente ou interromper qualquer fluxo de dados em curso.
Amostras
Veja os exemplos seguintes no GitHub:
- Código de exemplo para este tutorial no GitHub
- Hubs de Eventos do Azure o Kafka MirrorMaker em execução numa Instância de Contentor do Azure
Passos seguintes
Para saber mais sobre os Hubs de Eventos para Kafka, veja os seguintes artigos:
- Ligar o Apache Spark a um hub de eventos
- Ligar o Apache Flink a um hub de eventos
- Integrar o Kafka Connect num hub de eventos
- Explore samples on our GitHub (Explorar exemplos no nosso GitHub)
- Ligar o Akka Streams a um hub de eventos
- Guia para programadores do Apache Kafka para Hubs de Eventos do Azure