Проблема проверки работоспособности ECS с портом управления загрузкой Spring - PullRequest
0 голосов
/ 10 июля 2020

Настройка-1: (Не работает)

У меня выполняется задача в кластере ECS. Но он падает из-за проверки работоспособности сразу после ее запуска.

Моя служба основана на весенней загрузке, которая имеет как трафик c (для вызовов службы), так и порты управления (для проверки работоспособности). У меня есть разрешение «permitAll() для "*/health" пути.

PFA : я настроил то же самое, выбрав опцию переопределения порта на вкладке проверки работоспособности TG.

введите описание изображения здесь Настройка-2: (Работает нормально) У меня такая же настройка в моем docker -compose файле, и я могу получить доступ к конечной точке проверки работоспособности в моем локальном контейнере. Вот как я определил в своем сочинении:

service:
  image: repo/a:name
  container_name: container-1
  ports:
    - "9904:9904" # traffic port
    - "8084:8084". # management Port

Итак, я попытался настроить порт управления на Task Def в разделе контейнера. Я попытался обновить соответствующую службу для этой последней версии TD, но когда я сохраняю эту службу, я получаю сообщение об ошибке. Это правильный способ справиться с этим?

Ошибка в консоли ECS:

Failed updating Service : The task definition is configured to use a dynamic host port, 
but the target group with targetGroupArn arn:aws:elasticloadbalancing:us-east-2:{accountId}:targetgroup/ecs-container-tg/{someId} has a health check port specified.
Service

Два возможных разрешения:

  1. Есть ли способ указать это сопоставление портов в файле docker?
  2. Другой способ настроить сопоставления портов управления в конфигурации контейнера определения задачи в ECS? (Предпочтительно)
  3. Избавиться от конечной точки исполнительного механизма Spring Boot и реализовать нашу собственную конечную точку для работоспособности? (ПЛОХО: мне нужно реализовать много вещей, чтобы показать все детали, возвращаемые при загрузке Spring)

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

Итак, после 2 дней выполнения разных действий:

  1. В определении задачи сетевой режим должен иметь тип «Мост»
  2. В определении задачи оставить ЦП и память единицы пустые. Предоставления их на уровне контейнера должно быть достаточно.
0 голосов
/ 10 июля 2020

Определение задачи настроено на использование динамического c порта хоста , но для цели указан порт проверки работоспособности.

На основании ошибки кажется как вы настроили сопоставление портов Dynami c в определении задачи, вы можете проверить это в определении задачи.

enter image description here

Understanding-Dynami c -port-mapping-in-amazon-ecs

Таким образом, в динамическом порте c расписание ECS будет назначать и публиковать sh случайный порт на хосте, который будет отличаться от 8082, поэтому измените настройку проверки работоспособности на трафик c порт .

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

это решит проблему со здоровьем, теперь переходите к вашему запросу

Есть ли способ указать это сопоставление портов в файле docker?

Нет, сопоставление портов происходит во время выполнения, а не во время сборки, вы можете указать это в определении задачи.

Другой способ настроить сопоставление портов управления в конфигурации контейнера задачи определение в ECS? (Предпочтительно)

Вы можете назначить stati c сопоставление портов , что означает, что оба порта publi sh и expose будут одинаковыми 8082:8082 в этой проверке работоспособности будет работать используя stati c сопоставление портов.

Избавиться от конечной точки исполнительного механизма Spring Boot и реализовать нашу собственную конечную точку для работоспособности? (ПЛОХО: мне нужно реализовать много вещей, чтобы показать все детали, которые возвращаются при весенней загрузке)

Healthcheck - это просто HTTP Получите вызов, который ALB ожидает 200 HTTP status code в ответ, чтобы вы могли создать простую конечную точку, которая вернет 200 HTTP status code.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...