#amazon-ecs #autoscaling #aws-fargate
#amazon-ecs #автоматическое масштабирование #aws-fargate
Вопрос:
Я запускаю службу ecs с использованием Fargate на AWS. Каждая задача там завершает одну операцию и умирает (получение сообщения из очереди SQS и декодирование / кодирование видеофайла). Теперь я разработал политику автоматического масштабирования, как показано ниже,
- Если размер очереди SQS превышает 5, увеличьте желаемое количество до 1 (повторяйте каждые 60 секунд).
- Если размер очереди SQS меньше 2, уменьшите желаемое количество до 1 (повторять каждые 60 секунд).
Но что делает AWS, так это то, что когда размер очереди уменьшается ниже 2, он завершает выполнение задач, оставляя соответствующую операцию «сломанной». Я не хочу, чтобы AWS уничтожал запущенные задачи (потому что они автоматически умрут в течение некоторого времени после завершения команды), а просто установить желаемое значение 0, чтобы задачи не «возрождались». Поэтому буквально я хочу, чтобы мои задачи не могли быть остановлены во время автоматического масштабирования.
Как я могу добиться этого в службе ECS и aws_ecs_autoscaling_target. Пожалуйста, обратите внимание, что я использую terraform для предоставления службы.
Заранее спасибо.
Комментарии:
1. Вы изучали период охлаждения при автоматическом масштабировании? Установите это на 60 секунд, тогда, несмотря ни на что, не более 1 задачи будет удалено с минимальным интервалом в 60 секунд. При желаемом количестве 0 это может сработать.
2. Дэвид Дж. Эдди Проблема в том, что иногда время выполнения неопределенно. Это может занять намного больше. 🙁
Ответ №1:
Мне пришлось решать эту проблему другим подходом. Мне пришлось создать небольшую лямбда-функцию, которая запускается по сигналу cloudwatch и запускает задачу Fargate с помощью StartTask. Этот рабочий процесс хорошо подходит здесь, а не для использования политики автоматического масштабирования.
Комментарии:
1. Я сталкиваюсь с такой же проблемой, можете ли вы мне в этом помочь. Мои задачи также уничтожаются, даже если они находятся в запущенном состоянии
2. У меня похожая проблема, можете ли вы поделиться своими решениями?