开源中文网

您的位置: 首页 > Linux应用 > Apache > 正文

使用mod_proxy_balancer实现负载均衡

来源:  作者:

负载均衡
   
       
由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。
        针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(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> 


备注:
1、负载均衡的开源软件很多,比如:lvs、nginx等,但是在某些情况下不能完全满足要求,如需要对返回的页面内容进行过滤,这时候apache的mod_filter和mod_ext_filter就非常有用。
2、本文中apache需要编译时加上--enable-proxy选项。
3、运行/fullpath/apache/bin/http -l | grep -i proxy,如果有以下模块就不用在apache的配置文件中加红色部分了:
  mod_proxy.c
  mod_proxy_connect.c
  mod_proxy_ftp.c
  mod_proxy_http.c
  mod_proxy_ajp.c
  mod_proxy_balancer.c

Tags:mod_proxy_balancer 负载均衡
相关文章列表:
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明