tomcat集群的主要方法有三种:
1、采用粘性会话,即某个ip只会访问集群中的某一台机器,这样就可以简单的解决session共享的问题;
2、采用会话共享,目前网上较多的案例是使用memcahed作为共享容器,需要开发以memcahed作为容器的会话管理器,然后配置到tomcat中。
3、采用session复制技术,tomcat本身已支持该功能。
三种方案各有优缺点。第一种存在部分单点问题,如果某台机器崩溃,在此机器的会话将丢失,其他的不受影响;第二种需要额外安装共享容器,如果一台tomcat崩溃,会话仍然可用,但如果会话容器崩溃的话,所有会话都会丢失。对于memcahed,可采用memcached集群方案;第三种方案是tomcat官方介绍的方案,个人感觉只有这个方案真正做到了集群,任何一台tomcat崩溃都不会产生影响,因为是完全备份,这个方案会消耗更多内存和带宽,tomcat官方推荐在集群比较小时采用此方案。
本文介绍第三种方案,参考http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html
在配置文件server.xml的<Engine>或者<Host>添加如下代码
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
这行配置的默认配置如下: