Развертывание Fargate перезапускается несколько раз, прежде чем оно будет запущено

У меня есть служба ECS, развернутая в Fargate.

Он прикреплен к Network Load Balancer. Прокатываемое обновление работает нормально, но внезапно я вижу следующую проблему.

Когда я обновляю службу с новым определением задачи, Fargate запускает развертывание и пытается запустить новый контейнер. Поскольку у меня есть служба, подключенная к NLB, новая задача регистрируется в целевой группе NLB.

Но проверка состояния NLB Target Group не удалась. Таким образом, Fargate убивает проваленную задачу и запускает новую задачу. Это повторяется несколько раз (на самом деле это число варьируется, сегодня на завершение скользящего обновления ушло 7 часов).

После развертывания изменений в инфра-части нет. Группа безопасности разрешает трафик в VPC. NLB и служба ECS развернуты в одном VPC, в одной подсети.

Проверка работоспособности Fargate не выполняется для задачи с одним и тем же образом докера N раз, но после этого она начинает работать.

Порог работоспособности / неработоспособности целевой группы равен 3, протокол - TCP, порт - порт трафика, а интервал - 30. В журнале запуска микросервиса я вижу это:

Started myapp in 44.174 seconds (JVM running for 45.734)

Когда задача подошла, я попытался открыть правило группы безопасности для VPN и попытался напрямую получить доступ к IP-адресу задачи. Я могу напрямую связаться с микросервисом с помощью IP задачи.

Но почему NLB Health Check дает сбой?

введите описание изображения здесь


person karthikeayan    schedule 01.07.2020    source источник
comment
У вас есть дополнительная информация об ошибках проверки работоспособности?   -  person Chris Williams    schedule 01.07.2020
comment
не могли бы вы указать мне, где мне это проверить?   -  person karthikeayan    schedule 01.07.2020
comment
Это может помочь: aws.amazon.com/premiumsupport/knowledge -центр /.   -  person Chris Williams    schedule 01.07.2020
comment
Я не использую ALB, я использую NLB!   -  person karthikeayan    schedule 01.07.2020
comment
Каковы ваши настройки для проверок работоспособности и целевой группы?   -  person Marcin    schedule 01.07.2020
comment
в приложении ничего нет, у меня есть проверка работоспособности TCP, мне нужно что-то настраивать в коде приложения?   -  person karthikeayan    schedule 01.07.2020
comment
Находятся ли ваши задачи в тех же зонах доступности, что и узлы NLB? Если они находятся в разных зонах, это может объяснить, почему это занимает разное время: fargate продолжает попытки запускать задачи в зонах доступности, в которые NLB не может направлять трафик. Затем по какой-то причине он запустит задачу в зоне доступности, в которую NLB может направлять трафик, поэтому он работает.   -  person Marcin    schedule 01.07.2020
comment
хорошая точка, но NLB и служба ECS настроены с одинаковыми подсетями: az a, az b и az c ... NLB имеет 3 ENI, по одному для каждой зоны доступности / подсети   -  person karthikeayan    schedule 01.07.2020
comment
Я увеличил порог с 3 до 5, который теперь составляет 5 * 30 = 150 секунд. У меня несколько микросервисов, но сейчас я вижу проблему только в нескольких микросервисах, большинство развертываний микросервисов сейчас в порядке.   -  person karthikeayan    schedule 02.07.2020
comment
проблема все еще существует ..   -  person karthikeayan    schedule 10.07.2020


Ответы (1)


У меня была такая же проблема. смоделировал его с помощью разных изображений (go, python), поскольку я подозревал, что накладные расходы на использование CPU / Mem оказались ложными.

Снижение риска может заключаться в изменении параметра развертывания Fargate Минимальный процент работоспособности на 50% (в то время как раньше он был 100% и, казалось, вызывал проблему). После изменения отказы станут редкостью, но все равно будут. Реальное решение пока неизвестно, похоже, что-то связано с конфигурацией NLB в Fargate

person Yossi Cohn    schedule 11.11.2020
comment
У меня был разговор с поддержкой AWS, они предложили использовать параметр healthcheck_grace_period_seconds для службы - person karthikeayan; 11.11.2020