У меня есть служба, работающая на AWS EC2 Container Service (ECS). Моя установка является относительно простой. Он работает с одним определением задач и следующие детали:Обновление службы AWS ECS
- Желаемая мощность установлена на уровне 2
- Минимальный здоровый набор на 50%
- Максимальный набор на 200%
- Задачи работать с 80% CPU и резервирование памяти
Первоначально я могу получить необходимые экземпляры EC2, зарегистрированные в кластере, который обслуживает службу без проблем. Затем связанная задача запускается в двух экземплярах. Как и ожидалось - с учетом резервирования CPU и памяти - задачи занимают почти все ресурсы экземпляров EC2.
Иногда я хочу, чтобы задача использовала новую версию приложения, в котором она запущена. Чтобы это произошло, я создаю ревизию задачи, отменю регистрацию предыдущей версии и затем обновляю службу. Обратите внимание, что я установил минимальный здоровый процент, чтобы требовать, чтобы выполнялся экземпляр , и максимальный здоровый процент, позволяющий выполнять до 2 * 2.00 = 4
экземпляров.
Соответственно, я ожидал, что 1 из незарегистрированных экземпляров задач будет отключен и удален в автономный режим, чтобы один экземпляр новой версии задачи мог быть запущен в режиме онлайн. Затем процесс повторится, доведя развертывание до успешного состояния.
К сожалению, кластер ничего не делает. В журнале events
он сообщает мне, что он не может размещать новые задачи, даже если описанный выше процесс позволил бы это сделать.
Как я могу заставить кластер выполнять поведение, которое я ожидаю? Я только смог это сделать, когда я вручную регистрирую другой экземпляр EC2 в кластере, а затем разорву его после завершения обновления (что нежелательно).
Это более или менее то, что я делал, но тревога памяти - хорошая идея, о которой я даже не думал. Хороший ответ. – nmagerko