Количество требуемых задач в службе ECS во время развертывания - PullRequest
0 голосов
/ 30 октября 2018

Допустим, у меня запущена служба ECS. Он настроен на выполнение не менее 2 задач, желаемое количество равно 2, а максимальное количество задач равно 10. Минимальный процент исправности установлен на 100, максимальный процент установлен на 150.

Служба ECS управляется с помощью шаблона CloudFormation.

Если я обновлю свой шаблон CloudFormation службы ECS, изменив тег образа докера, который я хочу использовать, и применим эти изменения к стеку - начнется новое развертывание.

Предположим, что перед развертыванием приложение находилось под высокой нагрузкой, и число задач было увеличено до максимум 10 запущенных задач за счет автоматического масштабирования.

Что я ожидаю от развертывания службы ECS в таких условиях, так это:

  1. 10 старых задач выполняются.
  2. 5 новых задач.
  3. 5 старых задач переведены в состояние слива.
  4. 5 старых задач остановлено.
  5. 5 новых задач.
  6. Оставшиеся 5 старых заданий переведены в состояние слива.
  7. 5 старых задач остановлено.

Что я получаю:

  1. 8 старых задач переведены в режим слива.
  2. Требуемое количество новых развертываний, установленное на 10 путем автоматического масштабирования.
  3. 5 новых задач.
  4. 8 старых задач остановлено.
  5. 5 новых задач.
  6. 2 старых задания переведены в состояние слива.
  7. 2 старые задачи остановлены.

Проблема в том, что ECS не учитывает количество старых задач, запущенных перед развертыванием. Он пытается выполнить развертывание с желаемым счетчиком 2, который изначально установлен в шаблоне CloudFormation. Это приводит к неожиданному завершению 8 задач, прежде чем начнется автоматическое масштабирование.

Есть ли способ достичь чего-то вроде «ожидаемого» сценария во время развертывания новой версии, если служба обновляется через CloudFormation? Я знаю, что мог вручную изменить желаемое количество в шаблоне перед развертыванием на количество задач, которые в данный момент выполняются. Может быть, есть лучший способ?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Похоже, что можно не предоставить желаемый счет . Затем новое развертывание использует старый желаемый счетчик.

0 голосов
/ 30 октября 2018

Если желаемый счетчик равен 10 в определенный момент, и вы установили минимальный процент здоровья = 150, а максимальный процент - 200. Затем он вызовет еще 5 задач и инициирует истощение 5 старых задач.

Кроме того, вам не нужно менять желаемое количество и выполнять задачу, которая находится в состоянии слива. Он будет очищен после закрытия соединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...