用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的分布式文件系统。 我研究了一下, 它适用的场景是多人频繁下载小文件, 和我这里的单一大文件多人下载不同。

#以上, 蒋彪#

相关阅读:

相关推荐