#amazon-web-services #docker #amazon-ecs
#amazon-веб-сервисы #docker #amazon-ecs
Вопрос:
Я развернул простой сервер Express, который выполняет SSR для приложения Angular 7. Она выполняется без проблем, но через некоторое время запросы приводят к ответам о временной недоступности службы 503.
На вкладке «События» в моем сервисе отображается завершение выполнения и перезапуск моих задач, но больше ничего необычного. Я не вижу ничего странного в журналах ecs-агента экземпляра, кроме моей задачи отправки событий остановки / запуска контейнера.
На вкладке события моего сервиса:
af81a908-d0ae-4f8d-a19f-4f5723053c71
2019-03-26 13:15:28 -0700
service ui has started 1 tasks: task 61e77740-7b6a-4785-a5c8-9e7581a79745.
8bc7eb29-6a22-4af8-9994-57f2cfd7ad26
2019-03-26 13:14:55 -0700
service ui has begun draining connections on 1 tasks.
cb064206-0ed4-4b68-b528-957175a93196
2019-03-26 13:14:55 -0700
service ui deregistered 1 targets in target-group contrast-fm-target-group
398e8407-17fa-466e-a482-1840f7b9674c
2019-03-26 11:40:31 -0700
service ui has reached a steady state.
Из журнала ecs-agent в моем экземпляре:
2019-03-26T20:41:02Z [INFO] Managed task [arn:aws:ecs:us-west-2:584648718741:task/13cfb2bc-d40a-4c5b-be47-f73dc2ed28ea]: sending task change event [arn:aws:ecs:us-west-2:584648718741:task/13cfb2bc-d40a-4c5b-be47-f73dc2ed28ea -> STOPPED, Known Sent: RUNNING, PullStartedAt: 2019-03-26 20:40:56.5934327 0000 UTC m= 24378.048113509, PullStoppedAt: 2019-03-26 20:40:56.769284895 0000 UTC m= 24378.223965695, ExecutionStoppedAt: 2019-03-26 20:41:02.41672748 0000 UTC m= 24383.871408417]
2019-03-26T20:41:02Z [INFO] TaskHandler: batching container event: arn:aws:ecs:us-west-2:584648718741:task/13cfb2bc-d40a-4c5b-be47-f73dc2ed28ea contrast-ui -> STOPPED, Exit 1, , Ports [{3000 80 0.0.0.0 0}], Known Sent: RUNNING
2019-03-26T20:41:02Z [INFO] TaskHandler: Adding event: TaskChange: [arn:aws:ecs:us-west-2:584648718741:task/13cfb2bc-d40a-4c5b-be47-f73dc2ed28ea -> STOPPED, Known Sent: RUNNING, PullStartedAt: 2019-03-26 20:40:56.5934327 0000 UTC m= 24378.048113509, PullStoppedAt: 2019-03-26 20:40:56.769284895 0000UTC m= 24378.223965695, ExecutionStoppedAt: 2019-03-26 20:41:02.41672748 0000 UTC m= 24383.871408417, arn:aws:ecs:us-west-2:584648718741:task/13cfb2bc-d40a-4c5b-be47-f73dc2ed28ea contrast-ui -> STOPPED, Exit 1, , Ports [{3000 80 0.0.0.0 0}], Known Sent: RUNNING] sent: false
2019-03-26T20:41:02Z [INFO] TaskHandler: Sending task change: TaskChange: [arn:aws:ecs:us-west-2:584648718741:task/13cfb2bc-d40a-4c5b-be47-f73dc2ed28ea -> STOPPED, Known Sent: RUNNING, PullStartedAt: 2019-03-26 20:40:56.5934327 0000 UTC m= 24378.048113509, PullStoppedAt: 2019-03-26 20:40:56.769284895 0000 UTC m= 24378.223965695, ExecutionStoppedAt: 2019-03-26 20:41:02.41672748 0000 UTC m= 24383.871408417, arn:aws:ecs:us-west-2:584648718741:task/13cfb2bc-d40a-4c5b-be47-f73dc2ed28ea contrast-ui -> STOPPED, Exit 1, , Ports [{3000 80 0.0.0.0 0}], Known Sent: RUNNING] sent: false
2019-03-26T20:41:02Z [INFO] Managed task [arn:aws:ecs:us-west-2:584648718741:task/13cfb2bc-d40a-4c5b-be47-f73dc2ed28ea]: sent task change event [arn:aws:ecs:us-west-2:584648718741:task/13cfb2bc-d40a-4c5b-be47-f73dc2ed28ea -> STOPPED, Known Sent: RUNNING, PullStartedAt: 2019-03-26 20:40:56.5934327 0000 UTC m= 24378.048113509, PullStoppedAt: 2019-03-26 20:40:56.769284895 0000 UTC m= 24378.223965695, ExecutionStoppedAt: 2019-03-26 20:41:02.41672748 0000 UTC m= 24383.871408417]
2019-03-26T20:41:02Z [WARN] DockerGoClient: Unable to decode stats for container d999c0b9afba34f3e7e77e5d34a29c64edb931b1fbc99f53ccfe403c4490db9f: context canceled
2019-03-26T20:41:02Z [INFO] Container d999c0b9afba34f3e7e77e5d34a29c64edb931b1fbc99f53ccfe403c4490db9f is terminal, stopping stats collection
2019-03-26T20:41:04Z [INFO] Saving state! module="statemanager"
Комментарии:
1. Привет, ты проверял журналы задач или статус задачи? иногда на экране задачи (консоль) можно получить дополнительную информацию о том, почему контейнер находится в ОСТАНОВЛЕННОМ состоянии. Похоже, что ALB не может получить доступ к контейнерам, и именно поэтому он перезапускает их. Эти контейнеры когда-нибудь переходят в состояние обслуживания в целевой группе ALB?
Ответ №1:
Похоже, что по какой-то причине ваш балансировщик нагрузки приложения не отвечает на вызовы проверки работоспособности ECS.
Проверьте, правильно ли ваша конфигурация целевой группы указывает на маршрут, который возвращает HTTP 200
. Кроме того, проверьте, не блокирует ли ваша группа безопасности из вашей службы трафик на порт, на котором запущено ваше приложение.
Подробнее об этом здесь.
Комментарии:
1. Спасибо за ответ! Я проверил конфигурацию моей целевой группы, и она указывает на домашнюю страницу, которая возвращает
200
. Группа безопасности для моего сервиса также не блокирует трафик с порта, на котором запущено мое приложение.