Ir para o conteúdo

Como transfiro dados entre clusters do Amazon MSK em contas diferentes com o MirrorMaker 2 que é 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 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:

  1. Para criar uma pasta de teste e depois compactá-la, execute os seguintes comandos:

    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/

    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.

  3. 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:

  1. Abra o console do Amazon MSK.

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

  3. Escolha Criar conector.

  4. Escolha Usar plug-in personalizado atual.

  5. Em Plug-ins personalizados, selecione o plug-in personalizado que você criou e escolha Avançar.

  6. Insira um nome para o conector.
    (Opcional) Insira uma descrição.

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

  8. 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
  9. Defina a capacidade do seu conector.

  10. Em Configuração do processamento, escolha Usar configuração padrão do MSK.

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

  12. Na página Segurança, em Criptografia - em trânsito, escolha Tráfego de texto simples. Em seguida, escolha Próximo.

  13. (Opcional) Na página Logs, defina a entrega de logs. Em seguida, escolha Próximo.

  14. 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:

  1. Execute uma instância do Amazon Elastic Compute Cloud (Amazon EC2) e, em seguida, conecte-se à instância.

  2. Para instalar o Java na máquina cliente, execute o comando a seguir:

    sudo yum -y install java-11
  3. 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
  4. 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.

  5. 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
  6. 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
  7. 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

AWS OFICIALAtualizada há 3 meses