应用场景
负载均衡的健康检查是一种机制,用于定期检测后端主机的状态,来确保ALB实例只将流量分配给那些处于正常工作状态的主机。通过健康检查,ALB实例可以实时了解后端服务的可用性,快速检测并隔离故障节点,确保系统的稳定性和性能。在有些时候,我们会遇到不明原因的健康检查异常情况,本文中将介绍几种可能的健康检查异常原因以及对应的排查方式。
处理步骤
检查后端主机安全组配置
通常情况下,后端主机会需要放通来自ALB实例的健康检查流量,否则健康检查无法正常进行探测。ALB实例使用后端子网中的Local IP作为源地址发起健康检查探测。您需要在后端主机所在安全组中入向规则放通源网段为后端子网的网段。入向协议为健康检查所选择的协议,入向端口为配置的健康检查端口,如果健康检查端口未配置时,默认情况下健康检查端口为后端主机提供服务的端口。
检查Host配置(针对HTTP和HTTPS监听器)
在一些后端主机配置中,为了规避异常请求,会屏蔽HTTP Header中Host为空的情况。在配置HTTP和HTTPS的后端开放协议时,将“Host头域”这一参数配置为预期的域名,将可以解决因这一情况导致的健康检查异常。
检查后端主机端口服务配置
当健康检查端口为单独指定的情况下,可能出现健康检查端口与后端主机实际所提供的服务的端口不一致。在这种情况下,需要在后端主机上对应健康检查的端口起对应的服务,目的是为了能够正确响应ALB实例的健康检查请求。
该服务需要开放在0.0.0.0,可以使用netstat -antup(Linux)或 netstat -ano(Windows)命令进行确认。
该服务需要正确响应对应的健康检查请求协议或方法。
如已配置了预期响应的条件,服务返回的响应需要能够匹配该响应条件,才可以被视为成功。
其他可能情况
如非以上问题导致的健康检查提示异常时,需要按以下步骤排查
检查后端主机已开启了相应的服务端口。
检查后端主机内部是否有防火墙之类的防护软件,拦截健康检查报文。
检查后端主机上没有做 iptables 规则限制。
检查客户端直接访问后端服务器应用服务是否可以成功。
检查负载均衡健康检查参数设置是否正确。
负载均七层(HTTP和HTTPS)监听器衡建议使用静态页面来健康检查。
检查后端主机是否有高负载导致服务对外响应慢。