`
aaron7524
  • 浏览: 64188 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Tomcat 6 多机实现Session复制

阅读更多
session复制
session复制是指tomcat彼此之间通过组播方式将session发到各个tomcat实例上,如果其中一个访问出错,则另外tomcat仍然具有有效的session内容,从而能正常接管其session。坏处是当tomcat实例很多,或者用户在session中有大量操作时,组播发送的信息量十分惊人。

Tomcat的session复制目前有两种类型,他们的配置稍有区别
分别为:org.apache.catalina.ha.session.DeltaManager和org.apache.catalina.ha.session.BackupManager

DeltaManager复制并发送Session数据到集群下所有的节点,这个实现类被证明非常可靠、运行得非常好。不过有个局限性就是集群的节点类型要相同,而且要部署相同的应用程序。

测试环境
Using CATALINA_BASE:   "C:\tomcat_6_1"
Using CATALINA_HOME:   "C:\tomcat_6_1"
Using CATALINA_TMPDIR: "C:\tomcat_6_1\temp"
Using JRE_HOME:        "E:\Program Files\Java\jdk1.6.0_21"
Using CLASSPATH:       "C:\tomcat_6_1\bin\bootstrap.jar"
Server version: Apache Tomcat/6.0.26
JVM Version:    1.6.0_21-b07
JVM Vendor:     Sun Microsystems Inc.


一.DeltaManager
1.<distributable/> 配置
修改${CATALINA_HOME}\conf\web.xml文件,加入标签
<distributable/>
直接加在</web-app>之前
2.修改\conf\server.xml
修改:
<!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->   

为:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
                <Manager className="org.apache.catalina.ha.session.DeltaManager"  expireSessionsOnShutdown="false" notifyListenersOnReplication="true" />
                <Channel className="org.apache.catalina.tribes.group.GroupChannel">
                        <Membership className="org.apache.catalina.tribes.membership.McastService"  [color=darkred]bind="127.0.0.1"[/color]  address="228.0.0.4" port="45564" frequency="500" dropTime="3000" />
                        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="192.168.1.148" port="4005" autoBind="100" selectorTimeout="5000" maxThreads="6" /> 
                        <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                                <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />
                        </Sender>
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" />
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" />
                 </Channel>
 
                <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt" />
                <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve" />
                <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false" />  
                <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" />
                <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener" />
</Cluster>



二.DeltaManager
1.修改:
<!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->   

为:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6"> 
				<Manager className="org.apache.catalina.ha.session.BackupManager"  expireSessionsOnShutdown="false" notifyListenersOnReplication="true" mapSendOptions="6"/> 
				<Channel className="org.apache.catalina.tribes.group.GroupChannel">  
				<Membership className="org.apache.catalina.tribes.membership.McastService" 
                        [color=red] bind="127.0.0.1" [/color]
                         address="228.0.0.4" 
                         port="45564" 
                         frequency="500" 
                         dropTime="3000"/> 
             <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
                       address="auto" 
                       port="4001" 
                       selectorTimeout="100" 
                       maxThreads="6"/> 
             <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> 
               <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" timeout="60000"/>  
             </Sender> 
             <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> 
             <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> 
             <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> 
           </Channel> 
              <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 
                  filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/> 
              <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> 
         </Cluster>

2.<distributable/> 配置
修改web应用里面WEB-INF目录下的web.xml文件,加入标签
<distributable/>
直接加在</web-app>之前



三.最后,其他可能操作,开启网卡组播功能:
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0


参考:
http://wiki.apache.org/tomcat/ClusteringOverview
http://blog.csdn.net/lifetragedy/article/details/7712691
分享到:
评论

相关推荐

    tomcat集群实现session复制

    在IT领域,特别是Web应用服务器的管理与优化中,Tomcat集群实现Session复制是一个关键的技术点,它确保了高可用性和负载均衡,特别是在处理大量并发请求的场景下。本文将深入探讨这一主题,涵盖其原理、配置方法以及...

    Tomcat5集群中的Session复制

    在Tomcat5中,Session复制可以通过IP多点传送(IP multicast)和IP sockets实现。IP多点传送是一种一对多的服务器通讯机制,可以让多服务器向指定IP地址和端口号进行订阅并且监听消息。IP sockets则是一种点对点的...

    tomcat8+memcached session共享

    标题中的“tomcat8+memcached session共享”...其他实例在接收到同一用户的请求时,可以从Memcached中获取session数据,从而实现session的跨服务器共享。这种解决方案可以有效提升大型分布式系统的可扩展性和用户体验。

    TOMCAT+APACHE集成以及session复制

    实现session复制,你可以使用多种方法。在TOMCAT+APACHE的场景下,一种常见的方式是通过TOMCAT的Clustering功能。配置TOMCAT集群,每个节点都会监听其他节点的session更新并同步它们。这需要在TOMCAT的server.xml...

    tomcat cluster 集群 session复制

    而实际情况下,采取Apache 加Tomcat进行负载均衡集群的时候,是可以不用将Session复制到所有的节点里, 比如有六个Tomcat实例 Tomcat1,Tomcat2,Tomcat3,Tomcat4,Tomcat5,Tomcat6 是可以配置成 三组互相复制...

    tomcat6 memcache session manager session共享 jar包下载

    描述中提到,“用于tomcat6 使用memcache 实现session共享的jar包”,这表明这些jar文件是为Tomcat6设计的插件或库,目的是通过Memcache这个内存缓存系统来存储和管理Session数据。Memcache是一个高性能、分布式的...

    tomcat5 session 复制

    Tomcat5 提供了集群(Cluster)功能来实现 Session 的复制,确保用户在不同服务器间的会话状态能够无缝切换。以下是关于 Tomcat5 Session 复制的详细说明: 1. **配置集群组件** 在 `conf/server.xml` 文件中,你...

    Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享

    本篇文章将探讨如何利用Redis、Tomcat和Nginx来实现Session共享,以便在分布式环境中保持用户状态的一致性。 首先,让我们了解一下Session的概念。Session是Web服务器用来跟踪用户状态的一种机制。当用户登录后,...

    nginx实现多个tomcat7直接session共享所需jar包

    2. 在Tomcat的`web.xml`配置文件中添加Session复制的相关配置,例如,引入Redis Session Manager的jar包,并配置相关的session-store-dir和manager类。 3. 配置Nginx,使用上游服务器块(upstream)定义Tomcat实例,...

    tomcat8实现session共享jar包

    此压缩包为tomcat8利用redis实现session共享所需要的jar包,包含(commons-pool2-2.6.0.jar、jedis-2.9.0.jar、tomcat-redis-session-manager.jar)直接将三个jar包复制Tomcat目录lib下面,在修改conf下context.xml...

    Apache负载均衡 Tomcat6的集群和session的复制

    Tomcat可以通过两种方式实现session复制:基于TCP的复制和基于JVM-RMI的复制。前者是通过网络发送session更新,而后者则是利用Java的远程方法调用机制。在`server.xml`配置文件中,需要启用`&lt;Manager&gt;`元素的`...

    一台xp机器实现apache+tomcat session复制.docx

    【Apache + Tomcat Session 复制】:在一台运行Windows XP的计算机上,要实现Apache HTTP Server和Tomcat的负载均衡以及Session复制,通常需要使用Apache的mod_jk模块。这个过程涉及到Apache、Tomcat的配置,以及mod...

    apache+tomcat集群session复制.pdf

    - 使用Tomcat自带的`ClusterManager`实现Session复制。 - 配置每个Tomcat实例中的`server.xml`文件,启用Session复制功能。 - 设置合理的Session超时时间和其他相关参数,以确保集群的稳定性和性能。 #### 六、...

    tomcat7集群实现session共享

    当我们谈论“Tomcat7集群实现session共享”时,我们关注的是如何在多个Tomcat实例之间有效地同步用户会话信息,以便在集群环境中提供高可用性和负载均衡。 首先,理解session共享的重要性。在Web应用中,session是...

    ngnix + memcached + tomcat6负载均衡中session复制依赖jar全

    总之,`ngnix`、`memcached`和`tomcat6`的整合提供了高性能的Web服务环境,通过session复制保证了用户会话的连续性,而`Nginix`的负载均衡则确保了系统的可扩展性和可靠性。对于需要搭建类似环境的开发者来说,了解...

    tomcat-redis-session-manager的jar包-包含Tomcat7和Tomcat8

    此外,为了确保session数据的安全性和一致性,Tomcat-Redis-Session-Manager提供了多种策略,如session过期策略、session复制和故障转移。例如,可以设置session的超时时间,当用户长时间无操作时,session将在Redis...

    Tomcat7+redis实现session共享

    2. **配置Tomcat的session复制策略**:在`Tomcat7`的`server.xml`配置文件中,修改`Manager`元素,添加`org.apache.catalina.session.PersistentManager`作为session管理器。设置`storeDirectory`属性指向一个临时...

    tomcat8集群与redis实现session共享所需Jar包

    标题"tomcat8集群与redis实现session共享所需Jar包"指的是将Redis作为中央存储来保存Tomcat集群中的session数据。Redis因其高性能、轻量级以及丰富的数据结构支持,常被选作session共享的中间件。描述中的"本人已经...

    Tomcat7集群实现共享session,已配置好。

    标题 "Tomcat7集群实现共享session,已配置好" 暗示了这是一个关于在Tomcat7服务器集群环境中实现session共享的配置实例。在多台Tomcat服务器组成的集群中,session共享是解决用户会话在不同服务器之间无缝切换的...

Global site tag (gtag.js) - Google Analytics