Saltar al contenido

¿Cómo transfiero datos entre clústeres de Amazon MSK en diferentes cuentas con MirrorMaker 2 que se ejecuta en MSK Connect?

5 minutos de lectura
0

Quiero usar MirrorMaker 2.0 (MM2), que se ejecuta en MSK Connect, para transferir datos entre clústeres de Amazon Managed Streaming para Apache Kafka (Amazon MSK) en diferentes cuentas.

Resolución

Configurar el emparejamiento de VPC

Dado que los clústeres de Amazon MSK se encuentran en diferentes instancias de Amazon Virtual Private Cloud (Amazon VPC), debes crear una conexión de emparejamiento de VPC.

Los grupos de seguridad que están asociados con el clúster de origen de Amazon MSK deben permitir todo el tráfico de los grupos de seguridad del clúster de destino. Los grupos de seguridad del clúster de destino también deben permitir todo el tráfico de los grupos de seguridad del clúster de origen de Amazon MSK. Para más información, consulta Actualización de los grupos de seguridad para que hagan referencia a los grupos de seguridad del mismo nivel.

Nota: Para hacer referencia a un grupo de seguridad en otra cuenta, incluye el número de cuenta en el campo Origen o Destino.

Creación de un complemento con la información del complemento MM2

Nota: Los complementos personalizados de MSK Connect aceptan archivos o carpetas que terminen en .jar o .zip.

Sigue estos pasos:

  1. Para crear una carpeta de prueba y, a continuación, comprimirla, ejecuta los siguientes comandos:

    mkdir mm2
    zip mm2.zip mm2
  2. Carga el objeto .zip al bucket de Amazon Simple Storage Service (Amazon S3) en la cuenta de destino:

    aws s3 cp mm2.zip s3://mytestbucket/

    Nota: Sustituye s3://mytestbucket/ por la URL de tu bucket de Amazon S3.
    Dado que Apache Kafka y MSK Connect tienen las bibliotecas MirrorMaker integradas, no es necesario añadir archivos.jar adicionales para esta funcionalidad.

  3. En la cuenta de destino, usa el archivo.zip para crear un complemento personalizado y asigna al archivo el nombre mm2-connect-plugin.
    Nota: Cuando uses MSK Connect, debes tener un complemento personalizado al crear el conector.

Creación de un conector de MSK Connect en la cuenta de destino

Sigue estos pasos:

  1. Abre la consola de Amazon MSK.

  2. En el panel de navegación, en MSK Connect, selecciona Conectores.

  3. Selecciona Crear conector.

  4. Elige Usar el complemento personalizado existente.

  5. En Complementos personalizados, selecciona el complemento personalizado que creaste y, a continuación, elige Siguiente.

  6. Introduce un nombre para el conector.
    (Opcional) Introduce una descripción.

  7. En la lista de clústeres, selecciona el clúster de destino.

  8. Agrega una configuración similar a la del ejemplo siguiente en el campo de configuración del 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. Configura la capacidad del conector.

  10. En Configuración de trabajo, selecciona Usar la configuración predeterminada de MSK.

  11. En Permisos de acceso, elige el rol de AWS Identity and Access Management (IAM) que proporciona los permisos necesarios a MSK Connect. Después, selecciona Siguiente.

  12. En la página Seguridad, en Cifrado: en tránsito, selecciona Tráfico de texto sin formato. Después, selecciona Siguiente.

  13. A continuación, en la página Registros, define la entrega del registro. Después, selecciona Siguiente.

  14. En Revisar y crear, selecciona Crear conector.

Nota: Con la configuración anterior, para replicar cada tema del clúster de origen, MM2 crea dos temas en el clúster de destino. Por ejemplo, si tienes el tema exampleTopic1 en el clúster de origen, MM2 crea los temas primary.exampleTopic1 y exampleTopic1 en el clúster de destino. A continuación, MM2 dirige los mensajes al tema exampleTopic1.

Creación de una instancia de cliente

Debes crear una instancia de cliente para crear temas y producir o consumir datos a partir de temas.

Sigue estos pasos:

  1. Inicia una instancia de Amazon Elastic Compute Cloud (Amazon EC2) y, a continuación, conéctate a la instancia.

  2. Ejecuta el siguiente comando para instalar Java en el equipo del cliente:

    sudo yum -y install java-11
  3. Ejecuta el siguiente comando para descargar 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. Crea el tema exampletopic1 en el clúster de Amazon MSK en la cuenta de origen:

    kafka-installation-path/bin/kafka-topics.sh --create --bootstrap-server SourceMSKclusterBootstrapServerString --replication-factor 3 --partitions 1 --topic exampletopic1

    Nota: Sustituye kafka-installation-path por la ruta donde instalaste Kafka en tu sistema. Sustituye SourceMSKclusterBootstrapServerString por la cadena de servidor de Bootstrap del clúster de origen de Amazon MSK.

  5. Agrega datos en el clúster de la cuenta de origen:

    Kafka-installation-path/bin/kafka-console-producer.sh --broker-list SourceMSKclusterBootstrapServerString --topic exampletopic1

    Nota: Sustituye kafka-installation-path por la ruta donde instalaste Kafka en tu sistema. Sustituye SourceMSKclusterBootstrapServerString por la cadena de servidor de Bootstrap del clúster de origen de Amazon MSK.
    Resultado esperado:

    >message 1
    >message 2
  6. Enumera los temas del clúster en la cuenta de destino:

    Kafka-installation-path/bin/kafka-topics.sh --bootstrap-server TargetMSKclusterBootstrapServerString --list

    Nota: Sustituye kafka-installation-path por la ruta donde instalaste Kafka en tu sistema. Sustituye TargetMSKclusterBootstrapServerString por la cadena de servidor de Bootstrap del clúster de destino de Amazon MSK.
    Resultado de ejemplo:

    __amazon_msk_canary  __amazon_msk_connect_configs_mm2-*****  
    __amazon_msk_connect_offsets_mm2-*****  
    __amazon_msk_connect_status_mm2-*****  
    __consumer_offsets  
    exampleTopic1  
    primary.exampleTopic1
  7. Consume datos del clúster de destino:

    Kafka-installation-path/bin/kafka-console-consumer.sh --bootstrap-server TargetMSKclusterBootstrapServerString --topic exampletopic1 --from-beginning

    Nota: Sustituye kafka-installation-path por la ruta donde instalaste Kafka en tu sistema. Sustituye TargetMSKclusterBootstrapServerString por la cadena de servidor de Bootstrap del clúster de destino de Amazon MSK.
    Resultado esperado:

    >message 1
    >message 2

Información relacionada

Migración a un clúster de Amazon MSK