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