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

Este tutorial mostra como espelhar um agente do Kafka em um hub de eventos do Azure usando o Kafka Mirror Maker 1.

MirrorMaker Kafka com Hubs de Eventos

Observação

Este exemplo está disponível no GitHub

Observação

Este artigo contém referências a um termo que a Microsoft não usa mais. Quando o termo for removido do software, também o removeremos deste artigo.

Neste tutorial, você aprenderá como:

  • Criar um namespace de Hubs de Eventos
  • Clonar o projeto de exemplo
  • Configurar um cluster Kafka
  • Configurar o Kafka MirrorMaker
  • Executar o Kafka MirrorMaker

Introdução

Este tutorial mostra como um hub de eventos e Kafka MirrorMaker podem integrar um pipeline Kafka existente ao Azure por meio do "espelhamento" do fluxo de entrada Kafka no serviço de Hubs de eventos, que permite a integração de fluxos de 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 do Kafka, você pode se conectar aos Hubs de Eventos do Azure e aproveitar os benefícios do ecossistema do Azure. Os hubs de eventos atualmente oferecem suporte ao protocolo das versões de Apache Kafka 1.0 e posteriores.

Você pode usar a MirrorMaker 1 do Apache Kafka de unidirecionalmente do Apache Kafka para os hubs de eventos. O MirrorMaker 2 pode ser usado em ambas as direções, mas MirrorCheckpointConnector e MirrorHeartbeatConnector configuráveis no MirrorMaker 2 devem ser configurados para apontar para o agente 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, 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.

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:

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

O Kafka MirrorMaker permite o "espelhamento" de um fluxo. Dada a origem e destino dos clusters Kafka, o MirrorMaker garante que todas as mensagens enviadas para o cluster de origem são recebidas por 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 mais informações sobre o Kafka MirrorMaker, consulte o guia de Espelhamento do Kafka/MirrorMaker.

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

Configuração do consumidor

Atualize o arquivo de configuração do consumidor source-kafka.config, que informa 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 arquivo de configuração do produtor mirror-eventhub.config, que manda o MirrorMaker enviar os dados duplicados (ou "espelhados") para o serviço de Hubs de Eventos. Especificamente, altere bootstrap.servers e sasl.jaas.config para apontar para o ponto de extremidade Kafka dos Hubs de Eventos. O serviço dos Hubs de Eventos requer uma comunicação segura (SASL), que é obtida com a definição das três últimas propriedades na configuração a seguir:

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 conexão do seu namespace dos Hubs de Eventos. Para ver as instruções sobre como obter uma cadeia de conexão, confira Obter cadeia de conexão para 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";

Executar o Kafka MirrorMaker

Execute o script do Kafka MirrorMaker a partir do diretório raiz do Kafka usando os arquivos de configuração atualizados recentemente. Certifique-se de copiar os arquivos de configuração para o diretório raiz do Kafka, ou de 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 que eventos estão atingindo o hub de eventos habilitado para Kafka, confira 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 a fonte de cluster Kafka são recebidos pelo cluster Kafka e o hub de eventos espelhado. Usando o MirrorMaker e um ponto de extremidade Kafka nos Hubs de Eventos, você pode migrar um pipeline Kafka existente para o serviço de Hubs de Eventos do Azure gerenciado sem alterar o cluster existente ou interromper qualquer fluxo de dados em andamento.

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: