linux tomcat集群 互相无监听,session无法复制

本文介绍在Windows和Linux环境下使用Apache Tomcat搭建集群的过程,并详细记录了配置集群过程中遇到的问题及解决方法,特别是针对Linux环境下的防火墙设置进行了调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题 : 日前用apache2.4和tomcat7在windows上面完成了一个简单的集群配置,apache负责负载均衡,session的处理方面了也试验了两种方面,单一服务器处理和同步复制处理,都可以成功。
启动第二个tomcat的时候,第一个tomcat日志增加:
信息: Replication member added:org.apache.catalina.tribes.membership.MemberImpl[tcp://{10, 16, 120, 53}:4001,{10, 16, 120, 53},4001, alive=1005, securePort=-1, UDP Port=-1, id={-36 0 -44 37 -76 125 70 125 -83 79 -47 -35 -61 -119 94 -95 }, payload={}, command={}, domain={}, ]

但是用手头的一台PC,安装了centos6.4之后,同样的tomcat配置,启动了第二个tomcat之后,第一个tomcat日志没有任何变化,是否说明这个俩家伙互相没有监听到呢?

继续试验session的复制也无法完成,网上的说法是Linux组播没有开打,执行了route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0之后也仍然没有效果。


<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="auto"
                      port="4000"
                      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>

原因  : 重点检查下Linux的防火墙策略,是否屏蔽了组播

经过查看tomcat配置发现走的端口是46654
修改linux配置:]# /sbin/iptables -I INPUT -p udp --dport 45564 -j ACCEPT
打开端口
保存:# /etc/rc.d/init.d/iptables save
重启俩tomcat就可以解决问题了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值