我可以使用 Unix 来平衡两台 Linux 服务器的负载吗?

我可以使用 Unix 来平衡两台 Linux 服务器的负载吗?

我正在尝试在脑海中制定一个解决方案,其中两个后端 linux 服务器运行 HTTP、SMTP、XMPP 镜像,并且应该对它们之间的连接进行负载平衡。

我当前的解决方案是前面有一个 OpenBSD 盒子,当然可以使用 carp 进行扩展,以在将来添加更多内容以避免单点故障。使用 PF,我可以使用随机或循环方法向一个服务器池发送流量。

使用中继,我可以从中删除不起作用的池服务器。

但我很重视社区对此事的意见,所以请告诉我针对此类环境的最佳 Unix 负载平衡解决方案。

一个目标是允许一台服务器发生故障并尽量减少服务中断。

答案1

我只熟悉 heartbeat 和 ldirector 的纯 Linux 组合(两者都是Linux虚拟服务器将 IP 隧道流量从一对前端投射到 N 个后端,并在一个前端死亡时在两个前端之间共享/交换前端 IP。它在我使用的环境中运行得很好,但我不确定它是否容易受到裂脑问题的影响。

答案2

HAProxy 已在许多 *nix 平台上编译,包括 BSD 和 Solaris(当然还有 Linux)。如果您的负载均衡器未运行 Linux,那么它是一个非常方便且可配置的软件。它了解 HTTP,但也可以平衡任何它一无所知的 TCP 服务。它可以检查服务器并从服务中删除任何不响应(或响应不够)的服务器。

它住在这里:http://haproxy.1wt.eu/

它有一个缺点:它仅通过 IPv4 与内部(后端)服务器通信(传入的 IPv6 连接可以很好地进行负载平衡,只是内部连接仅限于 IPv4)。如果您的服务器场采用双堆栈设置,那么这不是问题。

答案3

我们使用一对运行 lvs、lvs-kiss 和 heartbeat 的虚拟 CentOS 5 服务器。虚拟服务器本身驻留在 XEN 集群中,可以故障转移到不同的位置。

其中一台 LVS 服务器是活动主服务器,另一台是从服务器。在两个服务器上,两个进程(主进程和从进程)都永久运行,因此会话始终会被复制。

如果活动的 lvs 服务器出现故障,另一个 lvs 服务器将接管并无缝地为之前的目标服务器提供 lb 连接。

答案4

要回答这个问题,是的,您可以使用 Linux 来平衡另外两个 Linux 服务器(实际上是它们的服务)的负载。我用 Piranha 来更具体地表达这一点。 Piranha是LVS集群系统之上的管理层。 Redhat 提供的详细指南位于 http://www.redhat.com/support/resources/howto/piranha/

http://sourceware.org/piranha/

相关内容