负载均衡54 条

TCP 监听配置要点

TCP 监听是常见的四层入口:确定前端端口、调度算法与健康检查即可上线。重点确认后端端口映射、空闲超时与健康检查端口三项,上线后的多数稳定性问题都与它们相关。

TCP 监听是什么

TCP 监听是四层入口:负载均衡只按连接转发,不解析应用协议,因此数据库、消息队列、自研 TCP 服务都能接入。配置重点集中在四件事——前端端口与后端端口的映射、调度算法、健康检查方式、空闲超时,上线后多数稳定性问题都能在这四项里找到原因。

基本信息

必配项前端端口、协议 TCP、后端端口、调度算法、健康检查
常见算法加权轮询 wrr、加权最小连接数 wlc
健康检查TCP 探测(连接成功即健康)或指定独立检查端口
空闲超时长连接业务(数据库代理、MQTT)需要相应调大
协议支持任意基于 TCP 的协议,负载均衡不感知应用层内容
后端要求服务必须监听内网网卡地址,不能只监听 127.0.0.1

典型使用场景

  • 为多台数据库代理或中间件提供统一连接地址
  • 长连接推送服务需要保持连接不被入口提前断开
  • 非 HTTP 的自研协议服务需要横向扩容
  • 内网微服务之间调用需要稳定的服务地址与故障转移
  • 老系统只支持四层代理,无法改造为 HTTP 接入

先在后端手工验证

先在后端手工验证
nc -zv -w 3 10.0.1.10 8080          # 端口是否可连
ss -lntp | grep 8080                # 确认监听的是 0.0.0.0 或内网地址
curl -sv http://10.0.1.10:8080/ | head   # 若同时提供 HTTP,可进一步验证
# 从另一台同网段实例重复一次,排除安全组只放行单机的问题

关键参数与调优方向

参数说明常见问题
前端端口对外提供服务端口与其他监听端口冲突导致无法保存
后端端口转发到的目标端口,可与前端不同后端实际端口与配置不一致
调度算法决定新连接分配到哪台后端长连接场景下轮询不均衡
健康检查判断后端是否在线检查端口未放通导致成员被摘
空闲超时长期无数据连接被断开的时限长连接被提前断开
后端服务必须监听 0.0.0.0 或内网网卡地址;只监听 127.0.0.1 时健康检查会一直失败,也会让负载均衡无法转发流量。
四层转发不解析协议内容,因此入口无法做基于应用的限流或内容改写;需要这类能力时应评估改用七层监听或在后端实现。

易错点

  • 后端只监听 127.0.0.1,健康检查全部失败,控制台表现为所有成员异常而业务代码毫无报错
  • 健康检查使用独立端口但未在安全组放通,业务端口正常而成员持续被摘除
  • 长连接业务沿用默认空闲超时,客户端连接被入口提前断开,表现为周期性重连
  • 前后端端口配置不一致(如前端 3306 后端写成 3307),连接能建立但业务立即报错

数据来源与参考

  • 阿里云 CLB TCP 监听文档
  • 腾讯云 CLB TCP 监听文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌