tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Filip Hanik - Dev Lists <devli...@hanik.com>
Subject Re: Tomcat 5.5.15 Clustering ?
Date Wed, 15 Feb 2006 15:24:40 GMT
It is a multicast problem, your second box is not receiving any 
multicast messages, only from itself.

To run this test properly, you will need to shutdown your tomcats, then 
run MCaster on both machines at the same time,
if both machines are not receiving messages from each other (like your 
example below) then you have a multicast problem

Filip


David Avenante wrote:
> Thank you very much for the toolkit ;)
> My feeling was also on my multicast support.
> But i' ve read more documentation for my Linux
> and i think that my servers support MULTICAST like
> explaned on my first message (compile kernel support
> and add route + test with tcpdump)
>
> So this toolkit seems confirme the fact that my servers support multicast.
> When i test on agnes with target ovea-inspiron i've:
>
> java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 ovea-inspiron
> Usage MCaster [address port message]
> BEGIN TO RECEIVE
> SENT:ovea-inspiron1
> RECEIVED:ovea-inspiron1 FROM /192.168.2.102:45564
> SENT:ovea-inspiron2
> BEGIN TO RECEIVE
> RECEIVED:(gtcp://192.168.2.103:400cluster1 FROM /192.168.2.103:45564
> SENT:ovea-inspiron3
> BEGIN TO RECEIVE
> RECEIVED:(ftcp://192.168.2.102:400catalina FROM /192.168.2.102:45564
> SENT:ovea-inspiron4
> BEGIN TO RECEIVE
> RECEIVED:(gtcp://192.168.2.103:400cluster1 FROM /192.168.2.103:45564
>
> And when i test on ovea-inspiron with target agnes i've:
> java -cp tomcat-replication.jar MCaster 224.0.0.1 <http://228.1.2.3/> 45566
> agnes
>  Usage MCaster [address port message]
> BEGIN TO RECEIVE
> SENT:agnes1
> RECEIVED:agnes1 FROM /192.168.2.103:45566
> SENT:agnes2
> BEGIN TO RECEIVE
> RECEIVED:agnes2 FROM /192.168.2.103:45566
> SENT:agnes3
> BEGIN TO RECEIVE
> RECEIVED:agnes3 FROM /192.168.2.103:45566
> SENT:agnes4
> BEGIN TO RECEIVE
> RECEIVED:agnes4 FROM /192.168.2.103:45566
> SENT:agnes5
> BEGIN TO RECEIVE
> RECEIVED:agnes5 FROM /192.168.2.103:45566
> SENT:agnes6
> BEGIN TO RECEIVE
> RECEIVED:agnes6 FROM /192.168.2.103:45566
> SENT:agnes7
> BEGIN TO RECEIVE
> RECEIVED:agnes7 FROM /192.168.2.103:45566
>
> So it's not a multicast probleme but most a configuration probleme.
> ovea-inspiron sent is ok but the received is empty ?
> Some suggestion(s) ?
>
> Thank's for the progress
>
> On 2/15/06, Filip Hanik - Dev Lists <devlists@hanik.com> wrote:
>   
>>> 1)    Clustering need sticky_session=true and is only design for
>>>       
>> failover (see servlet spec).
>>
>> Not true for Tomcat, using replicationMode="pooled" and
>> waitForAck="true", you can do round robin non sticky load balancing as
>> long as you don't have more than one thread accessing the session at any
>> point in time.
>>
>>     
>>> INFO: Manager [/cluster-1.0-SNAPSHOT]: skipping state transfer. No
>>>       
>> members active in cluster group.
>>
>> yes, your multicast isn't working, or it should have said that you had a
>> member.
>> Take a look at the bottom of the page and run the MCaster test included
>> in a super old version of Tomcat 4 clustering.
>> http://people.apache.org/~fhanik/
>>
>> On multihomed hosts, it can get a little tricky to get multicasting
>> working and you might have to setup some routes to help. Check with your
>> sysadmin.
>>
>> Filip
>>
>>
>>
>> Peter Rossbach wrote:
>>     
>>> Hey,
>>>
>>> 1)    Clustering need sticky_session=true and is only design for
>>> failover (see servlet spec).
>>> 2)    Are your sure that MULTICAST is enabled at eth0?
>>>
>>> regards
>>> Peter
>>> pr@objektpark.de
>>>
>>>
>>>
>>> Am 15.02.2006 um 02:26 schrieb David Avenante:
>>>
>>>       
>>>> Hi,
>>>>
>>>> I' ve try to use Tomcat 5.5.15 in cluster mod. And after some work on
>>>> configuration and test
>>>> i seems to be on limit of my all possibilities ;)
>>>>
>>>> I try to use two tomcat in cluster with apache web server and mod_jk as
>>>> connector.
>>>>
>>>> my Apache configuration look like :
>>>>
>>>>
>>>> # workers.properties
>>>>
>>>> ps=/
>>>>
>>>> # List the workers name
>>>> worker.list=loadbalancer
>>>>
>>>> # ----------------
>>>> # First worker
>>>> # ----------------
>>>> worker.node01.port=8009
>>>> worker.node01.host=agnes
>>>> worker.node01.type=ajp13
>>>> worker.node01.lbfactor=1
>>>> #worker.node01.domain=cluster1
>>>> # ----------------
>>>> # Second worker
>>>> # ----------------
>>>> worker.node02.port=9009
>>>> worker.node02.host=ovea-inspiron
>>>> worker.node02.type=ajp13
>>>> worker.node02.lbfactor=1
>>>> #worker.node02.domain=cluster1
>>>> # ----------------------
>>>> # Load Balancer worker
>>>> # ----------------------
>>>> worker.loadbalancer.type=lb
>>>> worker.loadbalancer.sticky_session=false
>>>> worker.loadbalancer.balanced_workers=node01,node02
>>>>
>>>> As you can see i use two server ('agnes' IP : 192.168.2.102 and
>>>> 'ovea-inspiron' IP : 192.168.2.103)
>>>> I' ve coded a little aplication who read un file and create a
>>>> sessions if
>>>> session not exist.
>>>>
>>>> If i use the system in mod load balancing (with no cluster mod
>>>>         
>> activate)
>>     
>>>> all is great (my config is of course
>>>> worker.loadbalancer.sticky_session=true
>>>> )
>>>>
>>>> So system run with session affinitu but the two server are accessible
>>>>         
>> ;)
>>     
>>>> Now i try to configure as cluster mode with session replication
>>>> (my config is now worker.loadbalancer.sticky_session=3Dfalse)
>>>>
>>>> I configure my to server.xml like that :
>>>> agnes (IP : 192.168.2.102)
>>>>
>>>> <Server port="8005" shutdown="SHUTDOWN">
>>>>   <GlobalNamingResources>
>>>>     <Resource name="UserDatabase" auth="Container"
>>>>                    type="org.apache.catalina.UserDatabase"
>>>>                    description="User database that can be updated and
>>>> saved"
>>>>                    factory="
>>>> org.apache.catalina.users.MemoryUserDatabaseFactory"
>>>>                    pathname="conf/tomcat-users.xml" />
>>>>
>>>>   </GlobalNamingResources>
>>>>
>>>>   <Service name="Catalina">
>>>>     <Connector port="8080" maxHttpHeaderSize="8192"
>>>>                       maxThreads="150" minSpareThreads="25"
>>>>                       maxSpareThreads="75"
>>>>                       enableLookups="false" redirectPort="8443"
>>>> acceptCount="100"
>>>>                       connectionTimeout="20000"
>>>> disableUploadTimeout="true"
>>>> />
>>>>
>>>>     <Connector port="8009" enableLookups="false"
>>>>                       redirectPort="8443" protocol="AJP/1.3" />
>>>>
>>>>     <Engine name="Catalina" defaultHost="localhost" jvmRoute="node01"
>
>>>>
>>>>       <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
>>>>                    resourceName="UserDatabase" />
>>>>
>>>>       <Host name="localhost" appBase="webapps"
>>>>                unpackWARs="true" autoDeploy="true"
>>>>                xmlValidation="false" xmlNamespaceAware="false">
>>>>      <Cluster
>>>> className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
>>>>                   doClusterLog="true"
>>>>                   clusterLogName="clusterlog"
>>>>                   manager.className="
>>>> org.apache.catalina.cluster.session.DeltaManager"
>>>>                   manager.expireSessionsOnShutdown="false"
>>>>                   manager.notifyListenersOnReplication="true"
>>>>                   manager.notifySessionListenersOnReplication="true"
>>>>                   manager.sendAllSessions="true"
>>>>                   manager.sendAllSessionsSize="500"
>>>>                   manager.sendAllSessionsWaitTime="20">
>>>>
>>>>         <Membership className="
>>>> org.apache.catalina.cluster.mcast.McastService"
>>>>                              mcastBindAddress="192.168.2.102"
>>>>                              mcastAddr="224.0.0.1"
>>>>                              mcastPort="45564"
>>>>                              mcastFrequency="1000"
>>>>                              mcastDropTime="30000"/>
>>>>
>>>>         <Receiver className="
>>>> org.apache.catalina.cluster.tcp.ReplicationListener"
>>>>                          tcpListenAddress="192.168.2.102"
>>>>                          tcpListenPort="4000"
>>>>                          tcpSelectorTimeout="100"
>>>>                          tcpThreadCount="6" />
>>>>
>>>>         <Sender className="
>>>> org.apache.catalina.cluster.tcp.ReplicationTransmitter"
>>>>                       replicationMode="fastasyncqueue"
>>>>                       doTransmitterProcessingStats="true"
>>>>                       doProcessingStats="true"
>>>>                       doWaitAckStats="true"
>>>>                       queueTimeWait="true"
>>>>                       queueDoStats="true"
>>>>                       queueCheckLock="true"
>>>>                       ackTimeout="15000"
>>>>                       waitForAck="true"
>>>>                       keepAliveTimeout="80000"
>>>>                       keepAliveMaxRequestCount="-1" />
>>>>
>>>>       </Host>
>>>>     </Engine>
>>>>   </Service>
>>>> </Server>
>>>>
>>>>
>>>> ovea-inspiron (IP : 192.168.2.103)
>>>> <Server port="9005" shutdown="SHUTDOWN">
>>>>
>>>>   <GlobalNamingResources>
>>>>     <Resource name="UserDatabase" auth="Container"
>>>>                      type="org.apache.catalina.UserDatabase"
>>>>                      description="User database that can be updated and
>>>> saved"
>>>>                      factory="
>>>> org.apache.catalina.users.MemoryUserDatabaseFactory"
>>>>                      pathname="conf/tomcat-users.xml" />
>>>>   </GlobalNamingResources>
>>>>
>>>>   <Service name="Catalina">
>>>>
>>>>    <Connector port="9080" maxHttpHeaderSize="8192"
>>>>                      maxThreads="150" minSpareThreads="25"
>>>>                      maxSpareThreads="75"
>>>>                      enableLookups="false" redirectPort="8443"
>>>>                      acceptCount="100"
>>>>                      connectionTimeout="20000"
>>>> disableUploadTimeout="true"
>>>> />
>>>>
>>>>    <Connector port="9009" enableLookups="false"
>>>>                      redirectPort="8443" protocol="AJP/1.3" />
>>>>
>>>>    <Engine name="Catalina" defaultHost="localhost" jvmRoute="node02" >
>>>>      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
>>>>                   resourceName="UserDatabase"/>
>>>>
>>>>      <Host name="localhost" appBase="webapps"
>>>>               unpackWARs="true" autoDeploy="true"
>>>>               xmlValidation="false" xmlNamespaceAware="false">
>>>>
>>>>      <Cluster
>>>> className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
>>>>                   doClusterLog="true"
>>>>                   clusterLogName="clusterlog"
>>>>                   manager.className="
>>>> org.apache.catalina.cluster.session.DeltaManager"
>>>>                   manager.expireSessionsOnShutdown="false"
>>>>                   manager.notifyListenersOnReplication="true"
>>>>                   manager.notifySessionListenersOnReplication="true"
>>>>                   manager.sendAllSessions="true"
>>>>                   manager.sendAllSessionsSize="500"
>>>>                   manager.sendAllSessionsWaitTime="20">
>>>>
>>>>         <Membership className="
>>>> org.apache.catalina.cluster.mcast.McastService"
>>>>                              mcastBindAddress="192.168.2.103"
>>>>                              mcastAddr="224.0.0.1"
>>>>                              mcastPort="45564"
>>>>                              mcastFrequency="1000"
>>>>                              mcastDropTime="30000"/>
>>>>
>>>>         <Receiver className="
>>>> org.apache.catalina.cluster.tcp.ReplicationListener"
>>>>                         tcpListenAddress="192.168.2.103"
>>>>                         tcpListenPort="4000"
>>>>                         tcpSelectorTimeout="100"
>>>>                         tcpThreadCount="6" />
>>>>
>>>>         <Sender className="
>>>> org.apache.catalina.cluster.tcp.ReplicationTransmitter"
>>>>                       replicationMode="fastasyncqueue"
>>>>                       doTransmitterProcessingStats="true"
>>>>                       doProcessingStats="true"
>>>>                       doWaitAckStats="true"
>>>>                       queueTimeWait="true"
>>>>                       queueDoStats="true"
>>>>                       queueCheckLock="true"
>>>>                       ackTimeout="15000"
>>>>                       waitForAck="true"
>>>>                       keepAliveTimeout="80000"
>>>>                       keepAliveMaxRequestCount="-1" />
>>>>
>>>>       </Host>
>>>>     </Engine>
>>>>   </Service>
>>>> </Server>
>>>>
>>>>
>>>> I'm user linux so i've compiled my kernel with multicat kernel option
>>>> I add the rout like rooute add -host 224.0.0.1 dev eth0
>>>>
>>>> N.B : why 224.0.0.1 =>
>>>> http://www.iana.org/assignments/multicast-addresses
>>>>
>>>> So route is :
>>>> ALL-SYSTEMS.MCA *     255.255.255.255 UH    0      0        0 eth0
>>>> 192.168.2.0     *              255.255.255.0     U      0
>>>> 0        0
>>>> eth0
>>>> loopback        *               255.0.0.0            U      0      0
>>>>  0 lo
>>>> default         .                  0.0.0.0               UG    0      0
>>>>    0 eth0
>>>>
>>>> now i start the two tomcat with the same application in webapp
>>>> directories
>>>> with tcpdump i verify the multicasting btewen my server .. so :
>>>>
>>>> 19:39:17.809978 IP 192.168.2.102.45564 >
>>>> all-systems.mcast.net.45564:UDP,
>>>> length 56
>>>> 19:39:18.546034 IP ovea-inspiron.45564 >
>>>> all-systems.mcast.net.45564:UDP,
>>>> length 56
>>>> 19:39:18.814418 IP 192.168.2.102.45564 > all-systems.mcast.net.45564UDP
>>>>         
>> ,
>>     
>>>> length 56
>>>> 19:39:19.790470 IP ovea-inspiron.45564 >
>>>> all-systems.mcast.net.45564:UDP,
>>>> length 56
>>>> 19:39:19.818691 IP 192.168.2.102.45564 >
>>>> all-systems.mcast.net.45564:UDP,
>>>> length 56
>>>> 19:39:20.826650 IP 192.168.2.102.45564 >
>>>> all-systems.mcast.net.45564:UDP,
>>>> length 56
>>>> 19:39:20.943933 IP ovea-inspiron.45564 >
>>>> all-systems.mcast.net.45564:UDP,
>>>> length 56
>>>> 19:39:21.806813 arp who-has . tell 192.168.2.102
>>>> 19:39:21.806972 arp reply . is-at 00:04:e2:b6:65:0a (oui Unknown)
>>>> 19:39:21.831048 IP 192.168.2.102.45564 >
>>>> all-systems.mcast.net.45564:UDP,
>>>> length 56
>>>> 19:39:22.164812 IP ovea-inspiron.45564 >
>>>> all-systems.mcast.net.45564:UDP,
>>>> length 56
>>>> 19:39:22.835240 IP 192.168.2.102.45564 >
>>>> all-systems.mcast.net.45564:UDP,
>>>> length 56
>>>>
>>>> So all semms to be OK but i've
>>>>
>>>> Feb 14, 2006 6:33:26 PM
>>>> org.apache.catalina.cluster.tcp.SimpleTcpCluster st
>>>> art
>>>> INFO: Cluster is about to start
>>>> Feb 14, 2006 6:33:26 PM
>>>>
>>>>         
>> org.apache.catalina.cluster.tcp.SimpleTcpClustercreateDefaultClusterValves
>>     
>>>> INFO: Add Default ClusterValves at cluster localhost
>>>> Feb 14, 2006 6:33:26 PM
>>>>
>>>>         
>> org.apache.catalina.cluster.tcp.SimpleTcpClustercreateDefaultClusterListener
>>     
>>>> INFO: Add Default ClusterListener at cluster localhost
>>>> Feb 14, 2006 6:33:26 PM
>>>> org.apache.catalina.cluster.tcp.ReplicationTransmitter start
>>>> INFO: Start ClusterSender at cluster
>>>> Catalina:type=3DCluster,host=3Dlocalhost
>>>> with name Catalina:type=3DClusterSender,host=3Dlocalhost
>>>> Feb 14, 2006 6:33:26 PM
>>>> org.apache.catalina.cluster.mcast.McastServiceImplsetupSocket
>>>> INFO: Setting multihome multicast interface to:/192.168.2.102
>>>> Feb 14, 2006 6:33:26 PM
>>>> org.apache.catalina.cluster.mcast.McastService start
>>>> INFO: Sleeping for 4000 secs to establish cluster membership
>>>> Feb 14, 2006 6:33:30 PM
>>>> org.apache.catalina.cluster.mcast.McastServiceregisterMBean
>>>> INFO: membership mbean registered
>>>> (Catalina:type=3DClusterMembership,host=3Dlocalhost)
>>>> Feb 14, 2006 6:33:31 PM org.apache.catalina.startup.HostConfigdeployWAR
>>>> INFO: Deploying web application archive cluster-1.0-SNAPSHOT.war
>>>> Feb 14, 2006 6:33:31 PM
>>>> org.apache.catalina.cluster.session.DeltaManager st
>>>> art
>>>> INFO: Register manager /cluster-1.0-SNAPSHOT to cluster element Host
>>>> with
>>>> name localhost
>>>> Feb 14, 2006 6:33:31 PM
>>>> org.apache.catalina.cluster.session.DeltaManager st
>>>> art
>>>> INFO: Starting clustering manager at /cluster-1.0-SNAPSHOT
>>>> Feb 14, 2006 6:33:31 PM
>>>> org.apache.catalina.cluster.session.DeltaManagergetAllClusterSessions
>>>> INFO: Manager [/cluster-1.0-SNAPSHOT]: skipping state transfer. No
>>>> members
>>>> active in cluster group.
>>>>
>>>> As you can see in the last line cluster member are not found !!!!
>>>>
>>>> What's the hell ;)
>>>>
>>>> When i test my application i've always the sequences :
>>>>
>>>>    This page is rendered on server : *Cluster Node - 01 (One) New
>>>> session is
>>>> created with saved value ....UserId : 123456
>>>>    This page is rendered on server : *Cluster Node - 02 (Two) New
>>>> session is
>>>> created with saved value ....UserId : 123456
>>>>    This page is rendered on server : *Cluster Node - 01 (One) New
>>>> session is
>>>> created with saved value ....UserId : 123456
>>>>
>>>> So the request is well balanced but a new session is alway created
>>>>         
>> !!!!!
>>     
>>>> Some ideas ...
>>>>
>>>> Thank you guys
>>>>         
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>>> For additional commands, e-mail: users-help@tomcat.apache.org
>>>
>>>       
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>
>>
>>     
>
>   


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message