Wie übertrage ich Daten zwischen Amazon MSK-Clustern in verschiedenen Konten mit MirrorMaker 2, das auf MSK Connect läuft?

Lesedauer: 4 Minute
0

Ich möchte MirrorMaker 2.0 (MM2) verwenden, das auf MSK Connect läuft, um Daten zwischen Amazon Managed Streaming für Apache Kafka (Amazon MSK)-Clustern in verschiedenen Konten zu übertragen.

Lösung

VPC-Peering einrichten

Da sich die Amazon MSK-Cluster in verschiedenen Virtual Private Clouds (VPCs) befinden, müssen Sie eine VPC-Peering-Verbindung erstellen. Erstellen Sie diese VPC-Peering-Verbindung mit einer VPC in einem anderen AWS-Konto in derselben AWS-Region oder einer anderen Region. Weitere Informationen finden Sie unter Erstellen einer VPC-Peering-Verbindung.

Die Sicherheitsgruppen, die dem Amazon MSK-Quell-Cluster zugeordnet sind, müssen den gesamten Datenverkehr von den Sicherheitsgruppen des Zielclusters zulassen. Die Sicherheitsgruppen des Zielclusters müssen ebenfalls den gesamten Datenverkehr aus den Sicherheitsgruppen des MSK-Clusters zulassen. Weitere Informationen finden Sie unter Aktualisieren Ihrer Sicherheitsgruppen, um auf Peer-Sicherheitsgruppen zu verweisen.

**Hinweis:**Um auf eine Sicherheitsgruppe in einem anderen Konto zu verweisen, geben Sie die Kontonummer in das Feld Quelle oder Ziel ein. Beispiel: 123456789012/sg-1a2b3c4d

Erstellen Sie ein Plugin mit MM2-Plugin-Informationen

Die benutzerdefinierten MSK Connect-Plugins akzeptieren eine Datei oder einen Ordner mit der Endung .jar oder .zip.

Führen Sie die folgenden Schritte aus:

1.    Erstellen Sie einen Dummy-Ordner oder eine Dummy-Datei und komprimieren Sie diese/n anschließend:

mkdir mm2   
zip mm2.zip mm2 

2.    Laden Sie das ZIP-Objekt in Ihren Amazon Simple Storage Service (Amazon S3)-Bucket im Zielkonto hoch:

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

Da Apache Kafka und MSK Connect über integrierte MirrorMaker-Bibliotheken verfügen, müssen Sie für diese Funktion keine zusätzlichen JAR-Dateien hinzufügen. MSK Connect setzt voraus, dass bei der Erstellung des Connectors ein benutzerdefiniertes Plugin vorhanden sein muss. Daher müssen Sie eines als Referenz erstellen.

3.    Verwenden Sie im Zielkonto die ZIP-Datei, um ein benutzerdefiniertes Plugin zu erstellen. Verwenden Sie mm2-connect-plugin als Namen für das benutzerdefinierte Plugin.

Erstellen Sie einen MSK Connect-Connector

Gehen Sie wie folgt vor, um einen Connector im Zielkonto zu erstellen:

1.    Öffnen Sie die Amazon MSK-Konsole.

2.    Wählen Sie im Navigationsbereich unter MSK Connect die Option Connectors aus.

3.    Wählen Sie Connector erstellen aus.

4.    Wählen Sie in der Liste der benutzerdefinierten Plugins das Plugin aus, das sich neben dem von Ihnen erstellten benutzerdefinierten Plugin befindet, und wählen Sie dann Weiter aus.

5.    Geben Sie einen Namen für den Connector und optional eine Beschreibung ein.

6.    Wählen Sie aus der Liste der Cluster den Zielcluster aus.

7.    Kopieren Sie die folgende Konfiguration und fügen Sie sie dann in das Connector-Konfigurationsfeld ein. Passen Sie das Beispiel für Ihren Anwendungsfall an.

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.    Stellen Sie die Kapazität für Ihren Connector ein.

9.    Wählen Sie unter Worker-Konfiguration die Option MSK-Standardkonfiguration verwenden aus.

10.    Wählen Sie unter Zugriffsberechtigungen die AWS Identity and Access Management (IAM)-Rolle aus, die die erforderlichen Berechtigungen für MSK Connect bietet. Wählen Sie anschließend Weiter aus.

11.    Wählen Sie auf der Seite Sicherheit unter Verschlüsselung — während der Übertragung die Option Klartext-Verkehr aus. Wählen Sie anschließend Weiter aus.

12.    Legen Sie optional auf der Seite Protokolle die Protokollzustellung fest. Wählen Sie dann Weiter.

13.    Wählen Sie unter Überprüfen und erstellen die Option Connector erstellen aus.

**Hinweis:**Mit dieser Konfiguration erstellt MM2 zwei Themen im Zielcluster, um die einzelnen Themen aus dem Quellcluster zu replizieren. Wenn Sie beispielsweise das Thema exampleTopic1 im Quellcluster haben, erstellt MM2 die Themen primary.exampleTopic1 und exampleTopic1 auf dem Zielcluster. Nachrichten werden an das Thema exampleTopic1 weitergeleitet.

Erstellen Sie eine Client-Instance

Sie müssen eine Client-Instance erstellen, um Themen zu erstellen und Daten aus Themen zu erzeugen oder zu nutzen.

1.    Starten Sie eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance je nach Ihren Anforderungen entweder im Quell- oder Zielkonto. Stellen Sie dann eine Verbindung mit der Instance her.

2.    Führen Sie den folgenden Befehl aus, um Java auf dem Client-Computer zu installieren:

sudo yum -y install java-11

3.    Führen Sie den folgenden Befehl aus, um Apache Kafka herunterzuladen:

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.    Erstellen Sie das Thema exampletopic1 im Amazon MSK-Cluster im Quellkonto:

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

5.    Produzieren Sie Daten im Cluster auf dem Quellkonto:

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

6.    Listen Sie die Themen im Cluster auf dem Zielkonto auf:

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

Die Ausgabe muss der folgenden ähneln:

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

7.    Daten aus dem Zielcluster nutzen:

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

Ähnliche Informationen

Migrieren von Clustern mit MirrorMaker von Apache Kafka

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr