Aapche2.4.x实现负载均衡

来源:互联网 发布:php excel多级下拉版 编辑:程序博客网 时间:2024/06/07 09:33
首先修改httpd.conf,启用负载均衡相关模块 

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 

LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

LoadModule slotmem_shm_module modules/mod_slotmem_shm.so


然后在httpd.conf文件末尾增加以下内容: 

ProxyRequests Off #启用反向代理

ProxyPass / balancer://proxy/#协议地址,可以随便定义。ProxyPass后的“/”为www目录
<Proxy balancer://proxy
BalancerMember http://node-a.myserver.com:8080#第一台IP地址,非本台IP地址
BalancerMember http://node-b.myserver.com:8080 #第二台IP地址,非本台IP地址
</Proxy> 


1.负载比例分配

如果不想平均分配怎么办?给 BalancerMember 加上 loadfactor 参数即可,取值范围为1-100。比如你有两台服务器,负载分配比例为 7:3,只需这样设置:

ProxyRequests Off

ProxyPass / balancer://proxy/

<Proxy balancer://proxy
BalancerMember http://node-a.myserver.com:8080 loadfactor=7 
BalancerMember http://node-b.myserver.com:8080 loadfactor=3
</Proxy> 


2.负载分配算法

默认情况下,负载均衡会尽量让各个服务器接受的请求次数满足预设的比例。如果要改变算法,可以使用 lbmethod 属性。如: 

ProxyRequests Off

ProxyPass / balancer://

<Proxy balancer://proxy
BalancerMember http://node-a.myserver.com:8080 loadfactor=7 
BalancerMember http://node-b.myserver.com:8080 loadfactor=3
</Proxy> 

ProxySet lbmethod=bytraffic


lbmethod可能的取值有: 

lbmethod=byrequests 按照请求次数均衡(默认) 
lbmethod=bytraffic 按照流量均衡 
lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器) 

各种算法的原理请参见Apache的文档。


3.热备份(Hot Standby) 

热备份的实现很简单,只需添加 status=+H 属性,就可以把某台服务器指定为备份服务器: 

ProxyRequests Off

ProxyPass / balancer://

<Proxy balancer://proxy
BalancerMember http://node-a.myserver.com:8080 
BalancerMember http://node-b.myserver.com:8080 status=+H
</Proxy> 

node-a为主服务器,node-b为备用服务器,当node-a宕机后,所有请求会转发给node-b,如果node-a恢复后,会继续使用node-a


原创粉丝点击