Назад | Перейти на главную страницу

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

Я настраиваю кластер 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