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
相关推荐
总的来说,“【全套】tomcat集群Session共享”这套资源包含了实现Tomcat集群Session共享所需的全部工具和说明文档,能够帮助开发者有效地解决多实例Tomcat下的Session一致性问题,提升系统的可扩展性和可用性。...
本篇文章将深入探讨Tomcat集群中session共享的解决方案,以及相关的应用知识。 1. **Session复制**:这是最基础的session共享方法。通过配置Tomcat的`cluster`模块,可以设置session复制策略。每当一个session在...
以下是几种常见的Tomcat集群Session共享方案,包括其实现过程、优缺点和可能遇到的问题。 1. **基于Cookie+Redis+Filter解决方案** - 实现过程:用户登录后,将Session ID与用户信息存入Redis,并在客户端设置一个...
这就是“Tomcat集群session共享”的核心需求。本篇将详细介绍如何在Tomcat7中实现基于Redis的Session共享,并涉及相关的jar包。 首先,让我们了解为何需要session共享。在单个Tomcat服务器中,Session信息存储在...
总之,Windows + Nginx + Memcached + Tomcat 集群session共享方案是一个高效且可靠的架构,它能提高系统的可用性,保证用户会话的连续性,是大规模Web应用常见的部署模式。然而,实际部署时,还需要考虑安全性、...
这里的“tomcat集群session共享jar(三个)”指的是实现Tomcat集群间session共享所需的一些关键组件或者库。虽然提供的文件名称列表中只有一个`tomcat-redis-session-manager`,但通常实现session共享可能会涉及多个...
当使用nginx反向代理时,如果配置的权衡策略是ip_hash,而ip_hash是根据ip来维持session的,这个就是会话保持。 在使用此方案时,会有一个问题,就是在调用有异步回调方法的接口时,发出请求的服务器和接到回调的...
标题中的"Tomcat集群Session共享所有文件.zip"表明这是一个关于如何在三台服务器的Tomcat集群中实现Session共享的教程和代码集合。 Session共享的目的是确保用户在集群中的任何一台服务器上操作时,其状态都能被...
memcached-session-manager(MSM) Tomcat集群session共享示例
"tomcat7集群session共享memcache依赖包1.8.3"这个标题正揭示了这样一个解决方案。 首先,让我们深入了解Tomcat7集群。Tomcat7是Apache Tomcat服务器的一个版本,它支持Servlet 3.0和JSP 2.2规范。通过复制应用和...
commons-pool-1.6.jar,commons-pool2-2.2.jar,jedis-2.2.0.jar,tomcat-redis-session-manager-1.2-tomcat-7.jar tomcat集群,实现session共享
集群session共享原理** 当用户访问应用时,Nginx将请求分发到一个Tomcat实例。该实例将session数据保存在Memcached中,并将session ID返回给用户。之后,无论用户请求哪个Tomcat实例,只要session ID相同,其他实例...
本文将详细介绍如何使用Spring、Redis和Nginx来实现Tomcat集群中的Session共享,以及提供相关的源码下载。 首先,我们来看Spring框架。Spring是Java开发中最流行的开源框架之一,它提供了丰富的功能和模块,包括...
描述中提到的“tomcat无缝集成redis实现tomcat集群session管理”,进一步强调了该解决方案的简易性和效率。通过将Redis集成到Tomcat中,可以有效地管理session,避免了传统session复制可能导致的问题,如数据不一致...
tomcat集群使用redis解决session共享问题,压缩包包含redisclient-win32.x86.2.0客户端、Redis-x64-3.2.100服务、tomcat-redis-session以及部署安装文档
本篇文章将详细探讨如何在Redis+Tomcat集群配置中实现Session共享。 首先,我们需要理解什么是Session。Session是Web应用中用于存储用户状态的一种机制,通常用于保存用户的登录信息、购物车等数据。在单台服务器...
tomcat8.5.29 redisclouder集群 session共享集群相关配置文件 亲测可用tomcat8.5.29 redisclouder集群 session共享集群相关配置文件 亲测可用 tomcat8.5.29 redisclouder集群 session共享集群相关配置文件 亲测可用 ...