首页/云/云网络与负载均衡速查/四层会话保持(源 IP 亲和)
负载均衡54 条

四层会话保持(源 IP 亲和)

四层会话保持基于客户端源 IP:同一地址在保持周期内固定转发到同一后端。客户端经过大型出口 NAT 时,大量用户可能被压到同一台后端,启用前需要评估单机承载能力。

四层会话保持是什么

四层会话保持基于客户端源 IP:同一地址在保持周期内会被固定转发到同一后端。它解决的是「四层看不到 Cookie、又需要会话亲和」的场景,但同时带来一个明显风险——客户端如果经过大型出口 NAT,大量用户可能共享同一个公网 IP,于是被压到同一台后端上。

基本信息

原理以客户端源 IP 作为亲和依据
适用TCP/UDP 有状态会话(长连接、登录态)
风险同一出口 IP 的多用户集中到一台后端
替代方案改用一致性哈希调度或七层 Cookie 保持
保持时长设置过长会让后端扩容后流量长期不均衡
适用范围四层监听;七层监听应使用 Cookie 保持

典型使用场景

  • 非 HTTP 的有状态协议需要把同一客户端固定到同一后端
  • 长连接服务在扩缩容后希望存量客户端不频繁漂移
  • 自研协议按客户端维度维护会话状态
  • 排障期间固定特定客户端流量到指定实例
  • 与一致性哈希对比后确认源 IP 粒度更适合业务语义

观察客户端来源分布

观察客户端来源分布
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20
# 通过来源 IP 分布判断是否存在大型出口 NAT 集中访问
ss -tan | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head
# 结合后端实例连接数观察是否出现单机倾斜

取舍对照

方案亲和粒度主要风险
四层会话保持客户端源 IP出口 NAT 场景下单后端过载
一致性哈希源 IP 或指定键成员变化引发重映射
七层 Cookie 保持会话/浏览器API 客户端不回传 Cookie
不启用粘性无有状态服务需改造为集中式存储
企业出口 NAT(许多客户端共享一个公网 IP)场景启用四层会话保持前,先估算单后端能否承载整个出口的流量,必要时改用七层 Cookie 保持。
保持时长与后端扩容要一起考虑:时长设置过长时,新扩容的实例在很长一段时间内分不到流量,扩容效果被打折。

易错点

  • 大型企业出口集中访问,会话保持导致单后端过载,其他后端却接近空闲
  • 保持时长设置过长,后端扩容后流量长期不均衡,容量评估失真
  • 四层保持与七层保持叠加使用,粘性来源不清,排查流量分布时无法判断依据
  • 有状态服务已改为集中式会话存储后未关闭会话保持,流量分布持续偏移

数据来源与参考

  • 阿里云 CLB 会话保持文档
  • 腾讯云 CLB 会话保持文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌