|
tomcat有cluster和loadbalance两种方案.
cluster(http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html)通过组播方式进行session同步实现高可用性,但是一般的交换机都将组播关闭了,如果有这种需求,需要开启交换机此功能。因为组播对交换机资源消耗很大,所以如果cluster中的tomcat服务器很多,会影响session同步效率.
loadbalance实现负载均衡(可以根据不同的sessionID分配到同一个tomcat上)。因为缺省session信息会保存到tomcat自己内存中,无法实现高可用性。如果需要高可用性可以将所有session信息存储到一起,放到cache服务器或者数据库服务器中。
memcached session manager
我的环境是nginx 负载多台tomcat(2台机器,2个应用,8个tomcat) .
地址:http://code.google.com/p/memcached-session-manager
安装和使用参见http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration.
下面是我的一点摘抄总结
优势
摘自http://blog.csdn.net/small_love/article/details/6662686
1、支持Tomcat6和Tomcat7
2、操作粘性或不黏性Session
3、没有单点故障
4、Tomcat的故障转移
5、Memcached的故障转移
6、可插拔的Session序列化
7、支持异步保存Session
8、Sessions发送到Memcached如果他确实修改了
9、JMX管理和监控
使用
1:首先安装 memcached 和nginx
2:下载下面的jar包放到%TOMCAT_HOMT%\lib下
http://spymemcached.googlecode.com/files/memcached-2.6.jar
memcached-2.6.jar
http://code.google.com/p/memcached-session-manager/downloads/list
javolution-5.4.3.1.jar
memcached-session-manager-1.5.1.jar
memcached-session-manager-tc7-1.5.1.jar(根据你的tomcat版本选择 tc7 是tomcat7)
msm-javolution-serializer-1.5.1.jar
msm-kryo-serializer-1.5.1.jar
msm-xstream-serializer-1.5.1.jar
官方给出多种序列化方案,kryo的效率比较高,详见 http://code.google.com/p/memcached-session-manager/wiki/SerializationStrategies
3:配置tomcat context.xml 或者 server.xml中的context标签
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:ip:11211,n2:ip:11212"
requestUriIgnorePattern=".*/.(png|gif|jpg|css|js|swf)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false"/>
4.启动tomcat 查看sessionid
JSESSIONID: 6353107A4C57323148D900274400DA61-n1.f230
其实是修改tomcat的session存储机制 n1是memcached的节点名称,f230是jvmRoute |
|
|