Допустим, у меня работает служба ECS. Он настроен на выполнение минимум 2 задач, желаемое количество - 2, а максимальное количество задач - 10. Минимальный процент работоспособности установлен на 100, максимальный процент установлен на 150.
Сервис ECS управляется с помощью шаблона CloudFormation.
Если я обновлю свой шаблон CloudFormation службы ECS, изменив тег изображения докера, который я хочу использовать, и применить эти изменения к стеку - начнется новое развертывание.
Предположим, что перед развертыванием приложение находилось под высокой нагрузкой, и количество задач было увеличено до 10 выполняемых задач за счет автоматического масштабирования.
От развертывания сервиса ECS в таких условиях я ожидаю следующего:
Я получаю:
Проблема в том, что ECS не учитывает количество старых задач, запущенных перед развертыванием. Он пытается выполнить развертывание с желаемым числом 2, которое изначально задано в шаблоне CloudFormation. Это приводит к неожиданному завершению 8 задач до того, как сработает автоматическое масштабирование.
Есть ли способ достичь чего-то вроде «ожидаемого» сценария во время развертывания новой версии, если служба обновляется через CloudFormation? Я знаю, что я мог бы вручную изменить желаемое количество в шаблоне перед развертыванием на количество задач, которые в настоящее время выполняются. Может есть способ получше?
Если ваше желаемое количество в определенный момент равно 10, и вы устанавливаете минимальный процент здоровья = 150, а максимальный процент - 200. Затем будет запущено еще 5 задач и начнется удаление 5 старых задач.
Кроме того, вам не нужно изменять желаемое количество и заботиться о задаче, которая находится в состоянии истощения. Он будет опустошен, когда соединение будет закрыто.
Оказывается, можно не указывать желаемый счет. Затем в новом развертывании используется старое желаемое количество.