Балансировщик сетевой нагрузки никогда не становится работоспособным

Я пытаюсь разместить службу на Fargate, которая предоставляет TCP-порт. Даже этот простой пример, демонстрирующий HTTP на порту 80, никогда не станет работоспособным на Fargate.

var loadBalancedFargateService = NetworkLoadBalancedFargateService.Builder.create(this, "ServiceSample")
        .cluster(fargateCluster)
        .publicLoadBalancer(true)
        .memoryLimitMiB(1024)
        .cpu(512)
        .listenerPort(80)
        .taskImageOptions(NetworkLoadBalancedTaskImageOptions.builder()
                .image(ContainerImage.fromRegistry("amazon/amazon-ecs-sample"))
                .containerPort(80)
                .build())
        .build();

Ошибка, которую я получаю:

service dev-shopapi-redis-ServiceSampleService16E525F0-ASe7w3oUlGf9 port 80 is unhealthy in target-group dev-sh-Servi-EFOUJ7LG0YPP  due to (reason Health checks failed).

Я намерен предоставить другую службу с протоколом TCP, и это упрощенная версия, которая предоставляет HTTP.

Что я делаю неправильно?

Вы пробовали это: aws.amazon.com/premiumsupport/knowledge-center/…

Yash 01.02.2023 09:25

Вы, вероятно, правы: «Если ваш контейнер сопоставлен с портом 80, убедитесь, что ваша группа безопасности контейнера разрешает входящий трафик через порт 80 для балансировщика нагрузки».

rjdkolb 01.02.2023 09:37
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте выполнить следующие действия по устранению неполадок:

  • Если ваш контейнер сопоставлен с портом 80, убедитесь, что ваша группа безопасности контейнера разрешает входящий трафик через порт 80 для балансировщик нагрузки.
  • Убедитесь, что значение порта ping для работоспособности балансировщика нагрузки настроено правильно. Если этот порт настроен неправильно, то ваш балансировщик нагрузки может отменить регистрацию контейнера у самого себя.
  • Определите минимальный льготный период проверки работоспособности. Это указывает планировщику службы игнорировать эластичную балансировку нагрузки. проверки работоспособности в течение заранее определенного периода времени после того, как задача была создан.
  • Отслеживайте показатели ЦП и памяти службы. Например, высокая загрузка ЦП может привести к тому, что ваше приложение не будет отвечать на запросы, что приведет к ошибке 502. ошибка.
  • Проверьте журналы приложений на наличие ошибок приложений.
  • Проверьте, правильно ли настроены порт ping и путь проверки работоспособности.

В отличие от ApplicationLoadBalancedFargateService, NetworkLoadBalancedFargateService не настраивает порт контейнера автоматически.

Поэтому просто добавьте в CDK следующее:

loadBalancedEcsService.getService().getConnections().allowFromAnyIpv4( Port.tcp(80) );//80 since the container is listening on port 80

Источник: https://aws.amazon.com/premiumsupport/knowledge-center/ecs-fargate-health-check-failures/

Другие вопросы по теме