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.
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.
- No Ubuntu, execute
- Baixe e instale um arquivo binário Maven
- No Ubuntu, pode executar
apt-get install maven
para instalar o Maven.
- No Ubuntu, pode executar
- Git
- No Ubuntu, pode executar
sudo apt-get install git
para instalar o Git.
- No Ubuntu, pode executar
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.config
de 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.config
de 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:
- Código de exemplo para este tutorial no GitHub
- Hubs de Eventos do Azure Kafka MirrorMaker em execução em uma Instância de Contêiner do Azure
Próximos passos
Para saber mais sobre os Hubs de Eventos para Kafka, consulte os seguintes artigos:
- Conectar o Apache Spark a um hub de eventos
- Conectar o Apache Flink a um hub de eventos
- Integre o Kafka Connect com um hub de eventos
- Explore samples on our GitHub (Explorar exemplos no nosso GitHub)
- Conecte o Akka Streams a um hub de eventos
- Guia do desenvolvedor do Apache Kafka para Hubs de Eventos do Azure