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.

Imagem que mostra o fluxo de eventos do Kafka MirrorMaker para os Hubs de Eventos.

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.
  • Baixar e instalar um armazenamento binário Maven
    • No Ubuntu, você pode executar apt-get install maven para instalar o Maven.
  • Git
    • No Ubuntu, você pode executar sudo apt-get install git para instalar o Git.
  • 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.

  1. 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.

  2. 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
    
  3. 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>;
    
  4. 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.>';
    
  5. 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 = .*
    
  6. 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
    
  7. 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
    
  8. 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.

  9. 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:

Próximas etapas

Para saber mais sobre os Hubs de Eventos para o Kafka, confira os artigos a seguir: