日期:2014-05-16  浏览次数:21060 次

用Apache做下载服务器负载均衡

           有一个大文件要多人在线下载, 用http长连接下。

           部署在Apache上面, 人下的一多, 就会搞死server 。

           Apache最多同时只能保持几千个人同时在线, 就算换ngix等非堵塞的http 服务器, 也会被轻易搞死。

          所以想到用cluster,

          把下载功能抽出来,专门弄几台廉价PC做server

           每台server上部署一模一样的文件, 最前端做个负载均衡, 根据流量自动分流。

           前端的负载均衡可以用路由设备来做, 也可以买F5, 但是最便宜的做法就是用Apache。


           主要就是修改httpd.conf

         1. 先打开负载均衡模块

           

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 

            2. 定义自己的负载均衡模块,负载算法用bubusyness

 

ProxyRequests Off
ProxyPass /piratesApi/data/obbmin  balancer://dlbalancer nofailover=On
<proxy balancer://dlbalancer/>
BalancerMember http://dl01.xxxx.com/piratesApi/data/obbmin
BalancerMember http://dl02.xxxx.com/piratesApi/data/obbmin
ProxySet lbmethod=bybusyness 
</proxy>

         3. 打开Apache的负载观察模块

#just for test
<Location /balancer-manager>
  SetHandler balancer-manager
  Order Deny,Allow
  Deny from all
  Allow from all
</Location>

       4.  通过访问以下地址就能看到你的负载调度情况

http://xxxx.com/balancer-manager


顺便提一下, 淘宝有一套TFS的分布式文件系统。 我研究了一下, 它适用的场景是多人频繁下载小文件, 和我这里的单一大文件多人下载不同。


#以上, 蒋彪#