最近一直在鼓捣自己的项目,闲来无聊就试了试集群,但是不巧的就是碰到tomcat集群session没有共享的问题。
其实,解决这个问题也很简单,有很多方法都可以解决。一、利用tomcat自带的广播multicast;二、在使用集群分发请求的时候,将同一IP的请求转发到同一台机器上;三、使用redis,memcache等复制session。
因为自己的项目比较小,所以这里就采用了第一种方案。这种方案的配置很小,首先我的环境是:
操作系统:win10;
tomcat1:D:\tomcat\apache-tomcat-7.0.68-sts
tomcat1:D:\tomcat\apache-tomcat-7.0.68-sts-2
nginx:D:\Server\nginx-1.8.1
需要配置的就是在其中一个tomcat上配置:
(解开Cluster 注释)
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
<Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="9090" frequency="500" dropTime="3000"/> </Channel></Cluster>
然后在项目的web.xml中加上节点:
<distributable/>
然后启动就可以了。
说明一下的是228.0.0.4是一个保留地址,这里tomcat用这个地址来广播。
以上这些tomcat的官方文档(docs/cluster-howto.html)有更详尽的说明