Come faccio a trasferire dati tra cluster Amazon MSK in account diversi con MirrorMaker 2 in esecuzione su MSK Connect?

4 minuti di lettura
0

Desidero utilizzare MirrorMaker 2.0 (MM2) che funziona su MSK Connect per trasferire dati tra cluster Amazon Managed Streaming for Apache Kafka (Amazon MSK) in diversi account.

Risoluzione

Configurare il peering VPC

Poiché i cluster Amazon MSK si trovano in cloud privati virtuali (VPC) diversi, è necessario creare una connessione peering VPC. Crea questa connessione peering VPC con un VPC in un altro account AWS nella stessa regione AWS o in una regione diversa. Per ulteriori informazioni, vedere Creare una connessione peering VPC.

I gruppi di sicurezza associati al cluster Amazon MSK di origine devono consentire tutto il traffico proveniente dai gruppi di sicurezza del cluster di destinazione. I gruppi di sicurezza del cluster di destinazione devono inoltre consentire tutto il traffico proveniente dai gruppi di sicurezza del cluster MSK. Per ulteriori informazioni, consulta Aggiornare i gruppi di sicurezza per fare riferimento a gruppi di sicurezza tra pari.

Nota: Per fare riferimento a un gruppo di sicurezza in un altro account, includi il numero di conto nel campo Origine o Destinazione. Esempio: 123456789012/sg-1a2b3c4d

Crea un plugin con informazioni sul plugin MM2

I plugin personalizzati di MSK Connect accettano un file o una cartella con terminazione.jar o .zip.

Completa i seguenti passaggi:

  1. Crea una cartella o un file fittizio e poi comprimilo:
mkdir mm2   
zip mm2.zip mm2 
  1. Carica l'oggetto.zip nel tuo bucket Amazon Simple Storage Service (Amazon S3) nell'account di destinazione:
aws s3 cp mm2.zip s3://mytestbucket/

Poiché Apache Kafka e MSK Connect dispongono di librerie MirrorMaker integrate, non è necessario aggiungere altri file.jar per questa funzionalità. MSK Connect richiede la presenza di un plug-in personalizzato alla creazione del connettore. Pertanto, è necessario crearne uno vuoto come riferimento.

  1. Nell'account di destinazione, usa il file.zip per creare un plug-in personalizzato. Usa mm2-connect-plugin come nome per il plug-in personalizzato.

Creare un connettore MSK Connect

Completa i seguenti passaggi per creare un connettore nell'account di destinazione:

  1. Apri la console Amazon MSK.

  2. Nel pannello di navigazione, in MSK Connect, scegli Connettori.

  3. Scegli Crea connettore.

  4. Nell'elenco dei plugin personalizzati, seleziona quello che si trova accanto al plug-in personalizzato che hai creato, quindi scegli Avanti.

  5. Inserisci un nome per il connettore e, facoltativamente, una descrizione.

  6. Dall'elenco dei cluster, scegli il cluster di destinazione.

  7. Copia la seguente configurazione, quindi incollala nel campo di configurazione del connettore. Modifica l'esempio in base al tuo caso d'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
  1. Imposta la capacità del connettore.

  2. In Configurazione Worker, selezionare Usa la configurazione predefinita MSK.

  3. In Autorizzazioni di accesso, scegli il ruolo AWS Identity and Access Management (IAM) che fornisce le autorizzazioni necessarie a MSK Connect. Quindi, scegli Avanti.

  4. Nella pagina Sicurezza, in Crittografia - in transito, scegli Plaintext. Quindi, scegli Avanti.

  5. Facoltativamente, nella pagina Registri, imposta la consegna del registro. Quindi, scegli Avanti.

  6. In Rivedi e crea, scegli Crea connettore.

Nota: Con questa configurazione, per replicare ogni argomento dal cluster di origine, MM2 crea due argomenti nel cluster di destinazione. Ad esempio, se hai l'argomento exampleTopic1 nel cluster di origine, MM2 crea gli argomenti primary.exampleTopic1 ed exampleTopic1 nel cluster di destinazione. I messaggi vengono indirizzati all'argomento exampleTopic1.

Crea un'istanza client

È necessario creare un'istanza client per creare argomenti e produrre o utilizzare dati dagli argomenti.

  1. Avvia un'istanza Amazon Elastic Compute Cloud (Amazon EC2) in base alle tue esigenze nell'account di origine o di destinazione. Quindi, connettiti all'istanza.

  2. Esegui il seguente comando per installare Java sul computer client:

sudo yum -y install java-11
  1. Esegui il seguente comando per scaricare 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
  1. Crea l'argomento exampletopic1 nel cluster Amazon MSK nell'account di origine:
<path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server <Source MSK cluster BootstrapServerString> --replication-factor 3 --partitions 1 --topic exampletopic1
  1. Produci dati nel cluster sull'account di origine:
<path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list <Source MSK cluster BootstrapServerString> --topic exampletopic1
>message 1  
>message 2
  1. Elenca gli argomenti del cluster sull'account di destinazione:
<path-to-your-kafka-installation>/bin/kafka-topics.sh --bootstrap-server <Target MSK cluster BootstrapServerString> --list

L'output deve essere simile al seguente:

__amazon_msk_canary  
__amazon_msk_connect_configs_mm2-*****  
__amazon_msk_connect_offsets_mm2-*****  
__amazon_msk_connect_status_mm2-*****  
__consumer_offsets  
exampleTopic1  
primary.exampleTopic1
  1. Consuma dati dal cluster di destinazione:
<path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server <Target MSK cluster BootstrapServerString> --topic exampletopic1 --from-beginning
message 1  
message 2

Informazioni correlate

Migrazione dei cluster utilizzando MirrorMaker di Apache Kafka

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa