5 votes

Comment deux services peuvent-ils communiquer entre eux sur AWS Fargate ?

J'ai installé un cluster Fargate sur AWS. Mon cluster a les caractéristiques suivantes services :

  • serveur-A (port 3000)
  • serveur-B (port 4000)

Chaque service est dans le même VPC et a le même groupe de sécurité (tous les ports, toutes les sources, toutes les destinations). Le VPC est isolé d'Internet.

Maintenant, je veux que le serveur-A envoie une requête http au serveur-B. Je suppose que, comme dans l'essaim de Docker, il existe un DNS privé qui fait correspondre le nom du service à son IP privée, et il suffirait d'envoyer la requête à : http://server-B:4000 . Cependant, le serveur A obtient un timeout, ce qui signifie qu'il ne peut pas atteindre le serveur B.

J'ai lu dans la documentation que je peux mettre les 2 conteneurs dans le même service, chaque conteneur écoutant sur un port différent, de sorte que, grâce à l'interface de bouclage, depuis le serveur-A, je pourrais interroger http://127.0.0.1:4000 et le serveur B répondra, et vice-versa.

Cependant, je veux être en mesure de faire évoluer le serveur A et le serveur B. indépendamment Je pense donc qu'il est logique de garder chaque serveur indépendant de l'autre en ayant deux services.

J'ai lu que, pour que deux tâches se parlent, je dois installer un équilibreur de charge. Venant du monde de Docker Swarm, il était si facile d'interroger les services par leur nom, et derrière la scène, la demande était transmise à l'un des conteneurs de ce service. Mais cela ne semble pas fonctionner comme ça sur AWS Fargate.

Questions :

  • comment le serveur A peut parler au serveur B ?
  • Comme les services sont parfois redéployés, leur IP privée change, il n'est donc pas logique d'interroger par IP, l'interrogation par nom d'hôte semble être la méthode la plus naturelle.
  • Dois-je configurer un DNS interne ?

Merci pour votre aide, je suis vraiment perdue pour faire cette simple installation.

6voto

JLavoie Points 189

Après avoir fait des recherches, j'ai découvert que cela était dû au fait que je n'avais pas activé "Service Discovery" lors de la création du service, de sorte qu'aucun DNS privé n'a été créé. Voici une documentation supplémentaire qui explique exactement les étapes :

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-discovery.html

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X