使用 ipvs 的 L4 平衡:丢弃 RST 数据包 - 故障转移

使用 ipvs 的 L4 平衡:丢弃 RST 数据包 - 故障转移

我有一个 L4 ipvs 负载均衡器和 L7 envoy 均衡器设置。假设我的一个 L4 平衡器出现故障,由于一致的哈希处理,现在由另一个 L4 平衡器处理(感谢 BGP)的流量被代理到同一个 L7 节点。

这应该没有任何问题,我认为这是一个常见的设置。

问题在于长时间运行的连接。当新的 L4 节点收到流量(仅数据 - ACK/PUSH 数据包)并且该节点没有收到 SYN 数据包时,该节点仅向客户端发送 RST 数据包,从而终止连接。下图说明了这一点。

这不应该发生,我的问题是,有没有办法(sysctl 配置或其他东西)这是造成这种情况的原因?我知道我也许可以使用 iptables 删除 RST 数据包,但这听起来不对。

在此输入图像描述

答案1

实际上有一个 sysctl 变量net.ipv4.vs.sloppy_tcp可以解决这个特定问题(https://lore.kernel.org/patchwork/patch/386081/?fbclid=IwAR17t0jEvRSlvZFch1Lz_CDMjYOzUluuNGQmiyKequZK1Vq4kI75vezWEGs)这解决了这个问题。

非常感谢 Patric Shuff,他帮助我解决了这个问题(关于这个主题的精彩演讲 -https://www.usenix.org/conference/lisa16/conference-program/presentation/shuff)。

相关内容