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。

tomcat6上做session复制

1.修改conf/server.xml文件,把cluster部份注释去掉,修改tcpListenAddress和tcpListenPort参数。如果有多网卡或虚拟网卡,增加下面参数mcastBindA...
  • keda8997110
  • keda8997110
  • 2013年01月26日 12:43
  • 1666

apache2.2.x+tomcat7.0.x集群+session复制

apache http server下载地址 http://httpd.apache.org/download.cgi#apache22 这里下载的是httpd-2.2.21-win32-...
  • Mr__fang
  • Mr__fang
  • 2014年10月23日 14:50
  • 984

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

两台不同服务器  ip1、ip2。
  • p793049488
  • p793049488
  • 2014年09月16日 11:20
  • 5413

tomcat7集群(session复制)

tomcat集群的主要方法有三种: 1、采用粘性会话,即某个ip只会访问集群中的某一台机器,这样就可以简单的解决session共享的问题; 2、采用会话共享,目前网上较多的案例是使用memcahed作...
  • fengwind1
  • fengwind1
  • 2016年08月09日 16:15
  • 6237

apache+Tomcat集群下session复制

因为工作需要,本人需要在本机上做一个apache负载均衡Http请求,交给Tomcat集群处理,并且Session要在不同的Tomcat上进行复制的Demo。现贴出过程如下:...
  • weiweiai123456
  • weiweiai123456
  • 2014年12月05日 18:09
  • 2705

配置WebLogic Server 11g 集群、Session复制(Windows)

1.    预备知识    4 2.    本文环境    5 3.    配置说明    6 3.1.    集群定义    6 3.2.    集群的好处    7 ...
  • z69183787
  • z69183787
  • 2014年09月11日 16:48
  • 3289

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

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

tomcat6 redis session共享

准备工作 下载 安装redis   windows下载地址为:https://github.com/ServiceStack/redis-windows  两个tomcat6 jar包 commons...
  • A70235
  • A70235
  • 2017年02月15日 16:07
  • 1071

Weblogic 12c 集群部署和session复制

在上一篇Weblogic12c集群搭建的基础上,这一篇介绍Weblogic12c集群应用的部署和session复制.1、启动服务首先在weblogic12c控制台,启动受托管服务server1、ser...
  • yulei_qq
  • yulei_qq
  • 2016年10月10日 17:30
  • 2867

weblogic之SESSION复制

在weblogic.xml中增加如下配置:        PersistentStoreType    replicated 
  • aqiao95
  • aqiao95
  • 2007年04月28日 14:01
  • 3014
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tomcat6上做session复制(集群下)
举报原因:
原因补充:

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