tomcat6上做session复制(集群下)

转载 2017年10月06日 15:29:30

一个应用,部署在了2台tomcat服务器上(2台机器)。通过F5做的负载均衡。出现一个问题,从客户端登录后,在操作过程中很容易跳到重新登录页面。问题很快查明了,2个tomcat没做session复制。而F5只负责转发,不负责session复制。

那么就自己来做session复制吧。网上关于session复制的文章很多。tomcat官网也有介绍。照样画猫,把配置拷贝过来。在conf/server.xml上增加了

<Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">
    <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"
                        address="228.0.0.4"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="10.10.15.50"
                      port="4001"
                      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=""/>
          <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>

然后在项目中的web.xml中添加

<distributable/><!-- session共享 -->

另一台tomcat也是增加这样的配置,只是 jvmRoute="s1"改成jvmRoute="s2", address="10.10.15.50"改成address="10.10.15.48"也就是机器本身的ip地址。 port="4001"不变。

配置好后,分别启动起来。通过log输出看,两个tomcat互相通信了,session应该也复制了。但是测试,发现没有想要的效果。测试方式很简单,同一个jsp页面,在48那台机器上输出123,在50那台机器上输出456。这样就知道自己这次的访问被F5分配到哪个机器了。登录系统,访问那个测试页面,输出123。就知道被分配到48机器上了。把48那台机器的tomcat进程kill掉。再访问那个页面,被跳转到登录页面了。说明复制session没起效果。转发到50后,没有session。

后来又继续搜索,有篇文章说在conf/web.xml上还要加入 <distributable/>,照样修改web/.xml。再部署,重启。然后登录。接着继续上面的测试。登录系统,访问那个测试页面,输出123。把48那台机器的tomcat进程kill掉。再访问那个页面,输出是456了。哈哈,终于神奇的事情终于发生了。然后启动48,又把50kill掉。接着访问那个页面,输出是123。说明2台tomcat之间session复制成功。verry good。

nginx-1.4.2+tomcat6+memcache做服务器集群以及session共享

简介 使用nginx做分发器,tomcat6做服务器,使用memcached实现session共享 1.搭建环境:windows 2.准备: 下载nginx-1.4.2,解压到E:\serve...

Nginx Tomcat 集群的Session 复制

  • 2013年08月24日 12:41
  • 1KB
  • 下载

Windows下Apache2.2+Tomcat6配置集群、负载均衡、session共享

转自:http://yulinyyb001.iteye.com/blog/1308609 公司网站有一个需求:要保证网站7*24小时不间断的运行,服务器更新时,对用户是透明的。   ...

Tomcat 6 集群与Session共享官方文档翻译

Apache Tomcat 6.0 Clustering/Session Replication HOW-TO Translated By:Allchin Email:citi007@126....
  • citi007
  • citi007
  • 2011年08月02日 09:14
  • 5

Nginx+Tomcat7(tomcat6)+Memcached集群Session共享

Nginx+Tomcat7+Memcached集群Session共享,主要是利用memcached-session-manager 开源tomcat插件改变tomcat原始的session存储机制,将...

Tomcat6.x+memcached集群session管理(memcached-session-manager)

Tomcat6.x+memcached集群session管理(memcached-session-manager)

nginx+tomcat集群负载均衡(实现session复制)

http://blog.chinaunix.net/space.php?uid=303837&do=blog&id=2441480   Nginx+tomcat 做负载均衡 架构描述 前端一台...

Tomcat集群Cluster实现原理剖析(session复制实现方式)

对于WEB应用集群的技术实现而言,最大的难点就是如何能在集群中的多个节点之间保持数据的一致性,会话(Session)信息是这些数据中最重要的一块。要实现这一点,大体上有两种方式,一种是把所有Sessi...

Tomcat集群之Session复制配置

因为最近的项目要用到多web服务器实现访问负载和集群,负载调度使用的是LVS,而非apache的负载调度,因为在高访问量和大并发量的时候LVS的性能比APACHE好。然后在web服务器上是使用tomc...
  • bayaci
  • bayaci
  • 2011年12月18日 23:55
  • 2263

windows下nginx+tomcat集群,实现session复制共享

两台不同服务器  ip1、ip2。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tomcat6上做session复制(集群下)
举报原因:
原因补充:

(最多只允许输入30个字)