AWS排查ALB健康检查失败的原因
负载平衡器使用指定的端口、协议和ping路径向每个注册目标发送健康检查请求
Path
查看虚拟机中的请求文件路径
$ curl http://localhost:80
<h1>Hello from Nginx!</h1>
nginx
中请求路径是根路径,那么在目标组的路径中也需要写/
Timeout
当您看到此原因代码时,则表示应用程序负载均衡器将其运行状况检查HTTP GET请求发送到目标,并且在运行状况检查超时之前未收到响应
当负载均衡器没有在健康检查设置的超时时间内收到响应,那么就会被认为成是unhealthy
导致Failure的两个原因
-
负载均衡器和目标组之间存在连通性问题
-
ALB
没有在设置的Timeout
时间内收到目标组实例的响应
确保目标器和负载均衡器在健康检查端口和健康检查协议上允许流量相互进出
后端实例port:80
使用的协议http
Make Sure
负载均衡器的出站流量可以路由到后端EC2的入站流量(协议 && 端口)
如果您在不同的VPC中有负载均衡器和目标,则确保子网的网络acl允许从目标到临时端口上的负载均衡器节点的流量(1024 - 65535)
确认目标OS层面的防火墙允许健康检查流量的进出
ALB没有在设置的Timeout时间内收到目标组实例的响应
去查看目标组收到响应的时间,如果收到响应需要更长时间,那么需要手动更改Timeout
超时时间
健康检查403
-
检查应用已开启且正在运行
-
目标组在监听健康的端口
-
如果目标组连接多个接口,然后验证您的应用程序正在正确的网络接口上侦听
-
ALB使用
ELBSecurityPolicy-2016-08
安全策略对https进行健康检查确保alb目标组支持一个或多个匹配密码和负载均衡器在此安全策略中提供的协议来建立TLS握手
ALB状态码
Elb.InitialHealthCheck
- 初始健康检查正在进行中
Elb.RegistrationInProgress
- 目标注册正在进行中
Target.DeregistrationInProgress
- 目标注销正在进行中
Target.InvalidState
- 目标处于停止状态或终止状态
Target.IpUnusable
- 目标类型为IP,并且您选择的IP地址已经被负载平衡器使用
Target.NotInUse
- 目标组未被任何负载平衡器使用,或者目标位于未为其负载平衡器启用的可用性区域中
Target.NotRegistered
- 目标器未注册到目标组