我构建了一个带有两个节点的tomcat集群。我将集群部署程序FarmWarDeployer配置为监视war文件的目录。如果启动了这两个节点,所有这些都可以正常工作:在node1中部署war监视dir将把war文件发送到node2。但是,如果在node2关闭时完成了监视目录中war文件的副本,则node2将不会接收新的war文件。
是否有任何配置可以让节点检查新的war文件并在其启动时接收它?
发布于 2014-08-12 19:10:57
我不相信这是可能的。据我所知,FarmWarDeployer侦听集群消息,这些消息是在找到新的WAR文件或需要取消部署WAR时发送的。如果集群中的某个节点出现故障,它将丢失这些消息。
我认为您可以在重新启动下线节点并触发另一个部署之后运行touch <your-war-file>。或者,由于您有一个小型集群,因此您可以在重新启动WAR文件之前手动将其复制到下线节点。然后,当节点重新启动时,它将是最新的。
除此之外,我建议考虑另一种部署WAR文件的方法。一些适用于小型集群的快速建议:
webapps目录)。不要直接从共享存储中部署,这是自找麻烦。对于更大的安装,您可以考虑使用一个部署工具,如Puppet、Chef、Ansible或其他类似的技术。实际上,您可以使用这些来进行更小的安装,这可能太过了。
发布于 2018-12-19 02:39:24
我使用下面的配置,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文件。给主机节点一些时间,它将部署并部署到其他节点。对于prod,可能需要设置processDeployFrequency="2"以减少监视频率。
希望这能帮上忙。
https://stackoverflow.com/questions/25268086
复制相似问题