如何在两台 Linux 机器之间实现负载平衡?

如何在两台 Linux 机器之间实现负载平衡?

受到 Stack Overflow 网络的启发,我现在痴迷于 HAProxy 并尝试自己使用它。

目前,每个 HAProxy 盒都有两块网卡(嗯,配置了两块,最多可以有 4 块,但不确定它们是否需要自己的一块网卡来在盒之间进行管理)。

在两台机器上,后端(eth1)是一个私有IP,它连接到与网络服务器相连的交换机,而前端(eth0)有一个直接路由的公共互联网IP。

此外,我还为 eth0 创建了一个额外的虚拟 IP,eth0:0它有第三个公网 IP 地址。

我刚刚了解如何使用它在其后面的多个 Web 服务器之间进行负载平衡,但是,我无法在两个 HAProxy 盒之间进行负载平衡 - 它们似乎在争夺虚拟 IP,但这似乎不是一个明智的解决方案。

现在,通过使用虚拟共享 IP 地址,此解决方案似乎有效,并且似乎为我提供了最大的正常运行时间,但这是正确的方法吗,或者有更聪明的方法吗?

我一直在研究其他 Linux 软件包,例如 keepalived,但是,我使用 Linux(服务器)才一周,对其的理解还处于极限。

有没有人曾经这样做过?您能为最大限度延长正常运行时间提供任何建议吗?

答案1

如果您想对两个不同的 haproxies 之间的流量进行负载平衡,那么您需要在它们前面有另一个负载平衡器,但这是没有用的。

如果您想要更高的可用性,您已经使用两个 haproxies 并通过 keepalived 或 heartbeat 为其中一个分配 VIP 来实现。通常,这是解决 HA 和负载平衡问题的方法。

我能想到一种同时使用两个 haproxy 的方法。您可以配置 keepalived 为每个 haproxy 服务器分配一个 VIP。负载平衡可以通过 DNS 完成。DNS 名称应解析为两个 VIP。当一个 haproxy 发生故障时,另一个节点将保留这两个 VIP 并接收所有流量。

相关内容