Announcement

Collapse
No announcement yet.

Mod_JK + Tomcat Replication Problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mod_JK + Tomcat Replication Problem

    Hallo liebe Tomcat Freunde,

    ich habe ein Problem mit dem Aufbau eines Tomcat Clusters welcher über Apache + Mod_JK gebalanced wird (Debian Lenny) Tomcat: 6.0.26 und hoffe dass mir hier jemand weiterhelfen kann:

    Problem:
    Seitenaufruf auf TomcatServer1 wird von TomcatServer2 verarbeitet und Seitenaufruf auf TomcatServer2 wird von TomcatServer1 verarbeitet.

    Dabei taucht folgende Meldung im catalina.out des jeweils (nicht arbeiteten) Servers auf:

    Code:
    Apr 28, 2010 3:51:00 PM org.apache.catalina.ha.session.DeltaManager messageReceived
    SEVERE: Manager [localhost#]: Unable to receive message through TCP channel
    java.io.InvalidObjectException: Could not find a SessionFactory named: null
            at org.hibernate.impl.SessionFactoryImpl.readResolve(SessionFactoryImpl.java:612)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1061)
            at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1762)
            at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
            at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
            at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
            at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
            at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
            at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
            at org.apache.catalina.ha.session.DeltaRequest$AttributeInfo.readExternal(DeltaRequest.java:361)
            at org.apache.catalina.ha.session.DeltaRequest.readExternal(DeltaRequest.java:255)
            at org.apache.catalina.ha.session.DeltaManager.deserializeDeltaRequest(DeltaManager.java:621)
            at org.apache.catalina.ha.session.DeltaManager.handleSESSION_DELTA(DeltaManager.java:1402)
            at org.apache.catalina.ha.session.DeltaManager.messageReceived(DeltaManager.java:1357)
            at org.apache.catalina.ha.session.DeltaManager.messageDataReceived(DeltaManager.java:1093)
            at org.apache.catalina.ha.session.ClusterSessionListener.messageReceived(ClusterSessionListener.java:87)
            at org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.java:901)
            at org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.java:882)
            at org.apache.catalina.tribes.group.GroupChannel.messageReceived(GroupChannel.java:269)
            at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:79)
            at org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.messageReceived(TcpFailureDetector.java:110)
            at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:79)
            at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:79)
            at org.apache.catalina.tribes.group.ChannelCoordinator.messageReceived(ChannelCoordinator.java:241)
            at org.apache.catalina.tribes.transport.ReceiverBase.messageDataReceived(ReceiverBase.java:225)
            at org.apache.catalina.tribes.transport.nio.NioReplicationTask.drainChannel(NioReplicationTask.java:188)
            at org.apache.catalina.tribes.transport.nio.NioReplicationTask.run(NioReplicationTask.java:91)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
            at java.lang.Thread.run(Thread.java:619)
    Die Cluster Konfiguration wurde nach der offiziellen ClusterHowTo vorgenommen http://tomcat.apache.org/tomcat-6.0-...ter-howto.html

    Meine workers.properties sieht wie folgt aus:

    Code:
    workers.tomcat_home=/opt/tomcat-6.0.26
    workers.java_home=/usr/lib/jvm/java-6-sun
    ps=/
    
    worker.list = bal1,stat1
    
    worker.server1.type = ajp13
    worker.server1.host = 10.10.1.1
    worker.server1.port = 8009
    worker.server1.lbfactor = 10
    
    worker.server2.type = ajp13
    worker.server2.host = 10.10.1.2
    worker.server2.port = 8009
    worker.server2.lbfactor = 10
    
    worker.bal1.type = lb
    worker.bal1.sticky_session = 1
    worker.bal1.balanced_workers = server1,server2
    worker.stat1.type = status
    worker.bal1.local_worker_only=1
    Clusterteil der Server.xml:

    Code:
        
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="server1">
    	
    
            <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="true"/>
    
              <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
              <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
            </Cluster>   
    
    
          <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true"
                xmlValidation="false" xmlNamespaceAware="false">
    	  <Context path="" docBase="applikation" debug="0" reloadable="true" allowLinking="true">
          </Context>
    Ich hoffe jemand hat eine Idee und kann mir weiterhelfen. Stehe momentan echt an.

    Danke
    Gruß
    schoysi
Working...
X