Настройка сети ECS Nginx

#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