Wie greife ich über benutzerdefinierte Ports auf Amazon-MSK-Broker zu?

Lesedauer: 5 Minute
0

Ich möchte über benutzerdefinierte Ports auf Broker in Amazon Managed Streaming for Apache Kafka (Amazon MSK) zugreifen.

Kurzbeschreibung

Sie können die advertised.listener-Konfiguration in Amazon MSK dynamisch vom standardmäßigen Kafka-Brokerport 9094/9092 auf 443 oder einen anderen Port Ihrer Wahl aktualisieren. Die dynamischen Konfigurationen werden in Apache ZooKeeper gespeichert. Daher werden diese Konfigurationen nicht aktualisiert, wenn Sie den Broker neu starten.

Angenommen, Sie haben einen Amazon-MSK-Cluster mit zwei Brokern auf Apache Kafka Version 2.4.1 mit TLS-Verschlüsselung und Klartext-Verkehr aktiviert. Stellen Sie zum Aktualisieren der Brokerkonfiguration durch Ändern der advertised.listener-Eigenschaft sicher, dass sich Ihr Client-Computer in derselben Virtual Private Cloud (VPC) befindet wie der Amazon-MSK-Cluster. Für die Kommunikation und Verbindung von Port 443 müssen Sie einen Network Load Balancer, eine Zielgruppe und eine von Amazon Route 53 privat gehostete Zone auf kafka.amazon.com konfigurieren.

Sie können diese Konfigurationen auf eine der folgenden Arten erstellen:

  • Wenn Sie einen einzigen Port für alle Broker verwenden müssen, sind für jeden Broker separate Network Load Balancer zu konfigurieren. Für die Verwendung eines einzelnen Ports 443 für zwei Broker sieht das Kommunikationsmuster zwischen Client und Broker beispielsweise folgendermaßen aus:
    Client – Network Load Balancer 1 für Port 443 – Zielgruppe für Broker 1 – Broker 1 Client – Network Load Balancer 2 für Port 443 – Zielgruppe für Broker 2 – Broker 2
  • Wenn Sie einen Network Load Balancer für alle Broker verwenden müssen, ist für jeden Broker ein separater Port erforderlich. Für die Verwendung eines Network Load Balancers für zwei Broker sieht das Kommunikationsmuster zwischen Client und Broker beispielsweise folgendermaßen aus:
    Client – Listener-Port 9001 des Network Load Balancers – Zielgruppe für Broker 1 – Broker 1 Client – Listener-Port 9002 des Network Load Balancers – Zielgruppe für Broker 2 – Broker 2

In diesem Artikel wird die erste Methode erörtert.

Lösung

Aktualisierung des Brokerports

Aktualisieren Sie den Port für Broker 1 von 9094 auf 443, indem Sie auf dem Clientcomputer einen Befehl ähnlich dem folgenden ausführen:

[ec2-user@ip-aa-a-a-aaa bin]$./kafka-configs.sh --bootstrap-server 
b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:9094 --entity-type 
brokers --entity-name 1 --alter --command-config client.properties 
--add-config 
advertised.listeners=[CLIENT_SECURE://b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:443,REPLICATION://b-1-internal.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:9093,REPLICATION_SECURE://b-1-internal.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:9095]

Completed updating config for entity: broker 1

Aktualisieren Sie den Port für Broker 2 auf 443, indem Sie auf dem Clientcomputer einen Befehl ähnlich dem folgenden ausführen:

[ec2-user@ip-aa-a-a-aaa bin]$./kafka-configs.sh --bootstrap-server 
b-2.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:9094 --entity-type 
brokers --entity-name 2 --alter --command-config client.properties 
--add-config 
advertised.listeners=[CLIENT_SECURE://b-2.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:443,REPLICATION://b-2-internal.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:9093,REPLICATION_SECURE://b-2-internal.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:9095]

Completed updating config for entity: broker 2

Hinweis:

  • Sie müssen den vorherigen Befehl von demselben Clientcomputer für jeden Broker getrennt ausführen. Dieses Konfigurationsupdate erfordert keinen Neustart des Brokers.
  • Beim Ändern der Werte für REPLICATION und REPLICATION_SECURE müssen Sie unbedingt -internal an den Namen des Brokers anfügen.
  • Achten Sie darauf, die Ports 9093 und 9095 in den Befehlen nicht zu ersetzen.
  • Achten Sie darauf, beim Aktualisieren der Brokerport-Konfiguration die richtigen Werte für das Client-Feld zu verwenden. Beispiele: Verwenden Sie für TLS – CLIENT_SECURE [CLIENT_SECURE://b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:443]. Verwenden Sie für SASL – CLIENT_SASL_SCRAM [CLIENT_SASL_SCRAM://b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:443]. Verwenden Sie für IAM – CLIENT_IAM [CLIENT_IAM://b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:443].

Sie können den Wert für das Client-Feld folgendermaßen überprüfen:

1.    Rufen Sie die Apache-ZooKeeper-Shell mit dem folgenden Befehl auf:

./zookeeper-shell.sh <ZooKeeper_connection_string>

2.    Listen Sie die Konfiguration für Broker 1 mit dem folgenden Befehl auf:

get /brokers/ids/1
{"listener_security_protocol_map":{"REPLICATION_SECURE":"SSL","CLIENT_SASL_SCRAM":"SASL_SSL","REPLICATION":"PLAINTEXT","CLIENT":"PLAINTEXT","CLIENT_SECURE":"SSL"},"endpoints":["CLIENT://b-1.testdns.xx.c14.kafka.us-east-1.amazonaws.com:9092","CLIENT_SASL_SCRAM://b-1.dns.691zg3.c14.kafka.us-east-1.amazonaws.com:9096","CLIENT_SECURE://b-1.testdns.xx.c14.kafka.us-east-1.amazonaws.com:9094","REPLICATION://b-1-internal.testdns.xx.c14.kafka.us-east-1.amazonaws.com:9093","REPLICATION_SECURE://b-1-internal.testdns.xx.c14.kafka.us-east-1.amazonaws.com:9095"],"rack":"use1-az2","jmx_port":9099,"port":9092,"host":"b-1.testdns.xx.c14.kafka.us-east-1.amazonaws.com","version":4,"timestamp":"1645081828199"}

Erstellen von zwei Zielgruppen

Erstellen Sie zwei Zielgruppen (Beispiel: TG1 und TG2) in derselben VPC wie Ihr Amazon-MSK-Cluster mit den folgenden Optionen:

  • ip für Zieltyp
  • TCP für Protokoll
  • 9094 für Port

Registrieren Sie dann den Amazon-MSK-Broker mit der IP-Adresse des Brokers bei der jeweiligen Zielgruppe.

Führen Sie zum Abrufen der IP-Adresse des Brokers einen Befehl ähnlich dem folgenden aus:

[ec2-user@ip-aa-a-a-aaa bin]$ dig +short b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com
10.0.3.xx

[ec2-user@ip-aa-a-a-aaa bin]$ dig +short b-2.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com
10.0.4.xx

Erstellen von zwei Network Load Balancers

Erstellen Sie zwei Network Load Balancer (Beispiel: NLB1 und NLB2) mit den folgenden Einstellungen:

  • Ändern Sie für Listeners den Port so, dass er auf den vom Broker angekündigten Port 443 verweist.
  • Wählen Sie für Standardaktion die entsprechende Zielgruppe zur Weiterleitung des Datenverkehrs aus.
  • Wählen Sie für Mappings unbedingt die Subnetze aus, in denen sich die Amazon-MSK-Broker befinden.

Achten Sie darauf, die zonenübergreifenden Lastenverteilung für die von Ihnen erstellten Balancer zu aktivieren.

Erstellen einer von Route 53 privat gehosteten Zone

Erstellen Sie eine von Route 53 privat gehostete Zone mit den folgenden Optionen:

  • Geben Sie für Domain Name den Domainnamen aus Ihrem Broker-String ein (Beispiel: kafka.us-east-1.amazonaws.com).
  • Geben Sie für VPC ID die VPC ID der Clients ein.

Erstellen von zwei Alias-Datensätzen des Typs A

Erstellen Sie mithilfe der Amazon-Route-53-Konsole zwei Alias-Datensätze des Typs A mit Datensatznamen, die mit den jeweiligen DNS-Namen der Broker übereinstimmen. Dies ist erforderlich, um Fehler beim TLS-Handshake zu verhindern.

Stellen Sie sicher, dass die eingehenden Regeln für die Sicherheitsgruppe des Clusters Datenverkehr von der IP-Adresse der Network Load Balancer zum Port 9094 zulassen.

Nach Ausführen aller vorherigen Schritte können Sie eine Verbindung zum vom Broker angekündigten Port 443 herstellen.

Hinweis: Diese Lösung funktioniert für alle Arten von Zugriffssteuerungsmethoden, die für Amazon-MSK-Cluster aktiviert sind.


Zugehörige Informationen

Wie Goldman Sachs mit AWS PrivateLink kontenübergreifende Konnektivität zu ihren Amazon MSK-Clustern aufbaut

Benutzerdefinierte MSK-Konfigurationen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren