Replicar dados de um cluster do Kafka para Hubs de Eventos com o Apache Kafka Mirror Maker 2

Este tutorial mostra como replicar dados de um cluster do Kafka existente para Hubs de Eventos do Azure com o Mirror Maker 2.

Imagem a mostrar o fluxo de eventos do Kafka MirrorMaker para os Hubs de Eventos.

Nota

Este exemplo está disponível no GitHub

Neste tutorial, ficará a saber como:

  • Criar um espaço de nomes dos Hubs de Eventos
  • Configurar ou utilizar um cluster do Kafka existente
  • Configurar o Kafka Mirror Maker 2
  • Executar o Kafka Mirror Maker 2

Introdução

O Apache Kafka MirrorMaker 2.0 (MM2) foi concebido para facilitar o espelhamento ou a replicação de tópicos de um cluster do Kafka para outro. O Criador de Espelhos utiliza a arquitetura do Kafka Connect para simplificar a configuração e o dimensionamento. Para obter informações mais detalhadas sobre o MirrorMaker do Kafka, consulte o guia Kafka Mirroring/MirrorMaker.

Como Hubs de Eventos do Azure é compatível com o protocolo Apache Kafka, pode utilizar o Mirror Maker 2 para replicar dados entre um cluster do Kafka existente e um espaço de nomes dos Hubs de Eventos.

O Mirror Maker 2 deteta dinamicamente as alterações aos tópicos e garante que as propriedades do tópico de origem e de destino são sincronizadas, incluindo desvios e partições. Pode ser utilizado para replicar dados bidirecionalmente entre o cluster do Kafka e o espaço de nomes 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.
  • Transferir e instalar um arquivo binário do Maven
    • No Ubuntu, pode executar apt-get install maven para instalar o Maven.
  • Git
    • No Ubuntu, pode executar sudo apt-get install git para instalar o Git.
  • Distribuição do Apache Kafka
    • Transfira a distribuição preferencial do Apache Kafka (que deve conter a distribuição do 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. 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-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 utilizar um cluster do Kafka existente

Se não tiver um cluster do Kafka existente, utilize o guia de início rápido do Kafka para configurar um cluster do Kafka com as definições pretendidas (ou utilize um cluster do Kafka existente). Para fins de teste, também pode criar alguns tópicos no cluster do Kafka recentemente criado e publicar dados nos mesmos.

Se já tiver um cluster do Kafka existente no local ou num serviço cloud do Kafka gerido, pode utilizá-lo para replicar dados existentes para Os Hubs de Eventos.

Configurar o Kafka Mirror Maker 2

A distribuição do Apache Kafka inclui connect-mirror-maker.sh scripts agrupados com a biblioteca do Kafka que implementa um cluster distribuído do Mirror Maker 2. Gere os trabalhadores do Connect internamente com base num ficheiro de configuração. O controlador MirrorMaker internamente cria e processa pares de cada conector – Conector MirrorSource, Conector MirrorSink, Conector MirrorCheckpoint e Conector MirrorHeartbeat.

  1. Para configurar o Mirror Maker 2 para replicar dados, tem de atualizar o ficheiro kafka-to-eh-connect-mirror-maker.properties de configuração do Mirror Maker 2 para definir a topologia de replicação.

  2. No ficheiro de configuração, defina os aliases de cluster que planeia utilizar para o kafka-to-eh-connect-mirror-maker.properties cluster (origem) do Kafka e os Hubs de Eventos (destino).

     # cluster aliases 
     clusters = source, destination
    
  3. Em seguida, especifique as informações de ligação para a sua origem, 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>;
    
  4. Especifique as informações de ligação para o destino, que é o espaço de nomes dos Hubs de Eventos que 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.>';
    
  5. Ative o fluxo de replicação do cluster do Kafka de origem para o espaço de nomes dos Hubs de Eventos de destino.

     source->destination.enabled = true
     source->destination.topics = .*
    
  6. Atualize o fator de replicação dos tópicos remotos e tópicos internos que o Criador de Espelhos 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
    
  7. Em seguida, copia kafka-to-eh-connect-mirror-maker.properties o ficheiro de configuração para o diretório de configuração da distribuição kafka e pode executar o script do Mirror Maker 2 com o seguinte comando.

     ./bin/connect-mirror-maker.sh ./config/kafka-to-eh-connect-mirror-maker.properties
    
  8. Após a execução bem-sucedida do script, deverá ver os tópicos e eventos do Kafka a serem replicados para o espaço de nomes dos Hubs de Eventos.

  9. Para verificar se os eventos estão a chegar aos Hubs de Eventos preparados para Kafka, consulte as estatísticas de entrada no portal do Azure ou execute um consumidor nos Hubs de Eventos.

Amostras

Veja os exemplos seguintes no GitHub:

Passos seguintes

Para saber mais sobre os Hubs de Eventos para Kafka, veja os seguintes artigos: