apache的负载均衡配置

下载: http://httpd.apache.org/ (使用2.2版本进行测试)
文档: http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html

Apache2.2\conf\httpd.conf

1. 启用需要的模块 (找到相应的模块,取消注释即可)

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

#这个是用于新建cookie做session sticky用的,如果使用已有的web server的cookie如JSESSIONID则不需要启用。
LoadModule headers_module modules/mod_headers.so

2. 配置负载参数

/test:代理路径
lbmethod:目前有三种选择,byrequests,bytraffic,bybusyness
route:负载成员的标识名,用于做session sticky
Header:如下配置语义是指当临时变量BALANCER_ROUTE_CHANGED被设置也就是初次建立连接或是上次负载服务器宕掉切换负载服务器的时候,创建cookie名叫ROUTEID,值为 .后加配置的route值,如Set-Cookie ROUTEID=.node1
stickysession:session标识cookie名

Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://cluster_test>
BalancerMember http://192.168.1.6:8000/test loadfactor=3 route=node1
BalancerMember http://192.168.1.6:9000/test loadfactor=1 route=node2
</Proxy>
ProxyPass /test balancer://cluster_test lbmethod=byrequests stickysession=ROUTEID

还有以下几个属性可以配置:
nofailover 默认是off,表示开启失效转移功能,关闭(on)的话如果所选负载成员宕掉,会返回503 Service Temp Unavaliable错误

failonstatus可以指定哪些负载成员响应HTTP状态码可以视为负载成员宕掉,如404,500等,默认只视连接错误为负载成员宕掉

注意如果apache判定负载成员宕掉,默认1分钟后会重新尝试使用之前宕掉的负载成员。
而且对于 failonstatus这种情形,只有下次请求的时候才会做到失效转移,第一次还是会给客户端发回对应的错误信息如500或404。

补充:我们也可以使用负载成员服务器自带的session cookie如JSESSIONID,以下是针对tomcat的配置。
Apache2.2\conf\httpd.conf

<Proxy balancer://cluster_test>
BalancerMember http://192.168.1.6:8000/test loadfactor=3 route=node1
BalancerMember http://192.168.1.6:9000/test loadfactor=1 route=node2
</Proxy>
ProxyPass /test balancer://cluster_test lbmethod=byrequests stickysession= JSESSIONID

apache-tomcat-6.0.18\conf\server.xml
<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">  

这样 JSESSIONID的值后面就会加上.node1或是.node2如
JSESSIONID=3E5F7CC704192E0BFBAF1190A1EF513A .node1

注意JSESSIONID区分大小写。


猜你喜欢

转载自steven2011.iteye.com/blog/1296588