Clustering was broken in Tomcat 5.5.10-5.5.15 due to a protocol change,
this was corrected in 5.5.16.
I would run the tests again that version, and then I can help you out
with any problems you run into.
Filip
Dave Colasurdo wrote:
> Jeff,
>
> Upgraded tomcat, tomcat_ajp and jasper to 5.5.15 and ran the
> clustering tests.
>
> The *good* news...
> Load balancing, sticky session, session replication and session
> failover seem to work using the same deployment plan that was created
> for G1.1 w/ TC 5.5.9..
>
> The *bad* news...
>
> *Problem1*
> When testing Sticky session, my browser locks unto a particular
> cluster member (e.g. node1) due to the nodeid in the cookie. If I kill
> node1, the session fails over into node2 and all my session data is
> still present. This is good.
> The nodeid in the cookie continues to say node1 (this is also true w/
> TC 5.5.9 w/ and mod-jk)..
>
> Now, if I restart node1 and wait a minute or so and then hit my
> browser, I am directed to node1 and all my session data is gone. :(
> BTW, an earlier run using TC 5.5.9 also resulted in being directed
> back to node1 though the httpsession is retained. I think this may be
> related to problems replicating data whenever nodes are added..
> Which leads me to ...
>
>
> *Problem2*
> Whenever a cluster member is added to the cluster, the other nodes
> receive the following exception. This occurs both during the initial
> addition of a node and after a stopped node is restarted...
>
> (Though later when I access an httpsession (via a servlet request)it
> does result in session replication between members.)
>
> 15:30:19,352 INFO [SimpleTcpCluster] Replication member
> added:org.apache.catalina.cluster.mcast.McastMember[tcp://192.168.14.160
> :4001,catalina,192.168.14.160,4001
> , alive=0]
> 15:30:19,692 ERROR [SimpleTcpCluster] Unable to send message through
> cluster sender.
> java.io.IOException: Sender not available. Make sure sender
> information is available to the ReplicationTransmitter.
> at
> org.apache.catalina.cluster.tcp.ReplicationTransmitter.sendMessageDat
> a(ReplicationTransmitter.java:857)
> at
> org.apache.catalina.cluster.tcp.ReplicationTransmitter.sendMessage(Re
> plicationTransmitter.java:430)
> at
> org.apache.catalina.cluster.tcp.SimpleTcpCluster.send(SimpleTcpCluste
> r.java:1074)
> at
> org.apache.catalina.cluster.session.DeltaManager.sendSessions(DeltaMa
> nager.java:1690)
> at
> org.apache.catalina.cluster.session.DeltaManager.handleGET_ALL_SESSIO
> NS(DeltaManager.java:1629)
> at
> org.apache.catalina.cluster.session.DeltaManager.messageReceived(Delt
> aManager.java:1443)
> at
> org.apache.catalina.cluster.session.DeltaManager.messageDataReceived(
> DeltaManager.java:1225)
> at
> org.apache.catalina.cluster.session.ClusterSessionListener.messageRec
> eived(ClusterSessionListener.java:85)
> at
> org.apache.catalina.cluster.tcp.SimpleTcpCluster.receive(SimpleTcpClu
> ster.java:1160)
> at
> org.apache.catalina.cluster.tcp.ClusterReceiverBase.messageDataReceiv
> ed(ClusterReceiverBase.java:418)
> at
> org.apache.catalina.cluster.io.ObjectReader.execute(ObjectReader.java
> :107)
> at
> org.apache.catalina.cluster.tcp.TcpReplicationThread.drainChannel(Tcp
> ReplicationThread.java:131)
> at
> org.apache.catalina.cluster.tcp.TcpReplicationThread.run(TcpReplicati
> onThread.java:69)
> 15:30:19,692 ERROR [SimpleTcpCluster] Unable to send message through
> cluster sen
> der.
> java.io.IOException: Sender not available. Make sure sender
> information is avail
> able to the ReplicationTransmitter.
> at
> org.apache.catalina.cluster.tcp.ReplicationTransmitter.sendMessageDat
> a(ReplicationTransmitter.java:857)
> at
> org.apache.catalina.cluster.tcp.ReplicationTransmitter.sendMessage(Re
> plicationTransmitter.java:430)
> at
> org.apache.catalina.cluster.tcp.SimpleTcpCluster.send(SimpleTcpCluste
> r.java:1074)
> at
> org.apache.catalina.cluster.session.DeltaManager.handleGET_ALL_SESSIO
> NS(DeltaManager.java:1660)
> at
> org.apache.catalina.cluster.session.DeltaManager.messageReceived(Delt
> aManager.java:1443)
> at
> org.apache.catalina.cluster.session.DeltaManager.messageDataReceived(
> DeltaManager.java:1225)
> at
> org.apache.catalina.cluster.session.ClusterSessionListener.messageRec
> eived(ClusterSessionListener.java:85)
> at
> org.apache.catalina.cluster.tcp.SimpleTcpCluster.receive(SimpleTcpClu
> ster.java:1160)
> at
> org.apache.catalina.cluster.tcp.ClusterReceiverBase.messageDataReceiv
> ed(ClusterReceiverBase.java:418)
> at
> org.apache.catalina.cluster.io.ObjectReader.execute(ObjectReader.java
> :107)
> at
> org.apache.catalina.cluster.tcp.TcpReplicationThread.drainChannel(Tcp
> ReplicationThread.java:131)
> at
> org.apache.catalina.cluster.tcp.TcpReplicationThread.run(TcpReplicati
> onThread.java:69)
>
> *Problem3*
> Getting a bunch of exceptions relating to session invalidation
>
> [snip]
> java.lang.IllegalStateException: getId: Session already invalidated
> [snip]
>
> This one may not be new..
>
>
> Thanks
> -Dave-
>
>
> Jeff Genender wrote:
>> Dave,
>>
>> Thanks for doing this.
>>
>> Jeff
>>
>> Dave Colasurdo wrote:
>>> I've validated that the Geronimo clustering example
>>> (http://opensource.atlassian.com/confluence/oss/display/GERONIMO/Geronimo+Clustering+Example)
>>>
>>> still works for Geronimo 1.1 (with Tomcat 5.5.9). The application
>>> deployment plan (attached to email) required some changes.
>>>
>>> I'm now rebuilding G1.1 with Tomcat 5.5.15 to determine if the
>>> clustering Gbeans and plans still work..
>>>
>>> -Dave-
>>>
>>> Jeff Genender wrote:
>>>> IIRC, 5.5.15 went to backward compatibility...
>>>>
>>>> http://mail-archives.apache.org/mod_mbox/tomcat-users/200512.mbox/%3c63770.72.64.65.166.1135363511.squirrel@www.hanik.com%3e
>>>>
>>>>
>>>>
>>>> Perhaps Filip can fill us in on this.
>>>>
>>>> If I remember right, the 5.5.9 clustering GBeans will work on forward
>>>> versions. So I don't think there is a problem there. HEAD has
>>>> been set
>>>> to 5.5.15 for quite some time.
>>>>
>>>> Nevertheless, it doesn't hurt to try em out ;-)
>>>>
>>>> Jeff
>>>>
>>>> Dave Colasurdo wrote:
>>>>> Jeff (et al.),
>>>>>
>>>>> Will G1.1 definitely be upgraded to Tomcat 5.5.15?
>>>>>
>>>>> IIRC, the clustering deployment plans were quite different for 5.5.9
>>>>> -vs- 5.5.12. If we upgrade to 5.5.15, we will likely need a new plan
>>>>> that accounts for both the webcontainer upgrade as well as the new
>>>>> G1.1
>>>>> plan format..
>>>>>
>>>>> Thanks
>>>>> -Dave-
>>>>>
>>>>> Jeff Genender wrote:
>>>>>> Thanks Rainer. But I think 5.5.15 will be the one for 1.1. But
>>>>>> possibly 5.5.17 for 1.2 ;-)
>>>>>>
>>>>>> Jeff
>>>>>>
>>>>>> Rainer Jung wrote:
>>>>>>> Just for your information: 5.5.16 was released a couple of weeks
>>>>>>> ago,
>>>>>>> but has some problems with de delivered packaginf of examples
app
>>>>>>> under
>>>>>>> windows.
>>>>>>>
>>>>>>> 5.5.17 is expected to be cut on friday and voted stable
>>>>>>> eventually 1-2
>>>>>>> weeks later.
>>>>>>>
>>>>>>> Jeff Genender wrote:
>>>>>>>> Yep...need to update the plan. Its updated in trunk.
>>>>>>>>
>>>>>>>> Dave Colasurdo wrote:
>>>>>>>>> It appears that G1.1 is still using Tomcat 5.5.9
>>>>>>>>>
>>>>>>>>> http://svn.apache.org/repos/asf/geronimo/branches/1.1/etc/project.properties
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Wasn't a tomcat upgrade to 5.5.15 in plan for G1.1??
Perhaps
>>>>>>>>> I am
>>>>>>>>> confused with the plans for trunk.. ??
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>> -Dave-
>>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <!--Copyright 2004-2005 The Apache Software Foundation
>>>
>>> Licensed under the Apache License, Version 2.0 (the "License");
>>> you may not use this file except in compliance with the License.
>>> You may obtain a copy of the License at
>>>
>>> http://www.apache.org/licenses/LICENSE-2.0
>>>
>>> Unless required by applicable law or agreed to in writing, software
>>> distributed under the License is distributed on an "AS IS" BASIS,
>>> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> See the License for the specific language governing permissions and
>>> limitations under the License.-->
>>> <!--$Rev: 381704 $ $Date: 2006-02-28 11:55:41 -0500 (Tue, 28 Feb
>>> 2006) $-->
>>> <web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.1">
>>> <dep:environment
>>> xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.1">
>>> <dep:configId>
>>> <dep:groupId>geronimo</dep:groupId>
>>> <dep:artifactId>servlets-examples-tomcat-cluster</dep:artifactId>
>>> <dep:version>1.1-SNAPSHOT</dep:version>
>>> <dep:type>car</dep:type>
>>> </dep:configId>
>>> <dep:dependencies/>
>>> <dep:hidden-classes/>
>>> <dep:non-overridable-classes/>
>>> </dep:environment>
>>> <context-root>/servlets-examples-cluster</context-root>
>>> <context-priority-classloader>false</context-priority-classloader>
>>> <security-realm-name>geronimo-properties-realm</security-realm-name>
>>> <security>
>>> <default-principal>
>>> <principal name="anonymous"
>>> class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal"/>
>>>
>>> </default-principal>
>>> <role-mappings>
>>> <role role-name="tomcat">
>>> <principal name="admin"
>>> class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal"/>
>>>
>>> </role>
>>> </role-mappings>
>>> </security>
>>>
>>> <cluster>TomcatCluster</cluster>
>>>
>>> <!-- Cluster -->
>>> <gbean name="TomcatCluster"
>>> class="org.apache.geronimo.tomcat.cluster.CatalinaClusterGBean">
>>> <attribute
>>> name="className">org.apache.catalina.cluster.tcp.SimpleTcpCluster</attribute>
>>>
>>> <attribute name="initParams">
>>>
>>> managerClassName=org.apache.catalina.cluster.session.DeltaManager
>>> expireSessionsOnShutdown=false
>>> useDirtyFlag=false
>>> notifyListenersOnReplication=true
>>> </attribute>
>>>
>>> <reference name="Membership"> <name>TomcatMembership</name>
>>> </reference> <reference name="Receiver">
>>> <name>TomcatReceiver</name> </reference> <reference
>>> name="Sender"> <name>TomcatSender</name> </reference>
>>> <reference name="TomcatValveChain"> <name>ReplicationValve</name>
>>> </reference> <!--
>>> <reference name="ClusterDeployer">
>>> <name>FarmWarDeployer</name> </reference> -->
>>> </gbean>
>>>
>>> <!-- Membership -->
>>>
>>> <gbean name="TomcatMembership"
>>> class="org.apache.geronimo.tomcat.cluster.MembershipServiceGBean">
>>> <attribute
>>> name="className">org.apache.catalina.cluster.mcast.McastService</attribute>
>>>
>>> <attribute name="initParams">
>>> mcastAddr=228.0.0.4
>>> mcastBindAddress=xx.yy.zz.aa mcastPort=45564
>>> mcastFrequency=500
>>> mcastDropTime=3000
>>> </attribute>
>>> </gbean>
>>> <!-- Receiver -->
>>>
>>> <gbean name="TomcatReceiver"
>>> class="org.apache.geronimo.tomcat.cluster.ReceiverGBean">
>>> <attribute
>>> name="className">org.apache.catalina.cluster.tcp.ReplicationListener</attribute>
>>>
>>> <attribute name="initParams">
>>> tcpListenAddress=xx.yy.zz.aa tcpListenPort=4001
>>> tcpSelectorTimeout=100
>>> tcpThreadCount=6
>>> </attribute>
>>> </gbean>
>>> <!-- Sender -->
>>>
>>> <gbean name="TomcatSender"
>>> class="org.apache.geronimo.tomcat.cluster.SenderGBean">
>>> <attribute
>>> name="className">org.apache.catalina.cluster.tcp.ReplicationTransmitter</attribute>
>>>
>>> <attribute name="initParams">
>>> replicationMode=pooled
>>> ackTimeout=15000
>>> </attribute>
>>> </gbean>
>>> <!-- Valves -->
>>> <gbean name="ReplicationValve"
>>> class="org.apache.geronimo.tomcat.ValveGBean">
>>> <attribute
>>> name="className">org.apache.catalina.cluster.tcp.ReplicationValve</attribute>
>>>
>>> <attribute name="initParams">
>>>
>>> filter=.*\.gif;.*\.js;.*\.css;.*\.png;.*\.jpeg;.*\.jpg;.*\.htm;.*\.html;.*\.txt;
>>>
>>> </attribute>
>>> </gbean>
>>>
>>>
>>>
>>> <!-- Deployer <gbean name="FarmWarDeployer"
>>> class="org.apache.geronimo.tomcat.cluster.FarmWarDeployerGBean">
>>> <attribute name="tempDir">var/catalina/war-temp</attribute>
>>> <attribute name="deployDir">var/catalina/war-deploy</attribute>
>>> <attribute name="watchDir">var/catalina/war-listen</attribute>
>>> <attribute name="watchEnabled">true</attribute>
>>> <attribute name="processDeployFrequency">10</attribute>
>>> <reference name="ServerInfo">
>>> <moduleType>J2EEModule</moduleType>
>>> <module>geronimo/j2ee-system/1.1-SNAPSHOT/car</module>
>>> <name>ServerInfo</name>
>>> </reference>
>>> </gbean>
>>> -->
>>> </web-app>
>>>
>>
>>
>
|