Hi-

I'm currently running a two node cluster of Tomcat servers. I'm trying to 
implment Farm War Deployer (org.apache.catalina.ha.deploy.FarmWarDeployer) to 
deploy my war files to the cluster. The deployer is successfully deploying wars 
on the primary node when placed in the watch directory. On the secondary node 
the war file makes it to the tmp directory but is not deployed. The secondary 
node returns the following error:

    06-Aug-2019 09:56:31.082 SEVERE [Tribes-Task-Receiver[localhost-Channel]-3] 
org.apache.catalina.ha.deploy.FarmWarDeployer.messageReceived Failed to rename 
[/var/tmp/war-tmp/ServerHealth.war] to 
[/opt/tomcat/latest/webapps/ServerHealth.war]

Server Configuration

  - Apache Tomcat/9.0.22, 
  - openjdk 12.0.2 2019-07-16
    OpenJDK Runtime Environment 19.3 (build 12.0.2+9)
    OpenJDK 64-Bit Server VM 19.3 (build 12.0.2+9, mixed mode, sharing)

The <Cluster> tag is placed in the <Host> tag on both machines. The deployer 
tag is setup as follows with watchEnabled set to true on the primary server and 
false on the secondary. "{{ tomcat_McastAddress }}" is replaced by Ansible.

  <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="{{ tomcat_McastAddress }}" 
                  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.MessageDispatchInterceptor"/>
    </Channel>

    <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 
           
filter=".*\.gif|.*\.js|.*\.jpg|.*\.jpeg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/>

    <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

    <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" 
              tempDir="/var/tmp/war-tmp/" 
              deployDir="/opt/tomcat/latest/webapps/" 
              watchDir="/var/tmp/war-watch/" 
              watchEnabled="{{ tomcat_deployerWatchEnabled|default('false', 
true) }}" 
              processDeployFrequency="2" />

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

The tempDir, deployDir and watchDir have the following owner and group 
permissions set.

  /var/tmp/
  drwxrwxr-x. 2 tomcat tomcat 30 Aug  6 09:56 war-tmp
  drwxrwxr-x. 2 tomcat tomcat  6 Aug  6 08:18 war-watch

  /opt/tomcat/lastest/
  drwxr-x---. 7 tomcat tomcat    81 Aug  6 09:45 webapps

A checksum of the war file on both servers match so the file is being 
transfered to the secondary server's tempDir correctly. It just doesnt seem to 
be getting transered from the tempdir to the deployDir successfully.

Any help in this matter would be greatly appreciated. Thanks.

-Musomi


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

Reply via email to