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.
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.
- No Ubuntu, execute
- Baixar e instalar um armazenamento binário Maven
- No Ubuntu, você pode executar
apt-get install maven
para instalar o Maven.
- No Ubuntu, você pode executar
- Git
- No Ubuntu, você pode executar
sudo apt-get install git
para instalar o Git.
- No Ubuntu, você pode executar
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:
- Código de exemplo para este tutorial no GitHub
- Kafka MirrorMaker do Hubs de Eventos do Azure em execução em uma instância de contêiner do Azure
Próximas etapas
Para saber mais sobre os Hubs de Eventos para o Kafka, confira os artigos a seguir: