
У меня есть услуга, которая зарегистрирована в двух целевых группах: alb
и wwwalb
.
Целевая alb
группа предназначена для внутренних запросов, а wwwalb
целевая группа — для внешних запросов.
Когда я развертываю свою службу, она запускается как надо и начинает принимать запросы. Глядя на журнал доступа, я вижу, что и alb
и wwwalb
зондируют службу. Поскольку служба работает в 3 зонах, я вижу 3 запроса для каждой зоны, всего 6.
- - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -
Несмотря на это, сервис в конечном итоге закрывается, потому что целевая группа считает, что сервис нездоров. На самом деле, похоже, он никогда не считает сервис здоровым.
Вызов API для проверки целевой группы сообщает мне следующее:
{
"TargetHealthDescriptions": [
{
"Target": {
"Id": "10.1.143.94",
"Port": 8182,
"AvailabilityZone": "eu-north-1b"
},
"HealthCheckPort": "8182",
"TargetHealth": {
"State": "unhealthy",
"Reason": "Target.FailedHealthChecks",
"Description": "Health checks failed"
}
}
]
}
Я уже некоторое время смотрю на метрики целевой группы, конфигурации балансировщика нагрузки, но просто не могу найти ничего о настройке, что могло бы объяснить это поведение. Настройки проверки работоспособности тоже кажутся мне подходящими:
Я только недавно добавил wwwalb
, поэтому я думаю, что каким-то образом наличие этого сервиса в двух целевых группах вызывает это. С другой стороны, наличие сервиса в двух целевых группах поддерживается и объясняется AWS.
Есть ли способ получить больше информации от AWS о том, что на самом деле является причиной этой проблемы? Есть ли способ выяснить, почему AWS считает, что сервис дает сбой?
решение1
Обычно я устанавливаю свой нездоровый порог на что-то большее, чем здоровый порог. Например, 2 успешных звонка с 10-секундным интервалом — это здоровый, 6 неудачных звонков с 10-секундным интервалом — это нездоровый.
Тем не менее, это не должно иметь значения, и ваши настройки должны работать. Когда цель регистрируется, возникает «начальное» состояние. В это время AWS пытается проверить проверки работоспособности и должна переключиться в работоспособное состояние только в том случае, если проверки работоспособности прошли успешно.
Процесс регистрации и начало проверки работоспособности могут занять несколько минут.
Вы уверены, что ваше приложение не отвечает успешно, а затем зависает на достаточно долгое время, чтобы снова стать неработоспособным? Или это действительно слишком долго запускается и никогда не выходит из «исходного» состояния?