我需要在多个“真实服务器”之间对 UDP 流量进行负载平衡,并以真正的循环方式进行。我从 keepalived 开始,但意外地发现,LVS 将 UDP 流量视为“连接”(无论 UDP 是什么......)。实际上,这意味着来自特定客户端的所有流量始终都流向同一个“真实服务器”(这很重要,因为某些客户端可能会产生如此大量的流量,以至于单个后端将不堪重负) .
显然,这是预期的行为,但是最近的 LVS 版本有一个“--ops”标志,这使得 LVS 绕过其上述行为,以便独立处理每个 UDP 数据报(这就是我想要的!)。但是(总有一个但是..)这个功能没有从 keepalived.conf 中公开。
有什么解决办法吗?
- 在 UDP 后端之间进行循环分配
- 检测“死”后端并将它们从循环法中移除(当它们变得“活跃”时将它们添加回来也很有用)
显然应该是基于 Linux 的。任何形式的 DNS 循环在这里都不会真正起作用,因为客户端无法识别 DNS。
PS 我打算尝试 pulse/piranha,但通过阅读我收集的文档,它也不会公开“--ops”标志。我也打算给mon一个尝试(让mon检查后端并通过直接调用 ipvsadm 添加/删除 realservers)。