首页/云/云网络与负载均衡速查/TCP 健康检查怎么做
负载均衡54 条

TCP 健康检查怎么做

TCP 健康检查只需与检查端口建立连接成功即判定健康,后端进程挂掉时连接被拒、检查立即失败。它适合纯四层服务;数据库代理类后端要评估高频探测带来的连接记录开销。

TCP 健康检查怎么做

TCP 健康检查只需与检查端口成功建立连接即判定健康,后端进程挂掉时连接被拒、检查立即失败。它适合不解析应用协议的纯四层服务,判断简单也不增加应用侧改动。需要注意的是每次探测都会在后端留下一次短连接记录,数据库代理这类对连接数敏感的后端要评估探测频率带来的开销。

基本信息

检查逻辑与检查端口完成 TCP 连接即视为健康
检查端口默认与后端端口一致,也可以单独指定
探测开销每次探测都会在后端留下短连接记录(连接数、访问日志)
放通要求安全组与主机防火墙需允许来自负载均衡的探测流量
局限性进程假死但端口仍监听时,TCP 探测无法发现问题
适用层次四层监听;七层监听建议使用 HTTP 探测

典型使用场景

  • 数据库代理、消息队列等非 HTTP 服务的基础可用性判断
  • 以进程是否监听端口为唯一健康标准的简单服务
  • 后端不方便提供探活接口时的替代方案
  • 需要快速确认后端整体不可用(如进程退出)的场景
  • 与 HTTP 探测配合:四层监听用 TCP、七层监听用 HTTP

观察后端被探测的连接

观察后端被探测的连接
ss -tan | awk '$4 ~ /:8080$/ {print}' | head
# 统计来源地址:负载均衡的探测会以固定内网网段出现
sudo tcpdump -ni any 'tcp[tcpflags] & tcp-syn != 0 and port 8080' -c 10
# 用于确认探测频率与来源,避免把健康检查流量当作异常流量处置

探测结果与判断

现象含义
连接成功判定健康,正常参与流量分配
connection refused进程未监听或被防火墙拒绝,判定异常
连接超时安全组或网络未放通探测来源,判定异常
连接成功但业务报错TCP 探测无法发现,需要改用 HTTP 探测
应用日志中出现大量来源为负载均衡网段的短连接通常是健康检查流量,排查时不要当作异常流量处置或加黑名单。
TCP 探测只能确认端口可连,无法识别「进程在但请求处理异常」的假死状态;对可用性要求高的 HTTP 服务建议使用带状态码校验的探测方式。

易错点

  • 健康检查端口未放通,业务端口正常但成员被判定异常,控制台状态与人工测试结果矛盾
  • 忽略健康检查在后端日志中的记录,误判为可疑流量并加黑名单,反而导致成员被摘
  • 依赖 TCP 探测发现应用层故障:进程假死但端口仍监听时,流量仍会打到异常后端
  • 探测间隔设得过短,连接数敏感的后端(数据库代理)出现大量探测连接,干扰连接数监控

数据来源与参考

  • 阿里云 CLB TCP 健康检查文档
  • 微软/自建服务健康检查通用实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌