- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
-
API参考
- 使用前必读
- API概览
- API版本选择建议
- 如何调用API
- API(V3)
- API(V2)
- API(OpenStack API)
- 应用示例
- 权限和授权项
- 历史API
- 附录
- SDK参考
- 常见问题
- 视频帮助
- 产品术语
-
更多文档
- 用户指南(阿布扎比区域)
- API参考(阿布扎比区域)
-
用户指南 (巴黎区域)
- 产品介绍
- 快速入门
- 负载均衡器
- 监听器
- HTTP/HTTPS监听器高级配置
- 后端服务器组
- 后端服务器(独享型)
- 后端服务器(共享型)
- 证书管理
- 访问控制管理
- TLS安全策略
- 标签管理
- 访问日志
- 监控
- 审计
- 权限管理
- 关于配额
-
常见问题
- 高频常见问题
- 为什么通过负载均衡无法访问后端业务?
- 如何检查弹性负载均衡服务不通或异常中断?
- 如何排查ELB的异常返回码?
- 弹性负载均衡器是否可以单独使用?
- ELB是否支持TCP长连接?
- 弹性负载均衡是否支持后端FTP服务?
- 弹性负载均衡分配的EIP是否为独占?
- 单个用户默认可以创建多少个负载均衡器或监听器?
- ELB权限和使用范围是什么?
- 当负载均衡器正在运行中是否可以调整后端服务器的数量?
- 弹性负载均衡是否可以添加不同操作系统的服务器?
- ELB添加后端的端口号是否可以不一致?
- ELB支持跨用户、跨VPC使用么?
- 负载均衡器的后端服务器可以反过来访问公网/私网负载均衡器上的端口吗?
- ELB能否实现前端是HTTPS协议,后端也是HTTPS协议?
- ELB所属的VPC和子网支持修改吗?
- 是否支持在业务不中断的前提下,将共享型负载均衡升级为独享型负载均衡?
- ELB对于IPv6网络的支持情况是怎样的?
- 如何检查弹性负载均衡前后端流量不一致?
- 如何检查请求不均衡?
- 如何检查弹性负载均衡业务访问延时大?
- 如何检查压测性能上不去?
- 负载均衡器
- 监听器
-
后端服务器
- 为什么后端服务器上收到的健康检查报文间隔和设置的间隔时间不一致?
- 使用ELB后,后端服务器能否访问公网?
- 为什么100开头的IP在频繁访问后端服务器?
- ELB可以跨区域关联后端服务器么?
- 公网负载均衡的后端服务器要不要绑定EIP?
- 如何检查后端服务器网络状态?
- 如何检查后端服务器网络配置?
- 如何检查后端服务器服务状态?
- 后端服务器什么时候被认为是健康的?
- 如何检查通过EIP访问后端云服务器?
- 为什么云监控服务统计的ELB活跃连接数与后端服务器上的连接数不一致?
- 为什么配置了白名单后还能访问后端服务器?
- ELB修改后端服务器权重后多久生效?
- 为什么开启跨VPC后端需要确保负载均衡所属子网至少拥有16个可用IP地址?
- 健康检查
- 获取源IP
- HTTP/HTTPS监听器
- 会话保持
- 证书管理
- 监控
- 修订记录
- API参考 (巴黎区域)
- 用户指南(吉隆坡区域)
- API参考(吉隆坡区域)
- 用户指南(安卡拉区域)
- API参考(安卡拉区域)
- 通用参考
链接复制成功!
健康检查介绍
负载均衡器会定期向后端服务器发送请求以测试其运行状态,这些测试称为健康检查。通过健康检查来判断后端服务器是否可用。
负载均衡器如果判断后端服务器健康检查异常,就不会将流量分发到异常后端服务器,而是分发到健康检查正常的后端服务器,从而提高了业务的可靠性。当异常的后端服务器恢复正常运行后,负载均衡器会将其自动恢复到负载均衡服务中,承载业务流量。
如果您的业务对负载比较敏感,过于频繁的健康检查报文可能会对您的正常业务产生影响。您可以根据实际的业务情况,通过增大健康检查间隔,或者将七层健康检查改为四层健康检查等方式来降低对业务的影响。如果您的业务系统自身有健康检查机制,也可以关闭负载均衡器的健康检查,但是为了保障业务的持续可用,不建议这样做。
健康检查协议
您可以在创建后端服务器组和创建监听器时为后端服务器组配置健康检查,通常,使用默认的健康检查配置即可,也根据业务需要选择不同的健康检查协议。
您也可以在后端服务器组创建后修改健康检查,详情可见配置健康检查。
后端服务器组的后端协议与支持的健康检查协议存在匹配关系,详情请参见表1。
后端服务器组的后端协议 |
健康检查协议 |
---|---|
TCP |
TCP、HTTP、HTTPS |
UDP |
UDP |
QUIC |
UDP |
TLS |
TCP、HTTP、HTTPS、TLS、GRPC |
HTTP |
TCP、HTTP、HTTPS、TLS、GRPC |
HTTPS |
TCP、HTTP、HTTPS、TLS、GRPC |
GRPC |
TCP、HTTP、HTTPS、TLS、GRPC |
TLS协议与GRPC协议陆续上线中,已发布区域请以控制台实际为准。
健康检查源IP
独享型负载均衡器以ELB后端子网内的IP为健康检查源地址,向后端服务器发起健康检查探测请求。为确保健康检查结果正常,请确保后端服务器的安全组规则配置放行ELB后端子网所属网段,详情见配置后端服务器的安全组。
TCP健康检查
对于四层(TCP)和七层(HTTP/HTTPS)后端协议,您可以配置TCP健康检查,通过发起TCP三次握手来获取后端服务器的状态信息,如图1所示。
TCP健康检查的机制如下:
- ELB节点根据健康检查配置,向后端服务器(IP+健康检查端口)发送TCP SYN报文。
- 后端服务器收到请求报文后,如果相应的端口已经被正常监听,则会返回SYN+ACK报文。
- 如果在超时时间内没有收到后端服务器的SYN+ACK报文,则判定健康检查失败。随后发送RST报文给后端服务器中断TCP连接。
- 如果在超时时间内收到了SYN+ACK报文,则判定健康检查成功,并进一步发送ACK报文给后端服务器。随后发送RST报文给后端服务器中断TCP连接。
正常的TCP三次握手后,会进行数据传输,但是在健康检查时会发送RST中断建立的TCP连接。该实现方式可能会导致后端服务器中的应用认为TCP连接异常退出,并打印错误信息,如“Connection reset by peer”。解决方案如下:
- 采用HTTP健康检查。
- 后端服务器忽略健康检查的连接错误。
UDP健康检查
对于四层(UDP)后端协议,默认配置UDP健康检查,通过发送UDP探测报文获取后端服务器的状态信息,如图2所示。
UDP健康检查机制如下:
- 四层ELB节点根据健康检查配置,向后端服务器发送ICMP Echo Request报文和UDP探测报文。
- 如果在超时时间内收到ICMP Echo Reply报文,且没有收到后端服务器返回的ICMP Port Unreachable报文,则判定健康检查成功。否则,判定健康检查失败。
HTTP健康检查
对于四层(TCP)和七层(HTTP/HTTPS)后端协议,您可以配置HTTP健康检查,通过HTTP GET请求来获取状态信息。检查原理如图3所示。
HTTP健康检查机制如下:
- ELB节点根据健康检查配置,向后端服务器(IP+端口+检查路径)发出HTTP GET请求(可以选择设置域名)。
- 后端服务器收到请求后,根据服务的情况返回相应的HTTP状态码。
- 如果七层ELB节点在响应超时时间内收到了后端服务器的响应,将HTTP状态码与预置的状态码进行对比,如果匹配则认为健康检查成功,后端服务器运行正常。
- 如果七层ELB节点在响应超时时间内没有收到后端服务器的响应,则判定健康检查失败。
- 当独享型ELB实例的TCP监听器选择HTTP健康检查时,ELB会使用HTTP1.0发起探测。HTTP1.0采用短连接通信模式,即ELB发送完请求之后收到服务端拆链报文才会解析HTTP响应内容,所以请确保服务端发送完响应内容后立即主动断开TCP连接,否则会导致健康检查探测异常。
- 在HTTP健康检查请求中,User-Agent头字段主要用于标识此类请求为健康检查发出的探测请求。User-Agent的值可能随业务需求而动态调整,建议客户的后端服务请勿根据此header头做检验和判断。
- 当选定为“使用后端服务器的内网IP为域名”为健康检查域名时,由于Host请求头可能为空值,建议客户的后端服务请勿根据Host请求头做检验和判断。
HTTPS健康检查
对于四层(TCP)和七层(HTTP/HTTPS)后端协议,您也可以配置HTTPS健康检查。HTTPS健康检查首先通过TLS握手建立SSL连接,再通过发送加密的HTTP GET请求来获取后端服务器的状态信息。检查原理如图4所示。
HTTPS健康检查机制如下:
- ELB节点向后端服务器发送Client Hello请求,与后端服务器建立SSL连接。
- ELB节点收到后端服务器返回Server Hello报文后,根据健康检查配置,向后端服务器(IP+端口+检查路径)发出加密的HTTP GET请求(可以选择设置域名)。
- 后端服务器收到请求后,根据服务的情况返回相应的HTTP状态码。
- 如果七层ELB节点在响应超时时间内收到了后端服务器的响应,将HTTP状态码与预置的状态码进行对比,如果匹配则认为健康检查成功,后端服务器运行正常。
- 如果七层ELB节点在响应超时时间内没有收到后端服务器的响应,则判定健康检查失败。
- 在HTTPS健康检查请求中,User-Agent头字段主要用于标识此类请求为健康检查发出的探测请求。User-Agent的值可能随业务需求而动态调整,建议客户的后端服务请勿根据此header头做检验和判断。
- 当选定为“使用后端服务器的内网IP为域名”为健康检查域名时,建议客户的后端服务请勿根据Host请求头做检验和判断。
TLS健康检查
对于HTTP、HTTPS和TLS后端协议,您可以配置TLS健康检查,通过TLS 握手,发送Client Hello,解析服务端发送的Server Hello来获取后端服务器的状态。

TLS健康检查的机制如下:
- ELB节点根据健康检查配置,向后端服务器(IP+健康检查端口)发送TCP SYN报文。
- 如果在超时时间内没有收到SYN+ACK报文,则判定健康检查失败。
- 如果在超时时间内收到了SYN+ACK报文,则向后端服务器发送会发送Client Hello(SSL协商),协商的版本号包括了TLSv1.0、TLSv1.1、TLSv1.2、TLSv1.3。
- 如果在超时时间内收到后端服务器返回的Server Hello报文,则判定健康检查成功。否则,判定健康检查失败。
GRPC健康检查

GRPC健康检查机制如下:
- ELB节点根据健康检查配置,向后端服务器(IP+端口+检查路径)发出POST或GET请求(可以选择设置域名)。
- 后端服务器收到请求后,根据服务的情况返回相应的状态码。
- ELB通过读取HTTP/2头中的grpc-status的值作为返回的GRPC状态码。
- 如果七层ELB节点在响应超时时间内收到了后端服务器的响应,将返回的GRPC状态码与自定义的健康检查返回码进行对比,如果匹配则认为健康检查成功,后端服务器运行正常。
- 如果七层ELB节点在响应超时时间内没有收到后端服务器的响应,则判定健康检查失败。
健康检查时间窗
健康检查机制的引入,有效提高了业务服务的可用性。但是,为了避免频繁的健康检查失败引起的切换对系统可用性的冲击,健康检查只有连续多次检查成功或失败后,才会进行状态切换。
健康检查时间窗由表2中的三个因素决定:
影响因素 |
说明 |
|
---|---|---|
检查间隔 |
每隔多久进行一次健康检查。 |
|
超时时间 |
等待服务器返回健康检查的时间。 |
|
健康检查阈值 |
判定健康检查结果正常或异常时,所需的健康检查连续成功或失败的次数。 |
健康检查时间窗的计算方法如下:
- 健康检查成功时间窗 = 超时时间×健康检查正常阈值 + 检查间隔×(健康检查正常阈值-1)
- 健康检查失败时间窗 = 超时时间×健康检查异常阈值 + 检查间隔×(健康检查异常阈值-1)
如图7所示:
- 检查间隔:4s
- 超时时间:2s
- 健康检查异常阈值:3次
健康检查异常排查
如果您的健康检查异常,排查方法请参考健康检查异常如何排查。