Quero usar o MirrorMaker 2.0 (MM2) que é executado no MSK Connect para transferir dados entre clusters do Amazon Managed Streaming for Apache Kafka (Amazon MSK) em contas da AWS diferentes.
Resolução
Configurar o emparelhamento da VPC
Quando os clusters do Amazon MSK estão em diferentes Amazon Virtual Private Clouds (Amazon VPC), é preciso criar uma conexão de emparelhamento da VPC.
Os grupos de segurança associados ao cluster do Amazon MSK de origem devem permitir todo o tráfego dos grupos de segurança do cluster de destino. Os grupos de segurança do cluster de destino também devem permitir todo o tráfego dos grupos de segurança do cluster do Amazon MKS de origem. Para mais informações, consulte Atualizar seus grupos de segurança para fazer referência a grupos de segurança de mesmo nível.
Observação: para referenciar um grupo de segurança em outra conta, inclua o número da conta no campo Origem ou Destino.
Criar um plug-in com informações do plug-in MM2
Observação: os plug-ins personalizados do MSK Connect aceitam um arquivo ou pasta com formato .jar ou .zip.
Conclua as etapas a seguir:
-
Para criar uma pasta de teste e depois compactá-la, execute os seguintes comandos:
mkdir mm2
zip mm2.zip mm2
-
Carregue o objeto .zip no seu bucket do Amazon Simple Storage Service (Amazon S3) na conta de destino:
aws s3 cp mm2.zip s3://mytestbucket/
Observação: substitua s3://mytestbucket/ pelo URL do seu bucket do Amazon S3.
O Apache Kafka e o MSK Connect têm bibliotecas MirrorMaker incorporadas, então não é preciso adicionar arquivos .jar adicionais para essa funcionalidade.
-
Na conta de destino, use o arquivo .zip para criar um plug-in personalizado e nomeie o arquivo mm2-connect-plugin.
Observação: ao usar o MSK Connect, é preciso ter um plug-in personalizado na criação do conector.
Criar um conector do MSK Connect na conta de destino
Conclua as etapas a seguir:
-
Abra o console do Amazon MSK.
-
No painel de navegação, em MSK Connect, escolha Conectores.
-
Escolha Criar conector.
-
Escolha Usar plug-in personalizado atual.
-
Em Plug-ins personalizados, selecione o plug-in personalizado que você criou e escolha Avançar.
-
Insira um nome para o conector.
(Opcional) Insira uma descrição.
-
Na lista de clusters, escolha o cluster de destino.
-
Adicione uma configuração semelhante ao exemplo a seguir no campo de configuração do conector:
connector.class=org.apache.kafka.connect.mirror.MirrorSourceConnector
tasks.max=1
clusters=primary,replica
source.cluster.alias=primary
target.cluster.alias=replica
topics=example.*
replication.factor=2
topic.creation.default.replication.factor=2
topic.creation.default.partitions=2
consumer.group.id=mm2-connector
refresh.groups.interval.seconds=20
refresh.topics.interval.seconds=20
sync.topic.configs.interval.seconds=20
sync.topic.acls.interval.seconds=20
producer.enable.idempotence=true
transforms=renameTopic
transforms.renameTopic.type=org.apache.kafka.connect.transforms.RegexRouter
transforms.renameTopic.regex=primary.(.*)
transforms.renameTopic.replacement=$1
key.converter=org.apache.kafka.connect.converters.ByteArrayConverter
value.converter=org.apache.kafka.connect.converters.ByteArrayConverter
# Source cluster options
source.cluster.bootstrap.servers=
source.cluster.security.protocol=PLAINTEXT
# Target cluster options
target.cluster.bootstrap.servers=
target.cluster.security.protocol=PLAINTEXT
-
Defina a capacidade do seu conector.
-
Em Configuração do processamento, escolha Usar configuração padrão do MSK.
-
Em Permissões de acesso, escolha o perfil do AWS Identity and Access Management (AWS IAM) que fornece as permissões necessárias para o MSK Connect. Em seguida, escolha Próximo.
-
Na página Segurança, em Criptografia - em trânsito, escolha Tráfego de texto simples. Em seguida, escolha Próximo.
-
(Opcional) Na página Logs, defina a entrega de logs. Em seguida, escolha Próximo.
-
Em Revisar e criar, escolha Criar conector.
Observação: com a configuração anterior, para replicar cada tópico do cluster de origem, o MM2 cria dois tópicos no cluster de destino. Por exemplo, se você tiver o tópico exampleTopic1 no cluster de origem, o MM2 criará os tópicos primary.exampleTopic1 e exampleTopic1 no cluster de destino. Em seguida, o MM2 encaminha as mensagens para o tópico exampleTopic1.
Criar uma instância de cliente
Você deve criar uma instância de cliente para criar tópicos e produzir ou consumir dados de tópicos.
Conclua as etapas a seguir:
-
Execute uma instância do Amazon Elastic Compute Cloud (Amazon EC2) e, em seguida, conecte-se à instância.
-
Para instalar o Java na máquina cliente, execute o comando a seguir:
sudo yum -y install java-11
-
Para baixar o Apache Kafka, execute o comando a seguir:
wget https://archive.apache.org/dist/kafka/2.8.1/kafka_2.12-2.8.1.tgz
tar -xzf kafka_2.12-2.8.1.tgz
-
Crie o tópico exampletopic1 no cluster do Amazon MSK na conta de origem:
kafka-installation-path/bin/kafka-topics.sh --create --bootstrap-server SourceMSKclusterBootstrapServerString --replication-factor 3 --partitions 1 --topic exampletopic1
Observação: substitua kafka-installation-path pelo caminho de onde você instalou o Kafka em seu sistema. Substitua SourceMSKclusterBootstrapServerString pela string do servidor Bootstrap do cluster do Amazon MSK de origem.
-
Produza dados no cluster na conta de origem:
Kafka-installation-path/bin/kafka-console-producer.sh --broker-list SourceMSKclusterBootstrapServerString --topic exampletopic1
Observação: substitua kafka-installation-path pelo caminho de onde você instalou o Kafka em seu sistema. Substitua SourceMSKclusterBootstrapServerString pela string do servidor Bootstrap do cluster do Amazon MSK de origem.
Saída esperada:
>message 1
>message 2
-
Liste os tópicos do cluster na conta de destino:
Kafka-installation-path/bin/kafka-topics.sh --bootstrap-server TargetMSKclusterBootstrapServerString --list
Observação: substitua kafka-installation-path pelo caminho de onde você instalou o Kafka em seu sistema. Substitua TargetMSKclusterBootstrapServerString pela string do servidor Bootstrap do cluster do Amazon MSK de destino.
Exemplo de saída:
__amazon_msk_canary __amazon_msk_connect_configs_mm2-*****
__amazon_msk_connect_offsets_mm2-*****
__amazon_msk_connect_status_mm2-*****
__consumer_offsets
exampleTopic1
primary.exampleTopic1
-
Consuma dados do cluster de destino:
Kafka-installation-path/bin/kafka-console-consumer.sh --bootstrap-server TargetMSKclusterBootstrapServerString --topic exampletopic1 --from-beginning
Observação: substitua kafka-installation-path pelo caminho de onde você instalou o Kafka em seu sistema. Substitua TargetMSKclusterBootstrapServerString pela string do servidor Bootstrap do cluster do Amazon MSK de destino.
Saída esperada:
>message 1
>message 2
Informações relacionadas
Migrar para um cluster do Amazon MSK