Replicar dados de um cluster Kafka para Hubs de Eventos usando o Apache Kafka Mirror Maker 2
Este tutorial mostra como replicar dados de um cluster Kafka existente para Hubs de Eventos do Azure usando o Mirror Maker 2.
Nota
Este exemplo está disponível no GitHub
Neste tutorial, irá aprender a:
- Criar um espaço de nomes dos Hubs de Eventos
- Configurar ou usar um cluster Kafka existente
- Configurar o Kafka Mirror Maker 2
- Execute o Kafka Mirror Maker 2
Introdução
O Apache Kafka MirrorMaker 2.0 (MM2) foi projetado para facilitar o espelhamento ou a replicação de tópicos de um cluster Kafka para outro. O Mirror Maker usa a estrutura Kafka Connect para simplificar a configuração e o dimensionamento. Para obter informações mais detalhadas sobre o Kafka MirrorMaker, consulte o guia Kafka Mirroring/MirrorMaker.
Como os Hubs de Eventos do Azure são compatíveis com o protocolo Apache Kafka, você pode usar o Mirror Maker 2 para replicar dados entre um cluster Kafka existente e um namespace de Hubs de Eventos.
O Mirror Maker 2 deteta dinamicamente alterações nos tópicos e garante que as propriedades do tópico de origem e de destino sejam sincronizadas, incluindo deslocamentos e partições. Ele pode ser usado para replicar dados bidirecionalmente entre o cluster Kafka e o namespace dos Hubs de Eventos.
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
- Baixe e instale um arquivo binário 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
- Distribuição Apache Kafka
- Faça o download da distribuição Apache Kafka preferida (que deve conter a distribuição Mirror Maker 2).
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. Consulte Criando um hub de eventos para obter instruções sobre como criar um namespace e um hub de eventos. Certifique-se de copiar a cadeia de conexão dos Hubs de Eventos para uso posterior.
Clonar o projeto de exemplo
Agora que você tem uma cadeia de conexão de Hubs de Eventos, clone os Hubs de Eventos do Azure para repositório Kafka e navegue até a mirror-maker-2
subpasta:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/mirror-maker-2
Configurar ou usar um cluster Kafka existente
Se você não tiver um cluster Kafka existente, use o guia de início rápido Kafka para configurar um cluster Kafka com as configurações desejadas (ou use um cluster Kafka existente). Para fins de teste, você também pode criar alguns tópicos no cluster Kafka recém-criado e publicar dados neles.
Se você já tiver um cluster Kafka existente no local ou em um serviço de nuvem Kafka gerenciado, poderá usá-lo para replicar dados existentes para Hubs de Eventos.
Configurar o Kafka Mirror Maker 2
A distribuição Apache Kafka vem com connect-mirror-maker.sh
script que é empacotado com a biblioteca Kafka que implementa um cluster distribuído do Mirror Maker 2. Ele gerencia os trabalhadores do Connect internamente com base em um arquivo de configuração. Internamente, o driver do MirrorMaker cria e lida com pares de cada conector – MirrorSource Connector, MirrorSink Connector, MirrorCheckpoint Connector e MirrorHeartbeat Connector.
Para configurar o Mirror Maker 2 para replicar dados, você precisa atualizar o arquivo
kafka-to-eh-connect-mirror-maker.properties
de configuração do Mirror Maker 2 para definir a topologia de replicação.kafka-to-eh-connect-mirror-maker.properties
No arquivo de configuração, defina aliases de cluster que você planeja usar para seu cluster Kafka (origem) e Hubs de Eventos (destino).# cluster aliases clusters = source, destination
Em seguida, especifique as informações de conexão para sua fonte, que é seu cluster Kafka.
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>;
Especifique as informações de conexão para o destino, que é o namespace dos Hubs de Eventos que você criou.
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.>';
Habilite o fluxo de replicação do cluster Kafka de origem para o namespace Hubs de Eventos de destino.
source->destination.enabled = true source->destination.topics = .*
Atualize o fator de replicação dos tópicos remotos e internos que o Mirror Maker cria no destino.
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
Em seguida, você copia
kafka-to-eh-connect-mirror-maker.properties
o arquivo de configuração para o diretório de configuração da distribuição Kafka e pode executar o script do Mirror Maker 2 usando o seguinte comando../bin/connect-mirror-maker.sh ./config/kafka-to-eh-connect-mirror-maker.properties
Após a execução bem-sucedida do script, você verá os tópicos e eventos do Kafka sendo replicados para seu namespace de Hubs de Eventos.
Para verificar se os eventos estão chegando aos Hubs de Eventos habilitados para Kafka, confira as estatísticas de entrada no portal do Azure ou execute um consumidor nos Hubs de Eventos.
Exemplos
Veja os seguintes exemplos no GitHub:
Se você estiver hospedando o Apache Kafka no Kubernetes usando o operador CNCF Strimzi, poderá usar o exemplo do Strimzi Mirror Maker 2 para Hubs de Eventos.
Próximos passos
Para saber mais sobre os Hubs de Eventos para Kafka, consulte os seguintes artigos:
- Explore samples on our GitHub (Explorar exemplos no nosso GitHub)