Partilhar via


Replicar dados de um cluster Kafka para Hubs de Eventos usando o Apache Kafka Mirror Maker 1

Este tutorial mostra como espelhar um broker Kafka em Hubs de Eventos do Azure usando 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, irá aprender a:

  • Criar um espaço de nomes dos Hubs de Eventos
  • Clonar o projeto de exemplo
  • Configurar um cluster Kafka
  • Configurar o Kafka MirrorMaker
  • Execute o Kafka MirrorMaker

Introdução

Este tutorial mostra como um hub de eventos e o Kafka MirrorMaker podem integrar um pipeline Kafka existente no Azure "espelhando" o fluxo de entrada Kafka no serviço Hubs de Eventos, o que permite a integração de fluxos do Apache Kafka usando vários padrões de federação.

Um ponto de extremidade Kafka dos Hubs de Eventos do Azure permite que você se conecte aos Hubs de Eventos do Azure usando o protocolo Kafka (ou seja, clientes Kafka). Ao fazer alterações mínimas em um aplicativo Kafka, você pode se conectar aos Hubs de Eventos do Azure e aproveitar os benefícios do ecossistema do Azure. Atualmente, os Hubs de Eventos suportam o protocolo do Apache Kafka versões 1.0 e posteriores.

Você pode usar o MirrorMaker 1 do Apache Kafka unidirecionalmente do Apache Kafka para Hubs de Eventos. O MirrorMaker 2 pode ser usado em ambas as direções, mas os MirrorCheckpointConnector e MirrorHeartbeatConnector que são configuráveis no MirrorMaker 2 devem ser configurados para apontar para o agente Apache Kafka e não para 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.
  • Baixe e instale um arquivo binário 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. 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 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 Kafka

Use o guia de início rápido do Kafka para configurar um cluster com as configurações desejadas (ou use um cluster Kafka existente).

Configurar o Kafka MirrorMaker

Kafka MirrorMaker permite o "espelhamento" de um fluxo. Determinados clusters Kafka de origem e destino, o MirrorMaker garante que todas as mensagens enviadas para o cluster de origem sejam 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. Esse cenário pode ser usado para enviar dados de um pipeline Kafka existente para Hubs de Eventos sem interromper o fluxo de dados.

Para obter informações mais detalhadas sobre o Kafka MirrorMaker, consulte o guia Kafka Mirroring/MirrorMaker.

Para configurar o Kafka MirrorMaker, dê-lhe um cluster Kafka como seu consumidor/origem e um hub de eventos como seu produtor/destino.

Configuração do consumidor

Atualize o arquivo source-kafka.configde configuração do consumidor , que informa ao MirrorMaker as propriedades do cluster Kafka de origem.

fonte-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 arquivo mirror-eventhub.configde configuração do produtor, que informa 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 de extremidade Kafka dos Hubs de Eventos. O serviço Hubs de Eventos requer comunicação segura (SASL), que é obtida definindo as três últimas propriedades na seguinte configuração:

espelho-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 conexão do namespace Hubs de Eventos. Para obter instruções sobre como obter a cadeia de conexão, consulte Obter uma cadeia de conexão de Hubs de Eventos. Aqui está 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";

Execute o Kafka MirrorMaker

Execute o script Kafka MirrorMaker a partir do diretório raiz do Kafka usando os arquivos de configuração recém-atualizados. Certifique-se de copiar os arquivos de configuração para o diretório raiz do Kafka ou atualizar seus caminhos no comando a seguir.

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 chegando ao hub de eventos, consulte 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 Kafka e pelo hub de eventos espelhado. Usando o MirrorMaker e um ponto de extremidade Kafka dos Hubs de Eventos, você pode migrar um pipeline Kafka existente para o serviço Hubs de Eventos do Azure gerenciado sem alterar o cluster existente ou interromper qualquer fluxo de dados em andamento.

Exemplos

Veja os seguintes exemplos no GitHub:

Próximos passos

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