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

Можно ли избежать простоев развертываний на AWS ECS с помощью скользящего обновления, когда задачи используют все ресурсы контейнера?

В настоящее время у меня есть кластер ECS, в котором запущена служба, которая выполняет одну задачу для каждого экземпляра контейнера, каждая задача занимает почти все ресурсы экземпляра контейнера. Мне интересно, есть ли какой-то способ, возможно, путем настройки количества задач, минимального процента работоспособности, максимального процента для службы, а также поставщика емкости, чтобы иметь его там, где после развертывания новой версии задачи должна быть развернута новая Экземпляр контейнера раскручивается, и как только он готов, старый экземпляр контейнера удаляется.

Таким образом, во время развертывания используется 2 экземпляра контейнера: старый и один, который создается для нового определения задачи, и в конце удаляется старый экземпляр контейнера, оставив только один экземпляр контейнера запущенным после завершения развертывания.

Если вы используете автоматическое масштабирование кластера ECS, кластер будет автоматически добавлять новые экземпляры по мере необходимости для размещения задач во время развертывания. Или вы можете использовать Fargate и вообще не беспокоиться о масштабировании инстанса EC2.

Это обычно называется сине-зеленым развертыванием и описывается Вот. Не забудьте дать старому контейнеру некоторое время для разгрузки соединений, чтобы весь трафик шел в новый контейнер.

Короче говоря, ECS может сделать это за вас.

Amazon Elastic Container Service (ECS) выполняет последовательные обновления при обновлении существующей службы Amazon ECS. Последовательное обновление включает замену текущей работающей версии контейнера последней версией. Количество контейнеров, которые Amazon ECS добавляет или удаляет из службы во время непрерывного обновления, контролируется путем настройки минимального и максимального количества работоспособных задач, разрешенных во время развертывания службы.

Когда вы обновляете определение задачи своего сервиса, используя последнюю версию образа контейнера, Amazon ECS автоматически начинает заменять старую версию вашего контейнера последней версией. Во время развертывания Amazon ECS истощает соединения из текущей запущенной версии и регистрирует ваши новые контейнеры в Application Load Balancer по мере их подключения к сети.