You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Nilson Uehara <ni...@gmail.com> on 2014/10/29 18:04:30 UTC
Tomcat7 cluster don't replicates session
I have a Ubuntu with 2 Tomcat7 with a cluster configurations.
The balancer is Apache MOD_JK.
*SERVER.XML:*
<Engine name="Catalina" defaultHost="localhost" jvmRoute="no0">
<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="30000"/>
<Receiver
className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="10.0.2.15"
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.TcpPingInterceptor"/>
<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="/home/nilson/war-temp/"
deployDir="/home/nilson/war-deploy/"
watchDir="/home/nilson/war-listen/"
watchEnabled="false"/-->
<ClusterListener
className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener
className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
In server.xml of tomcat2, the ports are 8105, 8109 and 8180 and
jvmRoute="no1" and port="4002"
*WORKERS.PROPERTIES:*
worker.list=no0, no1, cluster
worker.cluster.type=lb
worker.cluster.balance_workers=no0, no1
worker.cluster.sticky_session=1
worker.no0.type=ajp13
worker.no0.host=localhost
worker.no0.port=8009
worker.no0.lbfactor=1
worker.no1.type=ajp13
worker.no1.host=localhost
worker.no1.port=8109
worker.no1.lbfactor=1
*$ route*
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use
Iface
default 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 * 255.255.255.0 U 1 0 0 eth0
224.0.0.0 * 240.0.0.0 U 0 0 0 eth0
*$ ifconfig*
eth0 Link encap:Ethernet HWaddr 08:00:27:d2:22:ac
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fed2:22ac/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:112 errors:0 dropped:0 overruns:0 frame:0
TX packets:164 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:54502 (54.5 KB) TX bytes:19774 (19.7 KB)
*$sudo iptables -L*
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Clusters log
*TOMCAT1-CLUSTER.LOG:* -> http://pastebin.com/w1TV73Qk
*TOMCAT2-CLUSTER.LOG:* -> http://pastebin.com/V7C35LTL
One point I found interesting in the log is:
1. FINE: Received a failure detector
packet:ClusterData[src=org.apache.catalina.tribes.membership.MemberImpl[tcp://{10,
0, 2, 15}:4002,{10, 0, 2, 15},4002, alive=1414598894083, securePort=-1, UDP
Port=-1, id={-127 -84 -80 -93 43 11 68 -77 -65 -49 47 -119 -59 -120 40 19
}, payload={}, command={}, domain={}, ]; id={84 35 -110 45 -81 -92 66 86
-65 -60 -61 68 -70 -31 -59 -92 }; sent=2014-10-29 14:08:14.095]
2. Oct 29, 2014 2:08:14 PM
org.apache.catalina.tribes.transport.nio.NioReplicationTask remoteEof
3. FINE: Channel closed on the remote end, disconnecting
What I understood is that the tomcats are able to communicate and when one
falls the other receives the request with the session of the first
normally. It seems the problem is that tomcat is not able to receive or
read session data, then just resetting it and the value of the session
variable is lost.
PS:
Tks!
Nilson Uehara
Re: Tomcat7 cluster don't replicates session
Posted by João Sávio <jo...@gmail.com>.
Rapaz, sugiro vc perguntar na lista do Tomcat
Abssss
Em 29/10/2014 15:06, "Nilson Uehara" <ni...@gmail.com> escreveu:
> I have a Ubuntu with 2 Tomcat7 with a cluster configurations.
>
> The balancer is Apache MOD_JK.
>
> *SERVER.XML:*
>
> <Engine name="Catalina" defaultHost="localhost" jvmRoute="no0">
> <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="30000"/>
> <Receiver
> className="org.apache.catalina.tribes.transport.nio.NioReceiver"
> address="10.0.2.15"
> 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.TcpPingInterceptor"/>
> <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="/home/nilson/war-temp/"
> deployDir="/home/nilson/war-deploy/"
> watchDir="/home/nilson/war-listen/"
> watchEnabled="false"/-->
> <ClusterListener
>
> className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
> <ClusterListener
> className="org.apache.catalina.ha.session.ClusterSessionListener"/>
> </Cluster>
>
>
> In server.xml of tomcat2, the ports are 8105, 8109 and 8180 and
> jvmRoute="no1" and port="4002"
>
>
>
> *WORKERS.PROPERTIES:*
> worker.list=no0, no1, cluster
>
> worker.cluster.type=lb
> worker.cluster.balance_workers=no0, no1
> worker.cluster.sticky_session=1
>
> worker.no0.type=ajp13
> worker.no0.host=localhost
> worker.no0.port=8009
> worker.no0.lbfactor=1
>
> worker.no1.type=ajp13
> worker.no1.host=localhost
> worker.no1.port=8109
> worker.no1.lbfactor=1
>
>
> *$ route*
> Kernel IP routing table
> Destination Gateway Genmask Flags Metric Ref Use
> Iface
> default 10.0.2.2 0.0.0.0 UG 0 0 0
> eth0
> 10.0.2.0 * 255.255.255.0 U 1 0 0
> eth0
> 224.0.0.0 * 240.0.0.0 U 0 0 0
> eth0
>
>
> *$ ifconfig*
> eth0 Link encap:Ethernet HWaddr 08:00:27:d2:22:ac
> inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
> inet6 addr: fe80::a00:27ff:fed2:22ac/64 Scope:Link
> UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
> RX packets:112 errors:0 dropped:0 overruns:0 frame:0
> TX packets:164 errors:0 dropped:0 overruns:0 carrier:0
> collisions:0 txqueuelen:1000
> RX bytes:54502 (54.5 KB) TX bytes:19774 (19.7 KB)
>
>
> *$sudo iptables -L*
> Chain INPUT (policy ACCEPT)
> target prot opt source destination
>
> Chain FORWARD (policy ACCEPT)
> target prot opt source destination
>
> Chain OUTPUT (policy ACCEPT)
> target prot opt source destination
>
>
> Clusters log
>
> *TOMCAT1-CLUSTER.LOG:* -> http://pastebin.com/w1TV73Qk
>
> *TOMCAT2-CLUSTER.LOG:* -> http://pastebin.com/V7C35LTL
>
> One point I found interesting in the log is:
>
> 1. FINE: Received a failure detector
>
> packet:ClusterData[src=org.apache.catalina.tribes.membership.MemberImpl[tcp://{10,
> 0, 2, 15}:4002,{10, 0, 2, 15},4002, alive=1414598894083, securePort=-1,
> UDP
> Port=-1, id={-127 -84 -80 -93 43 11 68 -77 -65 -49 47 -119 -59 -120 40
> 19
> }, payload={}, command={}, domain={}, ]; id={84 35 -110 45 -81 -92 66 86
> -65 -60 -61 68 -70 -31 -59 -92 }; sent=2014-10-29 14:08:14.095]
> 2. Oct 29, 2014 2:08:14 PM
> org.apache.catalina.tribes.transport.nio.NioReplicationTask remoteEof
> 3. FINE: Channel closed on the remote end, disconnecting
>
>
> What I understood is that the tomcats are able to communicate and when one
> falls the other receives the request with the session of the first
> normally. It seems the problem is that tomcat is not able to receive or
> read session data, then just resetting it and the value of the session
> variable is lost.
>
> PS:
>
>
> Tks!
> Nilson Uehara
>