免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
问题描述
负载均衡SLB实例中开启TCP监听的健康检查功能后,后端服务器的业务日志中频繁出现类似Connection reset by peer
的网络连接错误。经网络抓包分析,发现相关请求来自负载均衡SLB实例,同时负载均衡SLB实例主动向后端服务器发送了RST数据包中断连接。业务日志中的错误信息类似如下。
问题原因
该问题和负载均衡SLB的健康检查机制有关。由于TCP协议对上层业务的状态无感知,同时,为了降低健康检查成本以及对后端服务的冲击,负载均衡SLB针对TCP监听的健康检查只进行简单的TCP三次握手,而后直接发送RST数据包断开TCP连接,没有进一步的业务数据交互,导致上层业务认为连接异常,如Java连接池等,所以抛出Connection reset by peer
异常。详细的数据交互过程如下:
- 负载均衡SLB实例向后端服务端口发送SYN请求包。
- 后端服务器收到请求后,如果端口状态正常,则按照正常的TCP协议机制返回相应的SYN和ACK应答包。
- 负载均衡SLB实例成功收到后端服务端口的应答,则认为端口监听是正常的,判定健康检查成功。
- 负载均衡SLB实例向后端服务端口直接发送RST数据包主动关闭连接,结束本次健康检查操作,并且不发送业务数据。
解决方案
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于 ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
针对该问题,请结合业务的需求和实际情况,从下列两种解决方案中选择适合您的方案:
- 方案一:更换监听类型
更换负载均衡SLB的TCP监听为HTTP监听或HTTPS监听,详情请参见添加HTTP监听、添加HTTPS监听。 - 方案二:日志过滤
在上层业务的层面,对负载均衡SLB健康检查的IP地址段做日志过滤,忽略相关错误信息。
说明:负载均衡SLB的健康检查地址段为100.64.0.0/10。
适用于
- 负载均衡SLB