Comment accéder aux agents Amazon MSK à partir de ports personnalisés ?

Date de la dernière mise à jour : 22/02/2022

Je souhaite accéder aux agents Amazon Managed Streaming for Apache Kafka (Amazon MSK) à partir de ports personnalisés.

Brève description

Vous pouvez mettre à jour dynamiquement la configuration advertised.listener dans Amazon MSK à partir du port d'agent Kafka par défaut 9094/9092 vers 443 ou tout autre port de votre choix. Les configurations dynamiques sont stockées dans Apache ZooKeeper. Par conséquent, ces configurations ne sont pas mises à jour lorsque vous redémarrez l'agent.

Par exemple, supposons que vous ayez un cluster Amazon MSK avec deux agents sur Apache Kafka version 2.4.1 avec le chiffrement TLS et le trafic en texte brut activés. Pour mettre à jour la configuration de l'agent en modifiant la propriété advertised.listener, assurez-vous que votre machine cliente se trouve dans le même cloud privé virtuel (VPC) que le cluster Amazon MSK. Pour écouter et vous connecter à partir du port 443, vous devez configurer un Network Load Balancer, un groupe cible et une zone hébergée privée Amazon Route 53 sur kafka.amazon.com.

Vous pouvez créer ces configurations en utilisant l'une des approches suivantes :

  • Si vous devez utiliser un port unique pour tous les agents, vous devez configurer des Network Load Balancers distincts pour chaque agent. Par exemple, pour utiliser un seul port 443 pour deux agents, le modèle de communication entre le client et l'agent est similaire au suivant :
    Client – Network Load Balancer 1 pour le port 443 – groupe cible pour l'agent 1 – client pour l'agent 1 – Network Load Balancer 2 pour le port 443 – groupe cible pour l'agent 2 – agent 2
  • Si vous devez utiliser un Network Load Balancer pour tous les agents, vous devez utiliser un port distinct pour chaque agent. Par exemple, pour utiliser un seul Network Load Balancer pour deux agents, le modèle de communication entre le client et l'agent est similaire au suivant :
    Client – port d'écoute 9001 du Network Load Balancer – groupe cible pour l'agent 1 – client pour l'agent 1 – port d'écoute 9002 du Network Load Balancer – groupe cible pour l'agent 2 – agent 2

Cet article traite de la première approche.

Résolution

Mettre à jour le port de l'agent

Mettez à jour le port de l'agent 1 de 9094 à 443 en exécutant une commande similaire à la suivante à partir de l'ordinateur client :

[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

Mettez à jour le port de l'agent 2 sur 443 en exécutant une commande similaire à la suivante à partir de l'ordinateur client :

[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

Remarque :

  • Vous devez exécuter la commande précédente pour chaque agent séparément à partir du même ordinateur client. Cette mise à jour de configuration ne nécessite pas le redémarrage de l'agent.
  • Lorsque vous modifiez les valeurs de REPLICATION et REPLICATION_SECURE, veillez à ajouter -internal au nom de l'agent.
  • Veillez à ne pas remplacer les ports 9093 et 9095 dans les commandes.
  • Assurez-vous d'utiliser les valeurs correctes pour le champ client lorsque vous mettez à jour la configuration du port de l'agent. Exemples : pour TLS – CLIENT_SECURE, utilisez [CLIENT_SECURE://b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:443]. Pour SASL – CLIENT_SASL_SCRAM, utilisez [CLIENT_SASL_SCRAM://b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:443]. Pour IAM – CLIENT_IAM, utilisez [CLIENT_IAM://b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:443].

Vous pouvez vérifier la valeur du champ client en procédant comme suit :

1.    Accédez au shell Apache ZooKeeper en exécutant la commande suivante :

./zookeeper-shell.sh <ZooKeeper_connection_string>

2.    Répertoriez la configuration de l'agent 1 en exécutant la commande suivante :

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"}

Créer deux groupes cibles

Créez deux groupes cibles (exemple : TG1 et TG2) dans le même VPC que votre cluster Amazon MSK avec les options suivantes :

  • IP pour le type de cible
  • TCP pour le protocole
  • 9094 pour le port

Enregistrez ensuite l'agent Amazon MSK auprès du groupe cible correspondant en utilisant l'adresse IP de l'agent.

Exécutez une commande similaire à la suivante pour obtenir l'adresse IP de l'agent :

[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

Créer deux Network Load Balancers

Créez deux Network Load Balancers (exemple : NLB1 et NLB2) avec les paramètres suivants :

  • Pour Écouteurs, modifiez le port pour qu'il pointe vers le port 443 publié de l'agent.
  • Pour Action par défaut, sélectionnez le groupe cible correspondant pour transférer le trafic.
  • Pour Mappages, veillez à sélectionner les sous-réseaux dans lesquels les agents Amazon MSK existent.

Veillez à activer la répartition de charge entre zones pour les Network Load Balancers que vous avez créés.

Créer une zone hébergée privée Route 53

Créez une zone hébergée privée Route 53 avec les options suivantes :

  • Pour Nom de domaine, saisissez le nom de domaine de votre chaîne d'agents (exemple : kafka.us-east-1.amazonaws.com).
  • Pour ID de VPC, saisissez l'ID de VPC des clients.

Créer deux enregistrements d'alias de type A

À l'aide de la console Amazon Route 53, créez deux enregistrements d'alias de type A avec des noms d'enregistrement identiques aux noms DNS respectifs des agents. Cela est nécessaire pour empêcher tout échec de liaison TLS.

Assurez-vous que les règles de trafic entrant pour le groupe de sécurité du cluster autorisent le trafic de l'adresse IP des Network Load Balancers vers le port 9094.

Après avoir effectué toutes les étapes précédentes, vous pouvez vous connecter au port 443 publié de l'agent.

Remarque : cette solution fonctionne pour tous les types de méthodes de contrôle d'accès qui sont activés pour les clusters Amazon MSK.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?