APACHE(proxy_ajp_stickysession) + TOMCAT实现高可用网站或管理系统集群
?
?
1.基础环境安装设置
?
操作系统环境,APACHE安装,TOMCAT集群安装,TOMCAT测试工程请参见:
http://zp820705.iteye.com/blog/1347417
?
2.TOMCAT配置
Tomcat集群配置后端Tomcat Server为支持AJP的独立服务,前端Apache配置为粘性会话(sticky-session),Tomcat不配置Cluster配置和Session复制。
?
配置Tomcat1的server.xml
修改:
?
为:
?
??
配置Tomcat2的server.xml
修改:
为:
?
注意:
后端tomcat服务配置文件server.xml中指定的端口后用于接收Apache的代理转发请求,在后续apache配置中使用,本例中tomcat1和tomcat2都使用相同的配置:8009
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
?
3.APACHE配置
apache的配置方式还是采用vhost方式配置,主配置文件(conf/httpd.conf)引用(include)vhost子配置文件(conf/extra/httpd-vhosts.conf)方式.
?
Apache的编译请参考:http://zp820705.iteye.com/blog/1347749
apache编译为支持Proxy后的module情况:
?
?
?stickysession=JSESSIONID|jsessionid
apache采用粘性会话配置,后端服务器是tomcat,指定sessionId参数为JSESSIONID和jsessionid,其中JSESSIONID是浏览器支持cookie方式session处理,jsessionid是客户端采用URL参数方式session处理。
?
nofailover=Off
表示apache-proxy支持failover,模式是支持的,可以不配置。
?
route=tomcat1和route=tomcat2
表示后端tomcat服务处理标志,与具体后端tomcat服务中的server.xml配置文件中的Engine节点配置的jvmRoute属性相同。
?
?
4.测试
?
浏览器访问测试
http://10.10.10.11/cluster/index.jsp
?
stickysession测试
访问http://10.10.10.11/cluster/index.jsp,反复刷新,应该是同一后端服务器支持服务。
使用restlet工具restclient(http://code.google.com/p/rest-client/)访问http://10.10.10.11/cluster/index.jsp,查看返回报文:
sessionId为:
Set-CookieJSESSIONID=B7EACFABF5543D0E5C19155CCDC82D02.tomcat1; Path=/cluster红色tomcat1表示指定由后端tomcat1服务。
?
?
?
?