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.

Kafka MirrorMaker com Hubs de Eventos

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

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

Passos seguintes

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