SLB负载均衡健康检查配置
SLB(Server Load Balancer)通过健康检查机制判断后端ECS是否可用,自动将流量从异常ECS切换到正常ECS。健康检查配置不当可能导致"假性故障"——ECS其实是正常的,但SLB认为它不健康,导致所有流量被切走。本文详解健康检查的配置要点和常见问题。
健康检查原理
四层(TCP)健康检查:SLD向后端ECS发起TCP三次握手,如果握手成功则认为ECS健康。简单可靠,但只能检测端口是否存活,不能检测应用是否正常。
七层(HTTP/HTTPS)健康检查:SLB向后端ECS发送HTTP GET请求(默认请求路径为 /),如果返回2xx或3xx状态码则认为健康。可以检测应用层面的健康状态。
关键参数
健康检查路径:七层检查必填。建议创建一个专门的 /health 接口,返回简单的200状态码。不要用首页作为健康检查路径,首页响应慢可能导致检查超时。
检查间隔:默认2秒。对于核心服务可以设为1秒,非核心服务可以设为5秒。间隔越短发现故障越快,但对后端ECS的压力也越大。
超时时间:默认5秒。如果应用响应时间通常在1秒以内,可以调低到3秒。超时太短容易误判。
不健康阈值:连续几次检查失败后标记为不健康。默认3次。建议设为2-3次,设为1次太敏感(网络抖动就会误判)。
健康阈值:连续几次检查成功后恢复为健康。默认3次。恢复不需要太快,3-5次比较合适。
常见问题
健康检查一直失败:检查后端ECS的安全组是否放行了SLB健康检查的IP段(100.64.0.0/10)。检查应用是否监听了正确的端口。检查健康检查路径是否正确返回2xx。
频繁切换:ECS在健康和不健康之间反复切换。通常是超时时间或不健康阈值设置太低,适当调大。也可能是应用本身不稳定(如OOM重启),需要排查根因。
