博客园  :: 首页  :: 管理

Application Load Balancer 会定期向其注册目标发送请求以测试其状态。这些测试称为运行状况检查。

每个负载均衡器节点仅将请求路由至负载均衡器的已启用可用区中的正常目标。每个负载均衡器节点均使用每个目标注册到的目标组的运行状况检查设置来检查该目标的运行状况。

在注册目标后,目标必须通过一次运行状况检查才会被视为正常。在完成每次运行状况检查后,负载均衡器节点将关闭为运行状况检查而建立的连接。

如果目标组仅包含运行状况不佳的注册目标,则负载均衡器将请求路由到所有这些目标,而不考虑这些目标的运行状况。

这意味着,如果在所有已启用的可用区中,所有目标都未通过运行状况检查,则负载均衡器将在失败时开放。

失败时开放的效果是根据负载均衡算法,允许传输到所有已启用的可用区中的所有目标的流量,而不考虑这些目标的运行状况。

运行状况检查不支持 WebSockets。

 

笔者这里根据自己的一个实例案例说明一下这种现象吧,

1、ALB下面的有一个侦听器,侦听器下有一个规则,设定了满足条件,转发给一个指定的 Target Group 

2、笔者这里,Target Group中其实也就一台实例主机,情况也有一点特殊

3、设置的健康检测为 HTTP 协议, 去检测 /kxxx/v1/back/userLogin , 端口为流量端口, 只有结果为 200 才被视为正常

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

但是笔者发现,有一段时间了,返回的 code 为 502 , 运行状态 ,运行状态检测也显示为 unhealthy

但觉得最为奇怪的是,外部的访问 、依然能传到 Target Group中的实例了,那就说明ALB还是将流量转发到不健康状态的实例中去了

 

按之前的理解,只知道如果一个Target Group中有多个实例主机,那么正常只会转发给健康的主机、确实也是这样的

但有特殊情况,如只有一台、或者多台都不正常了,通过官网文档、了解到,依然也会根据 目标群的负载均衡算法进行转发

https://docs.amazonaws.cn/elasticloadbalancing/latest/application/target-group-health-checks.html

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17717462.html