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