Como transfiro dados entre clusters do Amazon MSK em contas diferentes com o MirrorMaker 2 que está sendo executado no MSK Connect?

5 minuto de leitura
0

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 diferentes.

Resolução

Configurar o emparelhamento da VPC

Como os clusters do Amazon MSK estão em diferentes Nuvens privadas virtuais (VPCs), você deve criar uma conexão de emparelhamento da VPC. Crie essa conexão de emparelhamento da VPC com uma VPC em outra conta da AWS na mesma região da AWS ou em uma região diferente. Para mais informações, consulte 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 MSK. Para mais informações, consulte Atualizar seus grupos de segurança para referenciar grupos de segurança de pares.

Observação: Para referenciar um grupo de segurança em outra conta, inclua o número da conta no campo **Origem ** ou Destino. Exemplo: 123456789012/sg-1a2b3c4d

Criar um plug-in com informações do plug-in MM2

Os plug-ins personalizados do MSK Connect aceitam um arquivo ou pasta com extensão .jar ou .zip.

Execute as etapas a seguir:

1.    Crie uma pasta ou arquivo fictício e compacte-o:

mkdir mm2   
zip mm2.zip mm2 

2.    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/

Como o Apache Kafka e o MSK Connect têm bibliotecas MirrorMaker incorporadas, você não precisa adicionar arquivos .jar adicionais para essa funcionalidade. O MSK Connect tem um pré-requisito de que um plug-in personalizado esteja presente na criação do conector. Portanto, você deve criar um vazio para referência.

3.    Na conta de destino, use o arquivo .zip para criar um plug-in personalizado. Use mm2-connect-plugin como nome para o plug-in personalizado.

Criar um conector MSK Connect

Conclua as etapas a seguir para criar um conector na conta de destino:

1.    Abra o console do Amazon MSK.

2.    No painel de navegação, em MSK Connect, escolha Connectors (Conectores). 

3.    Escolha Create connector (Criar conector).

4.    Na lista de plug-ins personalizados, selecione aquele que está ao lado do plug-in personalizado que você criou e escolha Next (Avançar).

5.    Insira um nome para o conector e, opcionalmente, uma descrição.

6.    Na lista de clusters, escolha o cluster de destino.

7.    Copie a configuração a seguir e cole-a no campo de configuração do conector. Modifique o exemplo para o seu caso de uso.

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_MSK_Bootstrap_Server_PLAINTEXT>  
source.cluster.security.protocol=PLAINTEXT  

# Destination cluster options  
target.cluster.bootstrap.servers=<Target_MSK_Bootstrap_Server_PLAINTEXT>  
target.cluster.security.protocol=PLAINTEXT

8.    Defina a capacidade do seu conector.

9.    Em Worker configuration (Configuração do operador), escolha Use the MSK default configuration (Usar configuração padrão do MSK).

10.    Em Access permissions (Permissões de acesso), escolha o perfil do AWS Identity and Access Management (IAM) que fornece as permissões necessárias para o MSK Connect. Em seguida, escolha Next (Avançar).

11.    Na página Security (Segurança), em Encryption - in transit (Criptografia - em trânsito), escolha Plaintext traffic (Tráfego de texto simples). Em seguida, escolha Next (Avançar).

12.    Opcionalmente, na página Logs, defina a entrega de logs. Em seguida, escolha Próximo.

13.    Em Review and create (Revisar e criar), escolha Create connector (Criar conector).

Observação: com essa configuração, 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. As mensagens são encaminhadas ao 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.

1.    Inicie uma instância do Amazon Elastic Compute Cloud (Amazon EC2) de acordo com seus requisitos na conta de origem ou de destino. Em seguida, conecte-se à instância.

2.     Execute o comando a seguir para instalar o Java na máquina cliente:

sudo yum -y install java-11

3.    Execute o seguinte comando para baixar o Apache Kafka:

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

4.    Crie o tópico exampletopic1 no cluster do Amazon MSK na conta de origem:

<path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server <Source MSK cluster BootstrapServerString> --replication-factor 3 --partitions 1 --topic exampletopic1

5.    Produza dados no cluster na conta de origem:

<path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list <Source MSK cluster BootstrapServerString> --topic exampletopic1
>message 1  
>message 2

6.    Liste os tópicos do cluster na conta de destino:

<path-to-your-kafka-installation>/bin/kafka-topics.sh --bootstrap-server <Target MSK cluster BootstrapServerString> --list

A saída deve ser semelhante à seguinte:

__amazon_msk_canary  
__amazon_msk_connect_configs_mm2-*****  
__amazon_msk_connect_offsets_mm2-*****  
__amazon_msk_connect_status_mm2-*****  
__consumer_offsets  
exampleTopic1  
primary.exampleTopic1

7.    Consuma dados do cluster de destino:

<path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server <Target MSK cluster BootstrapServerString> --topic exampletopic1 --from-beginning
message 1  
message 2

Informações relacionadas

Migrar clusters usando o MirrorMaker do Apache Kafka

AWS OFICIAL
AWS OFICIALAtualizada há um ano