我构建了一个包含2个节点的tomcat集群。我配置了集群部署者FarmWarDeployer来监视war文件的目录。 如果启动2个节点,则一切正常:在node1中对watch dir部署war将向war2发送war文件。 但是如果在node2关闭时watch目录中的war文件的副本完成,则node2不会收到新的war文件。
是否有任何配置让节点检查新的war文件并在启动时接收它?
答案 0 :(得分:1)
我不相信这是可能的。据我了解,FarmWarDeployer侦听在找到新WAR文件或需要取消部署WAR时发送的集群消息。如果群集中的某个节点出现故障,它将错过这些消息。
我想你可以在重新启动被击落的节点后运行touch <your-war-file>
并触发另一次部署。或者,由于您有一个小型集群,因此您可以在重新启动之前手动将WAR文件复制到已关闭的节点。然后,该节点在重新启动时将是最新的。
除此之外,我建议您查看部署WAR文件的不同方法。一些适用于小型集群的快速建议:
将WAR文件复制到共享存储(即安装到两个节点)。将cron作业或小后台任务添加到监视共享存储装载的每个节点,并在找到新文件时将其部署(即复制到webapps
目录)。 不要直接从共享存储部署,而是要求解决问题。
使用scp或类似工具将WAR文件复制到节点。使用类似的cron作业或后台任务来获取上传的文件并进行部署。
对于大型安装,您可以使用Puppet,Chef,Ansible等部署工具或其他类似技术。真的可以将它们用于较小的安装,它可能有点矫枉过正
答案 1 :(得分:0)
我使用以下配置,将rem嵌套在..中 (您的群集必须首先工作,我使用单播群集)。
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/var/tmp/war-tmp/" deployDir="/usr/local/tomcat8053/webapps/" watchDir="/var/tmp/war-watch/" watchEnabled="true" processDeployFrequency="1" />
为集群中的所有其他节点重复配置,但设置 watchEnabled =“ false” 然后刷新(即使要重新复制) watchDir 中的war文件。给主机节点一些时间,它将部署,然后部署到其他节点。 对于产品,可能需要设置 processDeployFrequency =“ 2” 以减少观看次数。
希望这对某人有帮助。