apache 负载均衡配置

Apache的反向代理和负载均衡其实利用的都是反向代理的原理,至于什么叫做反向代理可以点此 http://baike.baidu.com/view/1165595.htm
关键需要加载下面三个模块
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 
mod_proxy 提供代理服务器功能,mod_proxy_balancer 提供负载均衡功能,mod_proxy_http 让代理服务器能支持HTTP协议。

打开httpd.conf文件,取消下面四行的注释,用以打开代理所需的.so支持模块(没找到的则直接添加)。 
View Code 
#LoadModule proxy_http_module modules/mod_proxy_http.so 
#LoadModule proxy_connect_module modules/mod_proxy_connect.so 
#LoadModule proxy_module modules/mod_proxy.so 
#LoadModule proxy_module modules/mod_proxy_blancer.so 


将Apache作为LoadBalance前置机有三种不同的部署方式

1)轮询均衡策略的配置

进入Apache的conf目录,打开httpd.conf文件,在文件的末尾加入:

ProxyPass / balancer://proxy/         #注意这里以"/"结尾


       BalancerMember http://192.168.0.201:8080/

       BalancerMember http://192.168.0.202:8080/


我们来观察上述的参数“ProxyPass / balancer://proxy/”,其中,“ProxyPass”是配置虚拟服务器的命令,“/”代表发送Web请求的URL前缀,如:http://myserver/或者http://myserver/aaa,这些URL都将符合上述过滤条件;“balancer://proxy/”表示要配置负载均衡,proxy代表负载均衡名;BalancerMember 及其后面的URL表示要配置的后台服务器,其中URL为后台服务器请求时的URL。以上面的配置为例,实现负载均衡的原理如下:

假设Apache接收到http://localhost/aaa请求,由于该请求满足ProxyPass条件(其URL前缀为“/”),该请求会被分发到后台某一个BalancerMember,譬如,该请求可能会转发到 http://192.168.0.201:8080/aaa进行处理。当第二个满足条件的URL请求过来时,该请求可能会被分发到另外一台BalancerMember,譬如,可能会转发到http://192.168.0.202:8080/。如此循环反复,便实现了负载均衡的机制。

2) 按权重分配均衡策略的配置

ProxyPass / balancer://proxy/         #注意这里以"/"结尾


        BalancerMember http://192.168.0.201:8080/  loadfactor=3

        BalancerMember http://192.168.0.202:8080/  loadfactor=1


参数”loadfactor”表示后台服务器负载到由Apache发送请求的权值,该值默认为1,可以将该值设置为1到100之间的任何值。以上面的配置为例,介绍如何实现按权重分配的负载均衡,现假设Apache收到http://myserver/aaa 4次这样的请求,该请求分别被负载到后台服务器,则有3次连续的这样请求被负载到BalancerMember为http://192.168.0.201:8080的服务器,有1次这样的请求被负载BalancerMember为http://192.168.0.202:8080后台服务器。实现了按照权重连续分配的均衡策略。

3) 权重请求响应负载均衡策略的配置

ProxyPass / balancer://proxy/ lbmethod=bytraffic  #注意这里以"/"结尾


         BalancerMember http://192.168.0.201:8080/  loadfactor=3

         BalancerMember http://192.168.0.202:8080/  loadfactor=1

 

参数“lbmethod=bytraffic”表示后台服务器负载请求和响应的字节数,处理字节数的多少是以权值的方式来表示的。“loadfactor”表示后台服务器处理负载请求和响应字节数的权值,该值默认为1,可以将该值设置在1到100的任何值。根据以上配置是这么进行均衡负载的,假设Apache接收到http://myserver/aaa请求,将请求转发给后台服务器,如果BalancerMember为http://192.168.0.201:8080后台服务器负载到这个请求,那么它处理请求和响应的字节数是BalancerMember为http://192.168.0.202:8080 服务器的3倍(回想(2)均衡配置,(2)是以请求数作为权重负载均衡的,(3)是以流量为权重负载均衡的,这是最大的区别)。
参数“lbmethod”可以通过不同的赋值,设置不同的算法实现负载均衡,比方说按照请求次数,或者按照流量均衡
lbmethod可能的取值有: 
lbmethod=byrequests 按照请求次数均衡(默认) 
lbmethod=bytraffic 按照流量均衡 
lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)

注:每次修改httpd.conf,用apachectl –k restart重新启动Apache。

proxy、proxy_blancer和mod_jk的比较
proxy  缺点:当其中一台tomcat停止运行的时候,apache仍然会转发请求过去,导致502网关错误。但是只要服务器再启动就不存在这个问题。
mod_jk 优点:Apache 会自动检测到停止掉的tomcat,然后不再发请求过去。
       缺点:当停止掉的tomcat服务器再次启动的时候,Apache检测不到,仍然不会转发请求过去(验证过,不会这样)。
proxy和mod_jk 共同优点:可以只将Apache置于公网,节省公网IP地址资源。可以通过设置来实现Apache专门负责处理静态网页,让Tomcat专门负责处理jsp和servlet等动态请求。
              共同缺点:如果前置Apache代理服务器停止运行,所有集群服务将无法对外提供。
proxy和mod_jk 对静态页面请求的处理,都可以通设置来选取一个尽可能优化的效果。
mod_proxy_balancer和mod_jk 都需要修改tomcat的配置文件配合
这三种Tomcat集群方式对实现最佳负载均衡都有一定不足,mod_proxy_balancer和mod_jk相对好些,mod_jk的设置能力更强些。lbfactor参数来分配请求任务。
apache自带mod_proxy功能模块中目前只可以实现两种不同的负载均衡集群实现方式,第一种是分工合作的的形式,通过各台主机负责不同的任务而实现任务分工。第二种是不同的机器在担任同样的任务,某台机器出现故障主机可以自动检测到将不会影响到客户端,而第一种却不能实现但第一种实现方式的优点在于他是主服务器负担相应没第二种大,因为它只是提供跳转指路功能,形象的说他不给你带路只是告诉你有条路可以到,但到了那是否可以看到你见的人他已经不会去管你了。相比之下第二种性能要比第一种会好很多;但他们都有个共同点都是一托N形式来完成任务的所以你的主机性能一定要好。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9399028/viewspace-773993/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9399028/viewspace-773993/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值