我有一个 ELB 和 ASG,其中 ASG 必须预热大约 75 分钟,然后才能提供完整且正确的结果。我指定了 4500 秒的健康检查宽限期。在 ELB 模板中,我指定了一个要 ping 的健康检查目标,只有当预热完成后,它才会返回 200(OK)。
"HealthCheck" : {
"HealthyThreshold" : "3",
"Interval" : "60",
"Target" : { "Ref" : "HealthCheckAPI" },
"Timeout" : "15",
"UnhealthyThreshold" : "5"
}
Healthcheck API 的 URL 在属性中定义:
"HealthCheckAPI" : {
"Type" : "String",
"Description" : "The API to check for service availability and being warmed up",
"Default": "HTTP:8080/api/health"
}
但是,我现在得到的结果是,即使 Healthcheck API 返回 503(服务不可用),ELB 仍然可以为正在预热的 ASG 实例提供请求。这是预料之中的吗?如何让 ELB 在 Healthcheck API 返回非 200(OK)期间不可用?
答案1
我的 HealthCheck API 返回了 200(OK)状态,而它在预热期间应该返回 503。问题已解决。