Как два сервиса могут взаимодействовать друг с другом на AWS Fargate?

Как два сервиса могут взаимодействовать друг с другом на AWS Fargate?

Я настроил кластер Fargate на AWS. В моем кластере есть следующееуслуги:

  • сервер-А (порт 3000)
  • сервер-B (порт 4000)

Каждая служба находится в одном VPC и имеет одну и ту же группу безопасности (любые порты, любой источник, любой пункт назначения). VPC изолирован от Интернета.

Теперь я хочу, чтобы сервер-A отправил http-запрос на сервер-B. Я бы предположил, что, как и в Docker Swarm, есть частный DNS, который сопоставляет имя сервиса с его частным IP, и это было бы так же просто, как отправить запрос на:http://сервер-B:4000. Однако сервер A получает тайм-аут, что означает, что он не может связаться с сервером B.

Я прочитал в документации, что я могу поместить 2 контейнера в одну и ту же службу, каждый из которых будет прослушивать отдельный порт, так что благодаря интерфейсу обратной связи с сервера A я смогу сделать запросhttp://127.0.0.1:4000и сервер-B ответит, и наоборот.

Однако я хочу иметь возможность масштабировать сервер A и сервер B.независимо, поэтому я думаю, что имеет смысл сделать так, чтобы каждый сервер был независим друг от друга, используя 2 службы.

Я читал, что для того, чтобы 2 задачи могли общаться друг с другом, мне нужно настроить балансировщик нагрузки. Из мира Docker Swarm было очень просто запрашивать сервисы по их имени, и за кулисами запрос перенаправлялся в один из контейнеров в этом сервисе. Но, похоже, на AWS Fargate это так не работает.

Вопросы:

  • как сервер-А может общаться с сервером-Б?
  • Поскольку службы иногда перераспределяются, их частный IP-адрес меняется, поэтому нет смысла делать запрос по IP-адресу, запрос по имени хоста кажется наиболее естественным способом.
  • Нужно ли мне настраивать какой-либо внутренний DNS?

Спасибо за помощь, я действительно запутался в этой простой настройке.

решение1

После поиска я выяснил, что это было связано с тем, что я не включил "Service Discovery" во время создания сервиса, поэтому не был создан частный DNS. Вот дополнительная документация, которая точно объясняет шаги:

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

Связанный контент