¿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 nubes virtuales privadas (VPC), debe crear una conexión de emparejamiento de VPC. Cree esta conexión de emparejamiento de VPC con una VPC de otra cuenta de AWS de la misma región de AWS o de una región diferente. Para obtener más información, consulte Crear una conexión de emparejamiento de VPC.

Los grupos de seguridad que están asociados con el clúster de Amazon MSK de origen 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 MSK. Para obtener más información, consulte Actualizar sus grupos de seguridad para que hagan referencia a los grupos de seguridad iguales.

Nota: Para hacer referencia a un grupo de seguridad en otra cuenta, incluya el número de cuenta en el campo Origen o Destino. Ejemplo: 123456789012/sg-1a2b3c4d

Crear una conexión con la información de la conexión MM2

Las conexiones personalizadas de MSK Connect aceptan archivos o carpetas que terminen en .jar o .zip.

Complete los siguientes pasos:

1.    Cree una carpeta o archivo ficticio y, a continuación, comprímalo:

mkdir mm2   
zip mm2.zip mm2 

2.    Cargue el objeto .zip a su contenedor de Amazon Simple Storage Service (Amazon S3) en la cuenta de destino:

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

Dado que Apache Kafka y MSK Connect tienen las bibliotecas MirrorMaker integradas, no es necesario añadir archivos.jar adicionales para esta funcionalidad. MSK Connect tiene el requisito previo de que haya un complemento personalizado en la creación del conector. Por lo tanto, debe crear uno vacío como referencia.

3.    En la cuenta de destino, use el archivo.zip para crear un complemento personalizado. Utilice mm2-connect-plugin como nombre para el complemento personalizado.

Crear un conector MSK Connect

Lleve a cabo los siguientes pasos para crear un conector en la cuenta de destino:

1.    Abra la consola de Amazon MSK.

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

3.    Seleccione Crear conector.

4.    En la lista de complementos personalizados, seleccione el que está junto al complemento personalizado que creó y, a continuación, elija Siguiente.

5.    Introduzca un nombre para el conector y, si lo desea, una descripción.

6.    En la lista de clústeres, seleccione el clúster de destino.

7.    Copie la siguiente configuración y péguela en el campo de configuración del conector. Modifique el ejemplo para su 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.    Configure la capacidad del conector.

9.    Bajo la Configuración de trabajo, seleccione Usar la configuración predeterminada de MSK.

10.    Bajo los Permisos de acceso, elija la función AWS Identity and Access Management (IAM) que proporciona los permisos necesarios a MSK Connect. Entonces, seleccione Siguiente.

11.    En la página Seguridad, en Cifrado: en tránsito, seleccione Tráfico de texto sin formato. Entonces, seleccione Siguiente.

12.    Si lo desea, en la página Registros, defina la entrega del registro. Entonces,seleccioneSiguiente.

13.    Bajo Revisar y crear, seleccione Crear conector.

Nota: Con esta configuración, para replicar cada tema del clúster de origen, MM2 crea dos temas en el clúster de destino. Por ejemplo, si tiene el tema exampleTopic1 en el clúster de origen, MM2 crea los temas primary.exampleTopic1 y exampleTopic1 en el clúster de destino. Los mensajes se envían al tema exampleTopic1.

Crear una instancia de cliente

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

1.    Lance una instancia de Amazon Elastic Compute Cloud (Amazon EC2) según sus requisitos en la cuenta de origen o de destino. A continuación, conéctese a la instancia.

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

sudo yum -y install java-11

3.    Ejecute 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.    Cree el tema exampletopic1 en el clúster de Amazon MSK en la cuenta de origen:

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

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

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

6.    Enumere los temas del clúster en la cuenta de destino:

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

El resultado debe tener un aspecto similar al que se muestra a continuación:

__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 datos del clúster 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

Información relacionada

Migración de clústeres con MirrorMaker de Apache Kafka

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año