Je configure une file d'attente kafka gérée sur AWS MSK. Je n'arrive pas à faire fonctionner la sécurité lors de la connexion à partir d'un ordinateur local et je ne peux pas déterminer si je peux utiliser des groupes de sécurité d'une région à une autre.
J'ai parcouru les informations sur la configuration de la groupes de sécurité sur la documentation principale ici . Je n'arrive toujours pas à me connecter au courtier. J'utilise actuellement les scripts kafka de ma machine locale de la manière suivante:
[2019-01-28 12:06:13,278] WARN [Producer clientId=console-producer] Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
mais continuez à obtenir le résultat
bin/kafka-console-producer.sh --broker-list "my-broker-ip:9092" --topic "some-topic"
J'ai associé mon adresse IP locale à tous les ports du groupe de sécurité que j'ai configuré avec mon VPC et associé à la file d'attente kafka, mais cela ne semble pas avoir aidé. Je ne vois pas non plus comment associer mes boîtes à la file d'attente kafka car elles se trouvent dans des régions différentes. Est-ce possible?
J'utilise actuellement les scripts kafka de ma machine locale de la manière suivante:
bin / kafka-console-producer.sh --broker-list "my -broker-ip: 9092 "--topic" some-topic "
mais continuez à obtenir le résultat
[2019-01-28 12: 06: 13,278] WARN [Producteur clientId = console-producteur] La connexion au nœud -1 n'a pas pu être établie. Le courtier peut ne pas être disponible. (org.apache.kafka.clients.NetworkClient)
J'ai associé mon adresse IP locale à tous les ports du groupe de sécurité que j'ai configuré avec mon VPC et associé à la file d'attente kafka mais ce n'est pas le cas t semble avoir aidé. Je ne vois pas non plus comment associer mes boîtes à la file d'attente kafka car elles sont dans différentes régions. Est-ce possible?
Je m'attends à être en mesure de connecter mon code producteur local à la file d'attente kafka et d'observer la sortie plutôt que de le rejeter constamment.
4 Réponses :
AFAIK, vous avez pour accéder à votre cluster MSK à partir d'un machine cliente sur EC2 , et ne peut pas le faire depuis une machine locale.
Est-ce vraiment une limitation? Que faire si j'ai un producteur dans mon EC2, mais que mes consommateurs se trouvent n'importe où en dehors de l'environnement AWS, peut-être une VM hébergée sur site ou une autre instance cloud
Comme @Robin l'a mentionné, vous ne pouvez pas accéder à MSK directement à partir de la machine locale en utilisant le client kafka ou le flux kafka. Étant donné que l'URL du courtier, la chaîne de connexion zookeeper sont des adresses IP privées du vpc / sous-réseau du cluster msk. Pour accéder via le client kafka, vous devez lancer l'instance ec2 dans le même vpc de MsK et exécuter le client kafka (producteur / consommateur) pour accéder au cluster msk.
Mais vous pouvez configurer le framework kafka Rest Proxy open-source par Confluent pour accéder au cluster MSK depuis le monde extérieur via l'API rest. Ce framework est à part entière kafka cient et ne permet pas toutes les opérations du client kafka, mais vous pouvez effectuer la plupart des opérations sur le cluster à partir de la récupération des métadonnées du cluster, des informations sur le sujet, de la production et de la consommation du message, etc.
J'ai répondu en détail à ce scénario ainsi qu'à quelques autres questions liées à MSK, référez-vous-
Fonctionnalités et performances Amazon Managed Streaming pour Kafka- MSK < / a>
Comme @ Kuntal-G l'a mentionné, les URL de courtier, etc. sont des adresses IP privées et ne sont pas accessibles depuis l'extérieur du VPC. Cependant, vous pouvez attribuer des adresses IP élastiques ("publiques") aux courtiers et ajuster les groupes de sécurité pour autoriser le trafic vers / depuis les ports Zookeeper et Kafka comme expliqué plus en détail ici:
https: //www.repetitive.it/aws-msk-how-to-expose-the-cluster-on-the-public-network/
Des solutions alternatives sont également mentionnées dans la documentation officielle d'AWS (par exemple, en utilisant AWS Transit Gateway ou des proxies REST):
https://docs.aws.amazon.com /msk/latest/developerguide/client-access.html
Une solution que je pense que nous avons consiste à utiliser une passerelle de transit. De cette façon, le VPC sur lequel réside AWS MSK et le réseau sur site où se trouve votre ordinateur portable peuvent être interconnectés et accessibles de manière transparente.
Vous pouvez également profiter de l'appairage de VPC.
Veuillez vous référer à la documentation ci-dessous pour plus de détails.
https://docs.aws.amazon.com /msk/latest/developerguide/client-access.html
Détails sur la passerelle de transit
https://docs.aws .amazon.com / vpc / latest / tgw / what-is-transit-gateway.html