web-dev-qa-db-ja.com

Tomcat Cluster FarmDeployerの問題

私はubuntuサーバー上でmod_jkを使用してApache-Tomcatクラスターをセットアップしました。クラスター内の他のWebサーバーにwarファイルをデプロイするFarmDeployerにいくつかの問題があり、投稿してFarmDeployerが機能するように機能することを期待しています ここ

戦争デプロイヤーは、投稿から以下の構成で完全に機能しますが、ページにアクセスしたときに404エラーが発生することがあるため、信頼性の高い機能はありません。

 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

    <Cluster className="org.Apache.catalina.ha.tcp.SimpleTcpCluster">
        <Channel className="org.Apache.catalina.tribes.group.GroupChannel">
            <Receiver className="org.Apache.catalina.tribes.transport.nio.NioReceiver"
                  address="192.168.1.4"
                  port="4000"
                  selectorTimeout="100"
                  maxThreads="6"/>
            <Interceptor className="org.Apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            <Interceptor className="org.Apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
                <Member className="org.Apache.catalina.tribes.membership.StaticMember"
                      port="4000"
                      securePort="-1"
                      Host="192.168.1.2"
                      domain="staging-cluster"
                      uniqueId="{0,1,2,3,4,5,6,7,8,9}"/>
            </Interceptor>
        </Channel>
        <Deployer className="org.Apache.catalina.ha.deploy.FarmWarDeployer"
            tempDir="/usr/share/Tomcat/temp/"
            deployDir="/usr/share/Tomcat/webapps/"
            watchDir="/usr/share/Tomcat/watch/"
            watchEnabled="true"/>
    </Cluster>
  </Host>

以下は、HAおよびLBクラスタリングで完全に機能する構成(Tomcatクラスタードキュメントから)です。 But it fails in Farm Deployerであり、ファームデプロイヤーが機能していない理由を示すトレースはログにありません。

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

<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"/>

    <Sender className="org.Apache.catalina.tribes.transport.ReplicationTransmitter">

     <Transport className="org.Apache.catalina.tribes.transport.nio.PooledParallelSender"/>

    </Sender>

    <Receiver className="org.Apache.catalina.tribes.transport.nio.NioReceiver" 

           address="auto" port="4000" autoBind="100"

           selectorTimeout="5000" maxThreads="6"/>

    <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"/>

<ClusterListener className="org.Apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>

<ClusterListener className="org.Apache.catalina.ha.session.ClusterSessionListener"/>

</Cluster>


<Deployer className="org.Apache.catalina.ha.deploy.FarmWarDeployer"
            tempDir="/usr/share/Tomcat/temp/"
            deployDir="/usr/share/Tomcat/webapps/"
            watchDir="/usr/share/Tomcat/watch/"
            watchEnabled="true"/>


</Host>

ファームデプロイヤーを上記のHAおよびLB構成で完全に機能させる方法について、誰かがアイデアや機能構成を持っていますか?.

ありがとうございました!


更新:1

構成に従って3つのノードで構成しましたが、ドメイン名(LBを指す)でサイトにアクセスできず、Tomcat ROOTページが表示されますが、ip/myappでレンダリングされます。

WARファイルmyapp.warはすべてのサーバーにデプロイされますが、マネージャーノード(デプロイヤーWebサーバー)以外の他の2つのノードには抽出されません。

他の2つのWebサーバーのログ

dead.[org.Apache.catalina.tribes.membership.MemberImpl[tcp://{-64, -88, 2, 56}:4000,{-64, -88, 2, 56},4000, alive=2908632,id={64 21 -13 -74 -38 -98 70 117 -117 77 40 -79 124 -110 56 59 }, payload={}, command={}, domain={}, ]]
    18 Aug, 2011 3:17:33 AM org.Apache.catalina.ha.tcp.SimpleTcpCluster memberAdded
    INFO: Replication member added:org.Apache.catalina.tribes.membership.MemberImpl[tcp://{-64, -88, 2, 56}:4000,{-64, -88, 2, 56},4000, alive=1020,id={-65 -93 19 -47 -112 -115 78 -60 -118 99 120 107 -51 115 -88 115 }, payload={}, command={}, domain={}, ]
    18 Aug, 2011 3:19:55 AM org.Apache.catalina.core.StandardContext stop
    INFO: Container org.Apache.catalina.core.ContainerBase.[Catalina].[localhost].[/myapp] has not been started
    18 Aug, 2011 3:19:55 AM org.Apache.catalina.startup.HostConfig checkResources
    INFO: Undeploying context [/myapp]
    18 Aug, 2011 3:19:59 AM org.Apache.catalina.startup.HostConfig checkResources
    INFO: Undeploying context [/myapp]
    18 Aug, 2011 3:20:01 AM org.Apache.catalina.startup.HostConfig deployWAR
    INFO: Deploying web application archive myapp.war
    18 Aug, 2011 3:20:01 AM org.Apache.catalina.startup.ContextConfig init
    SEVERE: Exception fixing docBase: {0} 
    Java.util.Zip.ZipException: invalid CEN header (bad signature)
        at Java.util.Zip.ZipFile.open(Native Method)
        at Java.util.Zip.ZipFile.<init>(ZipFile.Java:131)
        at Java.util.jar.JarFile.<init>(JarFile.Java:150)
        at Java.util.jar.JarFile.<init>(JarFile.Java:87)
        at Sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.Java:90)
        at Sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.Java:66)
        at Sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.Java:86)
        at Sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.Java:122)
        at Sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.Java:89)
        at org.Apache.catalina.startup.ExpandWar.expand(ExpandWar.Java:141)
        at org.Apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.Java:883)
        at org.Apache.catalina.startup.ContextConfig.init(ContextConfig.Java:1012)
        at org.Apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.Java:279)
        at org.Apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.Java:117)
        at org.Apache.catalina.core.StandardContext.init(StandardContext.Java:5338)
        at org.Apache.catalina.core.StandardContext.start(StandardContext.Java:4086)
        at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:791)
        at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:771)
        at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:525)
        at org.Apache.catalina.startup.HostConfig.deployWAR(HostConfig.Java:830)
        at org.Apache.catalina.startup.HostConfig.deployApps(HostConfig.Java:515)
        at org.Apache.catalina.startup.HostConfig.check(HostConfig.Java:1231)
        at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
        at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
        at Java.lang.reflect.Method.invoke(Method.Java:616)
        at org.Apache.Tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.Java:297)
        at com.Sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.Java:857)
        at com.Sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.Java:795)
        at org.Apache.catalina.ha.deploy.FarmWarDeployer.check(FarmWarDeployer.Java:623)
        at org.Apache.catalina.ha.deploy.FarmWarDeployer.messageReceived(FarmWarDeployer.Java:246)
        at org.Apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.Java:899)
        at org.Apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.Java:880)
        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.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.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.runWorker(ThreadPoolExecutor.Java:1110)
        at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:603)
        at Java.lang.Thread.run(Thread.Java:636)
    18 Aug, 2011 3:20:01 AM org.Apache.catalina.core.StandardContext resourcesStart
    SEVERE: Error starting static Resources
    Java.lang.IllegalArgumentException: Invalid or unreadable WAR file : invalid CEN header (bad signature)
        at org.Apache.naming.resources.WARDirContext.setDocBase(WARDirContext.Java:135)
        at org.Apache.catalina.core.StandardContext.resourcesStart(StandardContext.Java:3957)
        at org.Apache.catalina.core.StandardContext.start(StandardContext.Java:4126)
        at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:791)
        at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:771)
        at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:525)
        at org.Apache.catalina.startup.HostConfig.deployWAR(HostConfig.Java:830)
        at org.Apache.catalina.startup.HostConfig.deployApps(HostConfig.Java:515)
        at org.Apache.catalina.startup.HostConfig.check(HostConfig.Java:1231)
        at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
        at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
        at Java.lang.reflect.Method.invoke(Method.Java:616)
        at org.Apache.Tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.Java:297)
        at com.Sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.Java:857)
        at com.Sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.Java:795)
        at org.Apache.catalina.ha.deploy.FarmWarDeployer.check(FarmWarDeployer.Java:623)
        at org.Apache.catalina.ha.deploy.FarmWarDeployer.messageReceived(FarmWarDeployer.Java:246)
        at org.Apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.Java:899)
        at org.Apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.Java:880)
        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.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.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.runWorker(ThreadPoolExecutor.Java:1110)
        at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:603)
        at Java.lang.Thread.run(Thread.Java:636)
    18 Aug, 2011 3:20:01 AM org.Apache.catalina.core.StandardContext start
    SEVERE: Error in resourceStart()
    18 Aug, 2011 3:20:01 AM org.Apache.catalina.ha.deploy.FileMessageFactory writeMessage
    WARNING: Receive Message again -- Sender ActTimeout to short [ path: /myapp war: /usr/share/Tomcat/webapps/myapp.war data: [B@107108e data length: 6535 ]
    18 Aug, 2011 3:20:01 AM org.Apache.catalina.core.StandardContext start
    SEVERE: Error getConfigured
    18 Aug, 2011 3:20:01 AM org.Apache.catalina.core.StandardContext start
    SEVERE: Context [/myapp] startup failed due to previous errors
    18 Aug, 2011 3:20:01 AM org.Apache.catalina.core.StandardContext stop
    INFO: Container org.Apache.catalina.core.ContainerBase.[Catalina].[localhost].[/myapp] has not been started
    18 Aug, 2011 3:20:09 AM org.Apache.catalina.startup.HostConfig deployWAR
    INFO: Deploying web application archive myapp.war
    18 Aug, 2011 3:20:09 AM org.Apache.catalina.startup.ContextConfig init
    SEVERE: Exception fixing docBase: {0} 
    Java.util.Zip.ZipException: invalid CEN header (bad signature)
        at Java.util.Zip.ZipFile.open(Native Method)
        at Java.util.Zip.ZipFile.<init>(ZipFile.Java:131)
        at Java.util.jar.JarFile.<init>(JarFile.Java:150)
        at Java.util.jar.JarFile.<init>(JarFile.Java:87)
        at Sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.Java:90)
        at Sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.Java:66)
        at Sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.Java:86)
        at Sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.Java:122)
        at Sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.Java:89)
        at org.Apache.catalina.startup.ExpandWar.expand(ExpandWar.Java:141)
        at org.Apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.Java:883)
        at org.Apache.catalina.startup.ContextConfig.init(ContextConfig.Java:1012)
        at org.Apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.Java:279)
        at org.Apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.Java:117)
        at org.Apache.catalina.core.StandardContext.init(StandardContext.Java:5338)
        at org.Apache.catalina.core.StandardContext.start(StandardContext.Java:4086)
        at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:791)
        at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:771)
        at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:525)
        at org.Apache.catalina.startup.HostConfig.deployWAR(HostConfig.Java:830)
        at org.Apache.catalina.startup.HostConfig.deployWARs(HostConfig.Java:719)
        at org.Apache.catalina.startup.HostConfig.deployApps(HostConfig.Java:490)
        at org.Apache.catalina.startup.HostConfig.check(HostConfig.Java:1217)
        at org.Apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.Java:293)
        at org.Apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.Java:117)
        at org.Apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.Java:1337)
        at org.Apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.Java:1601)
        at org.Apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.Java:1610)
        at org.Apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.Java:1590)
        at Java.lang.Thread.run(Thread.Java:636)
    18 Aug, 2011 3:20:09 AM org.Apache.catalina.core.StandardContext resourcesStart
    SEVERE: Error starting static Resources
    Java.lang.IllegalArgumentException: Invalid or unreadable WAR file : invalid CEN header (bad signature)
        at org.Apache.naming.resources.WARDirContext.setDocBase(WARDirContext.Java:135)
        at org.Apache.catalina.core.StandardContext.resourcesStart(StandardContext.Java:3957)
        at org.Apache.catalina.core.StandardContext.start(StandardContext.Java:4126)
        at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:791)
        at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:771)
        at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:525)
        at org.Apache.catalina.startup.HostConfig.deployWAR(HostConfig.Java:830)
        at org.Apache.catalina.startup.HostConfig.deployWARs(HostConfig.Java:719)
        at org.Apache.catalina.startup.HostConfig.deployApps(HostConfig.Java:490)
        at org.Apache.catalina.startup.HostConfig.check(HostConfig.Java:1217)
        at org.Apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.Java:293)
        at 
        at org.Apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.Java:1590)
        at Java.lang.Thread.run(Thread.Java:636)
    18 Aug, 2011 3:20:09 AM org.Apache.catalina.core.StandardContext start
    SEVERE: Error in resourceStart()
    18 Aug, 2011 3:20:09 AM org.Apache.catalina.core.StandardContext start
    SEVERE: Error getConfigured
    18 Aug, 2011 3:20:09 AM org.Apache.catalina.core.StandardContext start
    SEVERE: Context [/myapp] startup failed due to previous errors
    18 Aug, 2011 3:20:09 AM org.Apache.catalina.core.StandardContext stop
    INFO: Container org.Apache.catalina.core.ContainerBase.[Catalina].[www.mydomain.com].[/myapp] has not been started
    18 Aug, 2011 3:28:09 AM org.Apache.catalina.ha.session.ClusterSessionListener messageReceived
    WARNING: Context manager doesn't exist:/myapp
    18 Aug, 2011 3:28:09 AM org.Apache.catalina.ha.session.ClusterSessionListener messageReceived
    WARNING: Context manager doesn't exist:/myapp

デプロイヤーWebサーバーのログ

18 Aug, 2011 4:50:57 PM org.Apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.18
18 Aug, 2011 4:50:57 PM org.Apache.catalina.core.StandardContext resourcesStart
SEVERE: Error starting static Resources
Java.lang.IllegalArgumentException: Document base /usr/share/Tomcat/webapps/myapp does not exist or is not a readable directory
    at org.Apache.naming.resources.FileDirContext.setDocBase(FileDirContext.Java:141)
    at org.Apache.catalina.core.StandardContext.resourcesStart(StandardContext.Java:3957)
    at org.Apache.catalina.core.StandardContext.start(StandardContext.Java:4126)
    at org.Apache.catalina.core.ContainerBase.start(ContainerBase.Java:1045)
    at org.Apache.catalina.core.StandardHost.start(StandardHost.Java:719)
    at org.Apache.catalina.core.ContainerBase.start(ContainerBase.Java:1045)
    at org.Apache.catalina.core.StandardEngine.start(StandardEngine.Java:443)
    at org.Apache.catalina.core.StandardService.start(StandardService.Java:516)
    at org.Apache.catalina.core.StandardServer.start(StandardServer.Java:710)
    at org.Apache.catalina.startup.Catalina.start(Catalina.Java:578)
    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 org.Apache.catalina.startup.Bootstrap.start(Bootstrap.Java:288)
    at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:413)
18 Aug, 2011 4:50:57 PM org.Apache.catalina.core.StandardContext start
SEVERE: Error in resourceStart()
18 Aug, 2011 4:50:57 PM org.Apache.catalina.core.StandardContext start
SEVERE: Error getConfigured
18 Aug, 2011 4:50:57 PM org.Apache.catalina.core.StandardContext start
SEVERE: Context [] startup failed due to previous errors
18 Aug, 2011 4:50:57 PM org.Apache.catalina.core.StandardContext stop
INFO: Container org.Apache.catalina.core.ContainerBase.[Catalina].[www.mydomain.com].[/] 
18 Aug, 2011 4:50:59 PM org.Apache.catalina.ha.deploy.FarmWarDeployer start
INFO: Cluster deployment is watching /usr/share/Tomcat/watch/ for changes.
18 Aug, 2011 4:50:59 PM org.Apache.catalina.ha.deploy.FarmWarDeployer start
INFO: Cluster FarmWarDeployer started.
18 Aug, 2011 4:50:59 PM org.Apache.catalina.ha.session.JvmRouteBinderValve start
INFO: JvmRouteBinderValve started
18 Aug, 2011 4:50:59 PM org.Apache.catalina.ha.session.DeltaManager start
INFO: Register manager /manager to cluster element Host with name localhost
18 Aug, 2011 4:50:59 PM org.Apache.catalina.ha.session.DeltaManager start
INFO: Starting clustering manager at /manager
18 Aug, 2011 4:50:59 PM org.Apache.catalina.ha.session.DeltaManager getAllClusterSessions
INFO: Manager [/manager]: skipping state transfer. No members active in cluster group.
18 Aug, 2011 4:50:59 PM org.Apache.catalina.ha.session.DeltaManager start
INFO: Register manager /docs to cluster element Host with name localhost

INFO: Starting clustering manager at 
18 Aug, 2011 4:50:59 PM org.Apache.catalina.ha.session.DeltaManager getAllClusterSessions
INFO: Manager []: skipping state transfer. No members active in cluster group.
18 Aug, 2011 4:50:59 PM org.Apache.catalina.ha.session.DeltaManager start
INFO: Register manager /Host-manager to cluster element Host with name localhost
18 Aug, 2011 4:50:59 PM org.Apache.catalina.ha.session.DeltaManager start
INFO: Starting clustering manager at /Host-manager
18 Aug, 2011 4:50:59 PM org.Apache.catalina.ha.session.DeltaManager getAllClusterSessions
INFO: Manager [/Host-manager]: skipping state transfer. No members active in cluster group.
18 Aug, 2011 4:51:00 PM org.Apache.catalina.ha.session.DeltaManager start
INFO: Register manager /examples to cluster element Host with name localhost
18 Aug, 2011 4:51:00 PM org.Apache.catalina.ha.session.DeltaManager start
INFO: Starting clustering manager at /examples
18 Aug, 2011 4:51:00 PM org.Apache.catalina.ha.session.DeltaManager getAllClusterSessions
INFO: Manager [/examples]: skipping state transfer. No members active in cluster group.
18 Aug, 2011 4:51:00 PM org.Apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-9080
18 Aug, 2011 4:51:00 PM org.Apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
18 Aug, 2011 4:51:00 PM org.Apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/57  config=null
18 Aug, 2011 4:51:00 PM org.Apache.catalina.startup.Catalina start
INFO: Server startup in 3206 ms
18 Aug, 2011 4:51:01 PM org.Apache.catalina.tribes.io.BufferPool getBufferPool
INFO: Created a buffer pool with max size:104857600 bytes of notified:org.Apache.catalina.tribes.membership.MemberImpl[tcp://192.168.1.101:4002,192.168.1.101,4002, alive=0,id={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }, payload={}, command={}, domain={115 116 97 103 105 110 103 45 99 ...(15)}, ]
18 Aug, 2011 4:51:04 PM org.Apache.catalina.ha.tcp.SimpleTcpCluster memberAdded
INFO: Replication member added:org.Apache.catalina.tribes.membership.MemberImpl[tcp://192.168.1.101:4002,192.168.1.101,4002, alive=0,id={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }, payload={}, command={}, domain={115 116 97 103 105 110 103 45 99 ...(15)}, ]
18 Aug, 2011 4:51:06 PM org.Apache.catalina.ha.tcp.SimpleTcpCluster memberAdded
INFO: Replication member added:org.Apache.catalina.tribes.membership.MemberImpl[tcp://{-64, -88, 2, 53}:4001,{-64, -88, 2, 53},4001, alive=1007,id={80 88 -34 -11 98 72 71 -70 -75 -107 -48 -91 -90 50 -126 116 }, payload={}, command={}, domain={}, ]
18 Aug, 2011 4:51:09 PM org.Apache.catalina.tribes.group.interceptors.TcpFailureDetector performBasicCheck
WARNING: Member added, even though we werent notified:org.Apache.catalina.tribes.membership.MemberImpl[tcp://192.168.1.102:4001,192.168..102,4001, alive=0,id={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }, payload={}, command={}, domain={115 116 97 103 105 110 103 45 99 ...(15)}, ]
18 Aug, 2011 4:51:09 PM org.Apache.catalina.ha.tcp.SimpleTcpCluster memberAdded
INFO: Replication member added:org.Apache.catalina.tribes.membership.MemberImpl[tcp://192.168.1.102:4001,192.168.1.102,4001, alive=0,id={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }, payload={}, command={}, domain={115 116 97 103 105 110 103 45 99 ...(15)}, ]
18 Aug, 2011 4:51:20 PM org.Apache.catalina.ha.deploy.WarWatcher check
INFO: check cluster wars at /usr/share/Tomcat/watch
18 Aug, 2011 4:51:20 PM org.Apache.catalina.ha.deploy.FarmWarDeployer fileModified
INFO: Installing webapp[/myapp] from /usr/share/Tomcat/webapps/myapp.war
18 Aug, 2011 4:51:20 PM org.Apache.catalina.ha.deploy.FarmWarDeployer remove
INFO: Cluster wide remove of web app /myapp
18 Aug, 2011 4:51:26 PM org.Apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive myapp.war
18 Aug, 2011 4:51:27 PM org.Apache.catalina.ha.session.DeltaManager start
INFO: Register manager /myapp to cluster element Host with name localhost
18 Aug, 2011 4:51:27 PM org.Apache.catalina.ha.session.DeltaManager start
INFO: Starting clustering manager at /myapp
18 Aug, 2011 4:51:27 PM org.Apache.catalina.ha.session.DeltaManager getAllClusterSessions
WARNING: Manager [/myapp], requesting session state from org.Apache.catalina.tribes.membership.MemberImpl[tcp://{-64, -88, 2, 101}:4002,{-64, -88, 2, 101},4002, alive=26275,id={-120 -66 103 32 -56 -122 77 51 -95 20 25 88 83 -69 -59 -115 }, payload={}, command={}, domain={}, ]. This operation will timeout if no session state has been received within 60 seconds.
18 Aug, 2011 4:52:27 PM org.Apache.catalina.ha.session.DeltaManager waitForSendAllSessions
SEVERE: Manager [/myapp]: No session state send at 18/8/11 4:51 PM received, timing out after 60,073 ms.
18 Aug, 2011 4:52:44 PM org.Apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive myapp.war
18 Aug, 2011 4:52:45 PM org.Apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
18 Aug, 2011 4:52:48 PM org.Apache.catalina.core.ApplicationContext log
INFO: org.tuckey.web.filters.urlrewrite.utils.Log ERROR: logLevelConf: null
18 Aug, 2011 4:52:48 PM org.Apache.catalina.core.ApplicationContext log
INFO: org.tuckey.web.filters.urlrewrite.UrlRewriteFilter INFO: loaded (conf ok)
18 Aug, 2011 4:52:48 PM org.Apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'SpringAction'
18 Aug, 2011 4:53:00 PM org.Apache.catalina.ha.deploy.WarWatcher check
INFO: check cluster wars at /usr/share/Tomcat/watch
18 Aug, 2011 4:53:20 PM org.Apache.catalina.ha.deploy.WarWatcher check

Update:2for[〜#〜] edit [〜#〜]

ifconfigは、すべてのWebサーバー上のeth0の以下のエントリをリストしました

UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1

すべてのWebサーバーで以下のコマンドを実行しました

route add -Host 228.0.0.4 dev eth0

pingから228.0.0.4はどのシステムでも機能しませんでした

lsof -i:4000は、デプロイヤーWebサーバー(これも上にあります)にリストされているものと同様にリストされています(この投稿の文字数を超えているため、ここに貼り付けることはできません)他のサーバー):

[〜#〜]改善[〜#〜]autoipに変更するマルチキャスト構成を喜んで使用しましたReceiverにあり、デプロイヤーWebサーバーの監視ディレクトリーにwarファイルを配置したときに、別のWebサーバーでmyapp.warが表示されました。問題は、戦争はデプロイヤーのWebサーバーでのみ抽出され(ディレクトリを作成)、他のサーバーでは抽出されないことです。

2
user53864

3つのWebサーバーを更新するにはどうすればよいですか?

2ノードの場合と同じようにします。

デプロイメントノードで、StaticMembershipInterceptorにもう1つのメンバーを追加します。

<Member className="org.Apache.catalina.tribes.membership.StaticMember"
                          port="4002"
                          securePort="-1"
                          Host="192.168.5.208"
                          domain="staging-cluster"
                          uniqueId="{0,1,2,3,4,5,6,7,8,9}"/>

ノード3で、次のようなクラスターを作成します。

        <Cluster className="org.Apache.catalina.ha.tcp.SimpleTcpCluster">
            <Channel className="org.Apache.catalina.tribes.group.GroupChannel">
                <Receiver className="org.Apache.catalina.tribes.transport.nio.NioReceiver"
                      address="192.168.5.208"
                      port="4002"
                      selectorTimeout="100"
                      maxThreads="6"/>
            </Channel>
            <Deployer className="org.Apache.catalina.ha.deploy.FarmWarDeployer"
                tempDir="/opt/Tomcat6/tempdir/"
                deployDir="/opt/Tomcat6/webapps/"
                watchDir="/opt/Tomcat6/watchdir/"
                watchEnabled="false"/>
        </Cluster>

そして、*。warファイルをデプロイメントノードのwatchdirディレクトリにコピーします。以下の行がcatalina.outに表示されます。

INFO: check cluster wars at /usr/share/Tomcat6/watchdir
Aug 17, 2011 2:07:53 PM org.Apache.catalina.tribes.group.interceptors.TcpFailureDetector performBasicCheck
WARNING: Member added, even though we werent notified:org.Apache.catalina.tribes.membership.MemberImpl[tcp://192.168.5.208:40
02,192.168.5.208,4002, alive=0,id={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }, payload={}, command={}, domain={115 116 97 103 105 110 
103 45 99 ...(15)}, ]
Aug 17, 2011 2:07:53 PM org.Apache.catalina.ha.tcp.SimpleTcpCluster memberAdded
INFO: Replication member added:org.Apache.catalina.tribes.membership.MemberImpl[tcp://192.168.5.208:4002,192.168.5.208,4002, 
alive=0,id={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }, payload={}, command={}, domain={115 116 97 103 105 110 103 45 99 ...(15)}, ]
Aug 17, 2011 2:08:12 PM org.Apache.catalina.ha.deploy.WarWatcher check
INFO: check cluster wars at /usr/share/Tomcat6/watchdir
Aug 17, 2011 2:08:12 PM org.Apache.catalina.ha.deploy.FarmWarDeployer fileModified
INFO: Installing webapp[/cas] from /usr/share/Tomcat6/webapps/cas.war
Aug 17, 2011 2:08:12 PM org.Apache.catalina.ha.deploy.FarmWarDeployer remove
INFO: Cluster wide remove of web app /cas
Aug 17, 2011 2:08:13 PM org.Apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive cas.war

ノード3のwebappsフォルダーを確認します。

drwxr-xr-x  8 root    root        4096 Aug 17 14:08 cas
-rw-r--r--  1 root    root    19962865 Aug 17 14:08 cas.war
...

およびcatalina.out

Aug 17, 2011 2:08:13 PM org.Apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive cas.war

[〜#〜]編集[〜#〜]

無効または読み取り不可能なWARファイル:無効なCENヘッダー(不正な署名)

他の2つのノードにデプロイすると、WARファイルが破損しているようです。どのくらいの頻度で発生しますか?

FarmDeployerとは別に私にとって完璧に機能するTomcatクラスタードキュメントからのマルチキャストでFarmDeployerを機能させることは可能ではありませんか?

私はそれを考え出した!その理由は、ネットワークインターフェイスにマルチキャストルートを追加していないため、Tomcatノード間でクラスターメッセージを送受信できないためです。

lsof -i :4000
COMMAND  PID   USER   FD   TYPE    DEVICE SIZE NODE NAME
Java    9968 Tomcat   37u  IPv6 121232775       TCP localhost:terabase (LISTEN)

次の手順で実行します。

  • ネットワークインターフェイスでマルチキャストが有効になっていることを確認してください。

    UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1

  • マルチキャストルートを追加します。

    route add -Host 228.0.0.4 dev bond1

bond1をクラスターメッセージを受信するネットワークインターフェイスに変更する必要があります)

ping -c 4 228.0.0.4でのテストは私にはうまくいきませんでした。だから、私はダウンロードしました マルチキャストテストツール 、それを実行すると、以下の応答が表示されます:

./bin/multicast-test.sh -local 192.168.5.149 -group 228.0.0.4:45564
PATH=/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/var/ossec/bin
Java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02, mixed mode)

Oracle Coherence Version 3.3.1/389
 Grid Edition: Development mode
Copyright (c) 2000-2007 Oracle. All rights reserved.

Starting test on ip=/192.168.5.149, group=/228.0.0.4:45564, ttl=4
Configuring multicast socket...
Starting listener...
Fri Aug 19 10:19:14 ICT 2011: Sent packet 1.
Fri Aug 19 10:19:14 ICT 2011: Received test packet 1 from self (sent 9ms ago).
Fri Aug 19 10:19:14 ICT 2011: Received 69 bytes from an unknown multicast application at 192.168.5.199: ???
Fri Aug 19 10:19:14 ICT 2011: Received 69 bytes from an unknown multicast application at 192.168.5.149: ???

または、lsofnetstat、..で確認できます。

lsof -i :4000
COMMAND   PID   USER   FD   TYPE    DEVICE SIZE NODE NAME
Java    11084 Tomcat   37u  IPv6 121236631       TCP localhost:terabase (LISTEN)
Java    11084 Tomcat   59u  IPv6 121236830       TCP localhost:terabase->192.168.5.199:43519 (ESTABLISHED)
Java    11084 Tomcat   66u  IPv6 121236835       TCP localhost:55538->192.168.5.199:terabase (ESTABLISHED)
Java    11084 Tomcat   67u  IPv6 121236836       TCP localhost:55539->192.168.5.199:terabase (ESTABLISHED)

これで、マルチキャストを使用してTomcatクラスタリングを構成する準備が整いました。

ドキュメントに記載されているのと同じクラスタリング構成を有効にしますが、<Receiverアドレスを「auto」から指定されたインターフェースに変更します。

<Receiver className="org.Apache.catalina.tribes.transport.nio.NioReceiver"
                      address="192.168.5.149"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/>

クラスター内のすべてのノードに対して同じことを行い、それが機能することを確認します。


編集2

改善:Receiverでautoをipに変更するマルチキャスト構成を喜んで使用しました。デプロイヤーWebサーバーの監視ディレクトリにwarファイルを配置すると、別のWebサーバーでmyapp.warが表示されました。問題は、戦争はデプロイヤーのWebサーバーでのみ抽出され(ディレクトリを作成)、他のサーバーでは抽出されないことです。

これは、デプロイメントノードと他のノード間の接続が確立されていることを意味します。それでも同じエラーが発生しましたか "無効または読み取り不可能なWARファイル:無効なCENヘッダー(不正な署名)"?毎回?


Java.util.Zip.ZipException: invalid END header (bad central directory offset)

バグによると 45851 、Tomcatのバージョン(少なくとも6.0.19)をアップグレードして、再試行する必要があります。私はバージョン6.0.29を使用していますが、ご覧のとおり、正常に動作します。


他のWebサーバーでTomcatを再起動する必要があります。その後、コピーして抽出し、サイトはother-web-severs-ip/myappで利用できますが、ドメイン名では利用できません(404エラー)。サイトドメイン名をどこにポイントしますか?DNSのサイトドメイン名をLBにポイントし、同じドメイン名を持つすべてのTomcatWebサーバーに仮想ホストを作成しました

いいえ。完全にクリアしていないようです。すべてのTomcatノードに仮想ホストを作成する必要はありません。

ノード1にApacheHTTPサーバーとTomcatがあり、IPが192.168.1.101であると仮定します。 1.102、1.103にある他の2つのTomcatノード。対応するjvmRouteは、Tomcat1、Tomcat2、Tomcat3です。

ApacheHTTPサーバーのmod_jk.conf

LoadModule          jk_module modules/mod_jk.so

JkWorkersFile       /etc/httpd/conf/workers.properties
JkShmFile           /var/log/httpd/jk.shm

JkLogFile           /var/log/httpd/mod_jk.log
JkLogLevel          info
JkLogStampFormat    "[%a %b %d %H:%M:%S %Y] "

JkMount /myapp/*    cluster

workers.propertiesは次のようなものです。

worker.list = cluster

worker.Tomcat1.port=8009        
worker.Tomcat1.Host=localhost
worker.Tomcat1.type=ajp13
worker.Tomcat1.lbfactor=1

worker.Tomcat2.port=8009        
worker.Tomcat2.Host=192.168.1.102
worker.Tomcat2.type=ajp13
worker.Tomcat2.lbfactor=1

worker.Tomcat3.port=8009        
worker.Tomcat3.Host=192.168.1.103
worker.Tomcat3.type=ajp13
worker.Tomcat3.lbfactor=1

worker.cluster.type=lb
worker.cluster.balance_workers=Tomcat1,Tomcat2,Tomcat3
worker.cluster.sticky_session=1

再試行。

5
quanta