# H3C SecPath LB(L1000‑AK 系列)TCP 健康检查 RST/ACK 问题说明
>
> 现象:四层 TCP 健康检查,三次握手成功后,设备直接发送`RST,ACK`重置连接,**不是四次挥手 FIN**,后端业务日志大量打印`connection reset by peer`告警。
## 核心关键点
1. **SLB 内置的 TCP half‑open(半开)健康检测模板,没有选项修改断开方式,固定使用 RST 重置断开**H3C。
>
> half‑open 探测逻辑:只完成三次握手验证端口监听状态,**不会执行业务交互,也不支持 FIN 四次挥手关闭**,探测成功 / 失败均发送 RST 释放探测连接。
2. 可以设置`disconnect‑mode fin`的`disconnect‑mode`命令,**仅针对 NQA 的 TCP 测试模板生效,不能用于 SLB 实服务器健康检测**,SLB 服务器负载均衡的探测模板不识别该参数H3C。
>
> ⚠️不要混淆:NQA 是链路质量探测;SLB 实服务器健康检测是 half‑open 机制,二者不是同一套模块。
3. 虚服务器业务流量的`connection close {fin|rst}`,**是业务转发连接的关闭策略,不影响健康检查探测连接**,改这个参数解决不了探测 RST 报文问题H3C。
>
> 简单总结:**SLB 原生四层 TCP (half‑open) 健康检查,不能改成四次挥手 FIN 断开,这是产品固有实现,没有配置开关直接修改这个行为**。
## 4 套可行规避方案(按推荐优先级)
### 方案 1:改用 NQA‑TCP 模板做实服务器健康检查(可以实现 FIN 四次挥手断开)
>
> 使用 NQA 的 TCP 模板,配置`disconnect‑mode fin`,将这个 NQA 模板引用给实服务器做健康探测,替代 SLB 默认 half‑open 模板H3C。
```
system‑view
#创建NQA tcp模板
nqa template tcp slb‑tcp‑probe
#关键:设置探测结束用FIN四次挥手,不再发RST
disconnect‑mode fin
#配置探测端口,就是业务端口51773
destination‑port 51773
#进入实服务器/实服务组,引用该nqa模板作为健康检测
real‑server rs‑x.x.x.x
probe nqa slb‑tcp‑probe
```
>
> 注意限制:
1. NQA‑TCP 探测会完整建立完整 TCP 连接,相比 half‑open,CPU 开销会略升高;探测间隔不要设置过小,建议≥5s。
2. 需要确认版本支持 NQA 模板被 SLB 实服务器引用;部分老版本不支持,需要升级版本。
3. 抓包验证:探测结束发送`FIN/ACK`,不再出现 RST 报文。
### 方案 2:改用七层 HTTP/HTTPS 健康检查(优先推荐业务允许时)
后端业务如果可以提供一个简单 HTTP 探测接口,就使用七层 HTTP 健康检查。
>
> 七层探测会发起 HTTP 请求,正常业务交互后使用 FIN 挥手关闭连接,不会 RST 重置。
> 缺点:后端服务需要支持 HTTP 接口,如果是纯 TCP 私有业务,该方案不可用。
### 方案 3:业务服务器日志侧过滤告警(改动最小,不改动 LB 配置)
在后端应用服务器,对**负载均衡探测源 IP**产生的`connection reset by peer`日志进行过滤丢弃。
>
> 优点:不改动网络配置;缺点:业务侧需要修改日志配置。
### 方案 4:调大健康检查探测间隔,降低告警频率
调大探测间隔,减少 RST 报文产生频次,只能缓解,不能根除告警。
## 不推荐的方案
- ❌修改虚服务器`connection close fin`:**只处理业务转发流量,完全不改变健康探测报文**,测试依旧看到 RST。
- ❌继续使用 SLB 默认 TCP half‑open 模板:RST 报文无法关闭。
## 版本与 400 建议
1. 先确认设备版本,如果版本老旧优先升级到最新稳定版本;该行为不是 BUG,是 half‑open 探测固有机制,升级版本也不能直接修改 half‑open 的断开逻辑。
2. 如果方案 1(NQA‑TCP 做健康探测)当前版本不支持实服务器引用 NQA 模板,需要提交 400 工单确认版本适配。
>
> 400 工单关键描述参考:
> LB 设备实服务器使用 TCP half‑open 健康检查 51773 端口,探测完成发送 RST‑ACK 报文,后端应用大量打印连接重置告警;希望健康探测使用 FIN 四次挥手断开。已确认 half‑open 模板无开关,咨询是否支持 NQA‑TCP 模板作为实服务器健康检测。
## 验证排查命令
```
#查看SLB健康探测模板信息
display real‑server name xxx verbose
#查看NQA tcp模板配置,确认disconnect‑mode
display current‑configuration nqa‑tplt‑tcp
```
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论