第一种,simple tcp cluster (tomcat5以上版本自带的基于tcp广播技术的集群,这种方法比较简单,只需修改server.xml配置文件即可)
添加如下配置代码,多台机器,只需修改第二个address和port即可。
 

         

     expireSessionsOnShutdown="false"  notifyListenersOnReplication="true"/>

 

          

   

                       address="224.0.0.4"

                       port="45564"
                       frequency="500"

                       dropTime="3000"/>

     

                               address="172.31.171.120"

                               port="4000"

                                autoBind="100"                      

                                selectorTimeout="5000"

                                 maxThreads="6"/>

                                                                                                  

           

            

              

          

           

           

                                                                                

 

      

                           filter=""/>

      

 

       

                    tempDir="/tmp/war-temp/"

             deployDir="/tmp/war-deploy/"

                  watchDir="/tmp/war-listen/"

                                                                                          watchEnabled="false"/>

 

         

                   

                           
最后分别在两个tomcat的conf下web.xml文件里面加入如下一行即可:
直接加在之前就可以了
开启网卡组播功能()

Route  add  -net  224.0.0.0  netmask  240.0.0.0  dev  eth0

 
 
第二种,使用memcached共享session
memcached-session-manager 配置
让tomcat 调用memcached 来存储session 早就是一个很成熟的解决方案了,开源的msm 就可以解决这个问题。
官方给出的4 种序列化方案,其中kryo 是效率最高的,具体比较看官方地址:
http://code.google.com/p/memcached-session-manager/wiki/SerializationStrategies
下载地址:
http://code.google.com/p/memcached-session-manager/downloads/list
本次实验用的tomcat版本为6.0.18,以下为我用包,,谁有需要可以联系我,(高版本的自己测试如果不报错,,就可以直接用)
kryo-1.03.jar
reflectasm-0.9.jar
minlog-1.2.jar
kryo-serializers-0.8.jar
memcached-2.5.jar
memcached-session-manager-tc7-1.5.1.jar
msm-kryo-serializer-1.5.1.jar
memcached-session-manager-1.5.1.jar
把以上8个包丢在tomcat的lib文件夹
修改Tomcat的配置文件context.xml,调整成新的session存储方式,在配置文件中标签内加入一下代码(如果memcached跟tomcat不在同一台机器,修改127.0.0.1为memcached所在机器的IP):
 
 
 
memcachedNodes="n1:127.0.0.1:11211"
sticky="false"
lockingMode="auto"
sessionBackupAsync="false"
sessionBackupTimeout="1000"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

在tomcat/conf/logging.properties 文件中添加de.javakaffee.web.msm.level=FINE , 就可以在

catalina.out 的日志中看到详细的session 存取情况。
 
一般前边还有Nginx做转发,分发给不同机器的tomcat上面,,