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 <[EMAIL PROTECTED]> 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
[EMAIL PROTECTED]



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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to