У меня есть ELB и ASG, где ASG должна немного разогреться в течение примерно 75 минут, прежде чем она сможет дать полные и правильные результаты. Я указал период отсрочки проверки работоспособности в 4500 секунд. В шаблоне ELB я указал HealthCheck Target для ping, который возвращает 200 (OK) только после завершения разминки.
"HealthCheck" : {
"HealthyThreshold" : "3",
"Interval" : "60",
"Target" : { "Ref" : "HealthCheckAPI" },
"Timeout" : "15",
"UnhealthyThreshold" : "5"
}
а URL-адрес Healthcheck API определяется в свойствах:
"HealthCheckAPI" : {
"Type" : "String",
"Description" : "The API to check for service availability and being warmed up",
"Default": "HTTP:8080/api/health"
}
Однако теперь я понимаю, что, хотя API Healthcheck возвращает значение 503 (Service Unavailable), ELB все еще может обслуживать запросы к экземплярам ASG, которые находятся в процессе нагрева. Это ожидается? Как сделать ELB недоступным на время, пока Healthcheck API не возвращает 200 (ОК)?
Мой API HealthCheck возвращал статус 200 (OK), когда должен был вернуть 503 во время разминки. Проблема исправлена.