#nginx #amazon-ecs
Вопрос:
У меня есть 3 контейнера на ECS: web, api и nginx. В основном nginx проксирует трафик web
и api
контейнеры:
upstream web {
server web-container:3000;
}
upstream api {
server api-container:3001;
}
Но каждый раз, когда я повторно развертываю web
или api
они меняют свои IP-адреса, мне нужно повторно nginx
развертывать их впоследствии, чтобы «подобрать» новые IP-адреса.
Есть ли способ избежать этого, чтобы я мог просто обновить, скажем api
, службу, и nginx
служба автоматически выполнит прокси-сервер для исправления IP-адреса?
Ответ №1:
Я предполагаю, что эти контейнеры принадлежат 3 различным определениям задач и, в конечном счете, 3 различным задачам (или, лучше, 3 различным службам).
Если это настройка, то вы хотите использовать для этого обнаружение служб. Это работает только со службами ECS, и идея заключается в том, что вы создаете 3 отдельных службы, каждая из которых содержит более 1 задачи. Вы даете службе имя (например nginx
, web
, api
), и каждый контейнер в них сможет разрешить другие контейнеры, указав полное доменное имя (например api.local
). Когда ваш контейнер в службе nginx попытается подключиться к api.local
службе, обнаружение разрешит это имя на IP-адрес одной из задач в службе ECS api
.
Если вы хотите увидеть пример того, как это настраивается, вы можете посмотреть на это демонстрационное приложение и, в частности, на этот шаблон CloudFormation