Как политика автоматического масштабирования ECS Fargate знает, что не нужно выполнять рабочую задачу? - PullRequest
2 голосов
/ 23 апреля 2020

У меня есть кластер ECS Fargate со службой, которая генерирует задачи на основе количества сообщений в очереди. Каждая задача выполняет длинный опрос очереди и обрабатывает одно сообщение за раз. Если в очередь поступает более 5 сообщений, запускается новая задача, и она начинает принимать сообщения. Когда очередь падает ниже 5 сообщений от предыдущего порога, она закрывает задачу.

Мой вопрос: когда служба решает уменьшить масштаб, как она узнает, какую задачу убить? Все задачи могут обрабатывать сообщения. Каждая задача выполняется непрерывно и выполняет длительное извлечение из SQS, поэтому как она узнает, что задача находится в действительном состоянии завершения (только что завершенное сообщение) и недопустимом состоянии завершения (в настоящее время обрабатывает сообщение).

1 Ответ

1 голос
/ 23 апреля 2020

Существует открытая проблема для улучшения завершения задач, так как у людей есть те же проблемы, что и у вас:

Из этой проблемы вы можете минимизировать влияние завершения задач на ваши процессы, используя stopTimeout . Параметр:

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

Но есть и новая функция для ES C:

При этом вы можете установить:

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

Так что обычно есть нет полного контроля над завершением задач, как у вас при завершении экземпляров в AutoScaling Group. Но все работает над этим.

...