您的位置:首页 > 其它

使用mod_proxy_balancer实现负载均衡

2007-08-10 10:38 429 查看
负载均衡

由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。

针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。

mod_proxy_balancer

mod_proxy_balancer是Apache2.1版本及更高级版本才可以使用,在网上关于mod_proxy_balancer的介绍比较少,特别是中文版的。近日,由于项目的需要,需要用Apache做一个负载均衡。刚开始考虑使用的是使用mod_rewrite,由于mod_rewrite使用起来比较复杂,所以就放弃啦。

废话少说,下面介绍mod_proxy_balancer的一个简单的例子。

首先,在主配置文件httpd.conf添加以下Module:

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

LoadModule proxy_http_module modules/mod_proxy_http.so

再增加以下元素:

ProxyRequests Off

<proxy balancer://test>

BalancerMember http://192.168.0.150:8001 loadfactor=1

BalancerMember http://192.168.0.150:8002 loadfactor=1

BalancerMember http://192.168.0.150:8003 loadfactor=1

BalancerMember http://192.168.0.150:8004 loadfactor=1

</proxy>

设置虚拟主机:

<VirtualHost *:80>

ServerAdmin chenzhaozhan@hotmail.com

ServerName www.example.com

ServerAlias example.com

ProxyPass / balancer://test/

ProxyPassReverse / balancer://test/

</VirtualHost>

这里需要多废话几句,刚开始我没有用虚拟主机,只是添加ProxyPass /test balancer://test,测试的时候没有什么问题,因为每个网站只有一个网站,访问的时候没有问题。后来用http://localhost/a.htm访问就崩溃啦,没有权限访问该页面,返回http 403的错误。最后改用以上的方式解决问题。

而且还可以同样在http.conf主配置文件主添如下元素:

<Location /balancer-manager>

SetHandler balancer-manager

Order Allow,Deny

Allow from all

</Location>

如果配置成功后你可以可以在地址栏输入 localhost/balancer-manager,将可以清楚的看到各节点的工作运行状态:)

可以看到以下的结果:



同样,可以配置server-status查看信息:

<Location /server-status>

SetHandler server-status

Order Allow,Deny

Allow from all

</Location>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: