抱歉,评论被关闭
实践中浅谈负载均衡
之前说过的,最近2web服务器经常有一台服务器负载过严重
这个问题也在继续排查
之前的负载均衡采用的DNS轮询的
DNS 轮询感觉缺点就是不能服务器繁忙状态来分发
观察了一段时间服务器,一台服务器运行的很繁忙,
而另外台,在那里 空闲着。
所以想负载繁忙程度,
可惜没有硬件负载均衡器,那个玩意有点贵
只能用软件的负载均衡,
查了哈网上的资料发现还是 全面,如:apache
新加一台服务器,想弄来,做负载均衡
现在运行中的两台WEB服务器
就简单参照了,网上的一些案例配置了一下
如下:
一、先开启了必须的模块
1.LoadModule proxy_module modules/mod_proxy.so 2.LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 3.LoadModule proxy_http_module modules/mod_proxy_http.so
二、添加到配置文件
ProxyRequests Off <Proxy balancer://mytest> BalancerMember http://apoyl.com:8081 loadfactor=2 BalancerMember http://apoyl.com:8082 loadfactor=2 </Proxy> ProxyPass / balancer://mytest/ lbmethod=bytraffic # 警告:以下这段配置仅用于调试,绝不要添加到生产环境中!!! <Location /balancer-manager> SetHandler balancer-manager order Deny,Allow Deny from all Allow from localhost </Location>
三、站点配置
在http.conf中开启 Include conf/extra/httpd-vhosts.conf 在这个文件中加入 <VirtualHost *:80> DocumentRoot "c:/tmp" ServerName shop.scol.cn ServerAlias shop.scol.cn ProxyPass /images ! ProxyPass /css ! ProxyPass /js ! ProxyPass / balancer://mytest/ lbmethod=bytraffic ProxyPassReverse / balancer://mytest/ </VirtualHost>
“# 警告:以下这段配置仅用于调试,绝不要添加到生产环境中!!!”
这句话中,我测试了一下,需要删除上面的
ProxyPass /images !
ProxyPass /css !
ProxyPass /js !
ProxyPass / balancer://mytest/ lbmethod=bytraffic
ProxyPassReverse / balancer://mytest/
这个,然后再游览器中输入http://localhost/balancer-manager 就能看到负载均衡管理器。
lbmethod可能的取值有:
lbmethod=byrequests 按照请求次数均衡(默认)
lbmethod=bytraffic 按照流量均衡
lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)
我测试这个bybusyness值用不起,其他两个都没有问题。。
看来只有上apache官网去看一下那个使用了。。。。
最后先用bytraffic测试成功了,但是由于程序有很多路径问题,需要更改程序。。。就放弃了。又想了哈,改为做samba 共享windows ,然后把后来添加的站点,做映射到windows下运行。 用来排查看是不是这个站点的程序的问题。。。
参考文献:
http://httpd.apache.org/docs/2.2/en/mod/mod_proxy_balancer.html
http://koda.iteye.com/blog/465061
http://s456123123b.blog.163.com/blog/static/5632332220101080474642/
本文出自 “凹凸曼” 博客,请务必保留此出处 http://www.apoyl.com/?p=1266