Я настраиваю кластер Fargate на AWS. В моем кластере есть следующие Сервисы:
Каждая служба находится в одном 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 службы.
Я читал, что для того, чтобы две задачи говорили друг с другом, мне нужно настроить балансировщик нагрузки. Исходя из мира Docker Swarm, было так легко запрашивать службы по имени службы, и за сценой запрос был перенаправлен в один из контейнеров в этой службе. Но похоже, что на AWS Fargate это не работает.
Вопросы:
Спасибо за вашу помощь, я действительно заблудился в этой простой настройке.
После поиска я обнаружил, что это произошло из-за того, что я не включил «Обнаружение службы» во время создания службы, поэтому частный DNS не был создан. Вот дополнительная документация, в которой подробно описаны шаги:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-discovery.html