Replicar dados de um cluster do Kafka para os Hubs de Eventos usando o Apache Kafka Mirror Maker 2
Este tutorial mostra como replicar dados de um cluster do Kafka existente para os Hubs de Eventos do Azure usando o Mirror Maker 2.
Observação
Este exemplo está disponível no GitHub
Neste tutorial, você aprenderá como:
- Criar um namespace de Hubs de Eventos
- Configurar ou usar um cluster existente do Kafka
- Configurar o Kafka Mirror Maker 2
- Executar o Kafka Mirror Maker 2
Introdução
O Apache Kafka MM2 (MirrorMaker 2.0) foi projetado para facilitar o espelhamento ou a replicação de tópicos de um cluster do Kafka para outro. O Mirror Maker usa a estrutura Kafka Connect para simplificar a configuração e a escala. Para obter mais informações sobre o Kafka MirrorMaker, consulte o guia de Espelhamento do Kafka/MirrorMaker.
Como os Hubs de Eventos do Azure são compatíveis com o protocolo do Apache Kafka, você pode usar o Mirror Maker 2 para replicar dados entre um cluster do Kafka existente e um namespace dos Hubs de Eventos.
O Mirror Maker 2 detecta dinamicamente as alterações nos tópicos e garante que as propriedades dos tópicos de origem e de destino sejam sincronizadas, incluindo deslocamentos e partições. Ele pode ser usado para replicar dados bidirecionalmente entre o cluster do Kafka e o namespace dos Hubs de Eventos.
Pré-requisitos
Para concluir este tutorial, verifique se você tem:
- Leia o artigo Hubs de Eventos para o Apache Kafka.
- Uma assinatura do Azure. Se você 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. - Defina a variável de ambiente JAVA_HOME para apontar para a pasta onde o JDK está instalado.
- No Ubuntu, execute
-
Baixar e instalar um armazenamento binário Maven
- No Ubuntu, você pode executar
apt-get install maven
para instalar o Maven.
- No Ubuntu, você pode executar
-
Git
- No Ubuntu, você pode executar
sudo apt-get install git
para instalar o Git.
- No Ubuntu, você pode executar
-
Distribuição do Apache Kafka
- Baixe a distribuição preferencial do Apache Kafka (que deve conter a distribuição do Mirror Maker 2).
Criar um namespace dos Hubs de Eventos
É necessário um namespace do Hubs de Eventos para enviar e receber de qualquer serviço de Hub de Eventos. Para obter instruções sobre como criar um namespace e um hub de eventos, consulte Criar um hub de eventos. Certifique-se de copiar a cadeia de caracteres 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 o repositório dos Hubs de Eventos do Azure para Kafka e navegue até a subpasta mirror-maker-2
:
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 existente do Kafka
Se você não tiver um cluster do Kafka, use o guia de início rápido do Kafka para definir um cluster do Kafka com as configurações desejadas (ou usar um cluster do Kafka existente). Para fins de teste, você também pode criar alguns tópicos no cluster recém-criado do Kafka e publicar dados neles.
Se você já tiver um cluster do Kafka no local ou em um serviço de nuvem do Kafka gerenciado, poderá usá-lo para replicar dados existentes nos Hubs de Eventos.
Configurar o Kafka Mirror Maker 2
A distribuição do Apache Kafka é fornecida com o script connect-mirror-maker.sh
, que é agrupado com a biblioteca Kafka que implementa um cluster distribuído do Mirror Maker 2. Ela gerencia os trabalhos do Connect internamente com base em um arquivo de configuração. Internamente, o driver do MirrorMaker cria e processa pares de cada conector: MirrorSource Connector, MirrorSink Connector, MirrorCheckpoint Connector and MirrorHeartbeat Connector.
Para configurar o Mirror Maker 2 para replicar os dados, você precisa atualizar o arquivo de configuração
kafka-to-eh-connect-mirror-maker.properties
do Mirror Maker 2 para definir a topologia de replicação.No arquivo de configuração
kafka-to-eh-connect-mirror-maker.properties
, defina os aliases de cluster que você pretende usar para o cluster do Kafka (origem) e os Hubs de Eventos (destino).# cluster aliases clusters = source, destination
Em seguida, especifique as informações de conexão da fonte, que é o cluster do 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 do Kafka de origem para o namespace dos Hubs de Eventos de destino.
source->destination.enabled = true source->destination.topics = .*
Atualize o fator de replicação dos tópicos remotos e dos tópicos internos criados pelo Mirror Maker 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, copie o arquivo de configuração
kafka-to-eh-connect-mirror-maker.properties
para o diretório de configuração da distribuição do Kafka e você poderá executar o script do Mirror Maker 2 usando o comando a seguir../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 os eventos do Kafka sendo replicados para o namespace dos 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
Confira as seguintes amostras no GitHub:
Se você estiver hospedando o Apache Kafka no Kubernetes usando o operador Strimzi do CNCF, use o exemplo do Mirror Maker 2 para o Strimzi para os Hubs de Eventos.
Próximas etapas
Para saber mais sobre os Hubs de Eventos para o Kafka, confira os artigos a seguir: