负载均衡Apache

我在家里有一个非常简单的设置,为一些家庭/学校项目提供服务。 该设置有一个静态IP地址连接到Netgear路由器(R)的DSL调制解调器(M),它将HTTPstream量端口转发到我的家庭内部网上的Ubuntu机器(A)上的Apache。 我现在已经添加了另一台运行Ubuntu(B)的机器到我的家庭networking,我想负载均衡HTTPstream量。 这些机器也为我的内联网负担繁重,因此负载波动。 所以在ASCII艺术 –

(A:192.168.1.2- Ubuntu) Internet---(M:1.2.3.4)--(R:192.168.1.1)--/ Netgear \ (B:192.168.1.3- Ubuntu) 

从最初的评估,似乎有几种方法可以做到这一点 – mod_proxy_balancer,apache集群,外部代理,循环DNS或DNS代理等等。许多这些解决scheme的devise可能会使networking增长/扩展。 这在我的情况下是不太可能的,当然也不是要求。 在A和B机器之间设置负载均衡的最简单方法是什么?

现在一个随机分配是可以的,但我想最终有更多的程序控制(如故障转移,或基于一些外部因素,如机器上的负载,也许URL等指向stream量)设置规则在交通指向的地方。 我怀疑随着这些要求增长非基于Apache的解决scheme(如基于DNS的)将无法正常工作,但也许我错了这个假设。

感谢任何指针。

在两台机器上运行haproxy + ucarp,这将处理负载平衡和故障转移就好了..

最简单的办法是在每个物理服务器上创build两个虚拟Web服务器 – http://www.cgi和www.static。

将网页文件拆分成虚拟目录,同步两台服务器。

  1. CGI(PHP,Ruby,Java,Perl,ASP)

  2. 静态文件(图像,网站图标,JavaScript,CSS,Flash,PDF文档,TXT,媒体等)

现在有三种“重载”服务 – 数据库,www.cgi和www.static。

  • 在任一台服务器上运行这三个。
  • 运行服务器A上的数据库以及服务器B上的两个Web虚拟机
  • 在服务器A上运行数据库和www.cgi,在服务器B上运行www.static

易于pipe理,提供故障切换,在需要之前不需要额外的复杂性。

一般来说,两台机器用于故障切换,三台或更多机器用于负载平衡。

如果您使用的是服务器级机器,那么硬件负载平衡通常是经济高效且简单的。

最大的上传是有限的,但不是瓶颈。 真正的问题来自其他服务(对于我的内联网),这往往会导致服务器机器挂起/失败。如果我有这个设置正确的话,我将不会有重大的停机时间,我的networking服务器(其中包括其中运行icecast无线电断开用户的stream)

@Colin感谢linuxvirtualserver.org上的信息我将检查出来。

@Joe我不知道我的解决scheme – 如果服务器A死亡,那么我的CGI已经死了(或者类似于B),故障转移在哪里? 不,我没有服务器级的硬件,只是旧的(和多样的)“退休的”电脑,与Ubuntu的工作很好。