L4 LB 有状态转发:Maglev 调度+ Session 同步

6 阅读1分钟

在高性能负载均衡(LB)的设计中,Maglev Hash 调度Session 同步是解决“有状态转发”在高可用场景下两个不同维度的核心问题。


1. 核心逻辑:稳定性(Maglev) vs. 容错性(Session 同步)

这两者共同解决了**“当环境发生变化时,数据包还能不能找到正确的后端(RS)”**的问题,但侧重点不同:

  • Maglev Hash(解决后端 RS 变动):
    • 逻辑: 它是一种一致性哈希算法。其核心目标是:当后端 RS 节点增加或减少时,尽可能让绝大多数存量连接仍哈希到原来的 RS 上,只有极小比例(1/N)的连接会失效。
    • 与 Session 的关系: 它极大地减少了对 Session 同步的依赖。如果哈希足够稳定,大部分包即使不查同步过来的 Session 表,靠哈希也能投递正确。
  • Session 同步(解决 LB 自身变动或网络路径变动):
    • 逻辑: 当流量由于上层交换机 ECMP 抖动,从 LB-A 突然漂移到了 LB-B,或者 LB-A 宕机由 LB-B 接管时,LB-B 内存里必须有这条连接的状态(Session)。
    • 与 Maglev 的关系: 当 Maglev 算法失效(例如 LB 节点本身发生缩扩容导致哈希环变化)时,Session 同步是最后的“兜底”方案。