下载: [url]http://httpd.apache.org/[/url] (使用2.2版本进行测试)
文档: [url]http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html[/url]
[b]Apache2.2\conf\httpd.conf[/b]
[b]1. 启用需要的模块[/b] (找到相应的模块,取消注释即可)
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
[b]2. 配置负载参数[/b]
[b]/test[/b]:代理路径
[b]lbmethod[/b]:目前有三种选择,byrequests,bytraffic,bybusyness
[b]route[/b]:负载成员的标识名,用于做session sticky
[b]Header[/b]:如下配置语义是指当临时变量BALANCER_ROUTE_CHANGED被设置也就是初次建立连接或是上次负载服务器宕掉切换负载服务器的时候,创建cookie名叫ROUTEID,值为[b].[/b]后加配置的route值,如Set-Cookie ROUTEID=.node1
[b]stickysession[/b]: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
还有以下几个属性可以配置:
[b]nofailover [/b]默认是off,表示开启失效转移功能,关闭(on)的话如果所选负载成员宕掉,会返回503 Service Temp Unavaliable错误
[b]failonstatus[/b]可以指定哪些负载成员响应HTTP状态码可以视为负载成员宕掉,如404,500等,默认只视连接错误为负载成员宕掉
注意如果apache判定负载成员宕掉,默认1分钟后会重新尝试使用之前宕掉的负载成员。
而且对于[b]failonstatus[/b]这种情形,只有下次请求的时候才会做到失效转移,第一次还是会给客户端发回对应的错误信息如500或404。
补充:我们也可以使用负载成员服务器自带的session cookie如JSESSIONID,以下是针对tomcat的配置。
[b]Apache2.2\conf\httpd.conf[/b]
<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=[b]JSESSIONID[/b]
[b]apache-tomcat-6.0.18\conf\server.xml[/b]
<Engine name="Catalina" defaultHost="localhost" [b]jvmRoute="node1"[/b]>
这样 JSESSIONID的值后面就会加上.node1或是.node2如
JSESSIONID=3E5F7CC704192E0BFBAF1190A1EF513A[b].node1[/b]
注意JSESSIONID区分大小写。
文档: [url]http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html[/url]
[b]Apache2.2\conf\httpd.conf[/b]
[b]1. 启用需要的模块[/b] (找到相应的模块,取消注释即可)
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
[b]2. 配置负载参数[/b]
[b]/test[/b]:代理路径
[b]lbmethod[/b]:目前有三种选择,byrequests,bytraffic,bybusyness
[b]route[/b]:负载成员的标识名,用于做session sticky
[b]Header[/b]:如下配置语义是指当临时变量BALANCER_ROUTE_CHANGED被设置也就是初次建立连接或是上次负载服务器宕掉切换负载服务器的时候,创建cookie名叫ROUTEID,值为[b].[/b]后加配置的route值,如Set-Cookie ROUTEID=.node1
[b]stickysession[/b]: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
还有以下几个属性可以配置:
[b]nofailover [/b]默认是off,表示开启失效转移功能,关闭(on)的话如果所选负载成员宕掉,会返回503 Service Temp Unavaliable错误
[b]failonstatus[/b]可以指定哪些负载成员响应HTTP状态码可以视为负载成员宕掉,如404,500等,默认只视连接错误为负载成员宕掉
注意如果apache判定负载成员宕掉,默认1分钟后会重新尝试使用之前宕掉的负载成员。
而且对于[b]failonstatus[/b]这种情形,只有下次请求的时候才会做到失效转移,第一次还是会给客户端发回对应的错误信息如500或404。
补充:我们也可以使用负载成员服务器自带的session cookie如JSESSIONID,以下是针对tomcat的配置。
[b]Apache2.2\conf\httpd.conf[/b]
<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=[b]JSESSIONID[/b]
[b]apache-tomcat-6.0.18\conf\server.xml[/b]
<Engine name="Catalina" defaultHost="localhost" [b]jvmRoute="node1"[/b]>
这样 JSESSIONID的值后面就会加上.node1或是.node2如
JSESSIONID=3E5F7CC704192E0BFBAF1190A1EF513A[b].node1[/b]
注意JSESSIONID区分大小写。