开启负载均衡SLB的健康检查后业务日志中出现“Connection reset by peer”的错误

开启负载均衡SLB的健康检查后业务日志中出现“Connection reset by peer”的错误

更新时间:2020-06-23 16:10:17

免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。

问题描述

负载均衡SLB实例中开启TCP监听的健康检查功能后,后端服务器的业务日志中频繁出现类似Connection reset by peer的网络连接错误。经网络抓包分析,发现相关请求来自负载均衡SLB实例,同时负载均衡SLB实例主动向后端服务器发送了RST数据包中断连接。业务日志中的错误信息类似如下。

问题原因

该问题和负载均衡SLB的健康检查机制有关。由于TCP协议对上层业务的状态无感知,同时,为了降低健康检查成本以及对后端服务的冲击,负载均衡SLB针对TCP监听的健康检查只进行简单的TCP三次握手,而后直接发送RST数据包断开TCP连接,没有进一步的业务数据交互,导致上层业务认为连接异常,如Java连接池等,所以抛出Connection reset by peer异常。详细的数据交互过程如下:

  1. 负载均衡SLB实例向后端服务端口发送SYN请求包。
  2. 后端服务器收到请求后,如果端口状态正常,则按照正常的TCP协议机制返回相应的SYN和ACK应答包。
  3. 负载均衡SLB实例成功收到后端服务端口的应答,则认为端口监听是正常的,判定健康检查成功。
  4. 负载均衡SLB实例向后端服务端口直接发送RST数据包主动关闭连接,结束本次健康检查操作,并且不发送业务数据。

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于 ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

针对该问题,请结合业务的需求和实际情况,从下列两种解决方案中选择适合您的方案:

  • 方案一:更换监听类型
    更换负载均衡SLB的TCP监听为HTTP监听或HTTPS监听,详情请参见添加HTTP监听添加HTTPS监听
  • 方案二:日志过滤
    在上层业务的层面,对负载均衡SLB健康检查的IP地址段做日志过滤,忽略相关错误信息。
    说明:负载均衡SLB的健康检查地址段为100.64.0.0/10。

适用于

  • 负载均衡SLB

发布块:仅发布到中文站

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。