【问题标题】:Deploy webapps tomcat 7 cluster with FarmWarDeployer使用 FarmWarDeployer 部署 webapps tomcat 7 集群
【发布时间】:2014-08-12 15:18:14
【问题描述】:

我构建了一个有 2 个节点的 tomcat 集群。我将集群部署程序 FarmWarDeployer 配置为监视目录中的战争文件。 如果启动 2 个节点,一切正常:在节点 1 中的监视目录上部署战争会将战争文件发送到节点 2。 但是如果在 node2 宕机的情况下完成 watch 目录中的 war 文件的复制,node2 就不会收到新的 war 文件。

是否有任何配置让节点检查新的war文件并在它启动时接收它?

【问题讨论】:

    标签: java tomcat cluster-computing


    【解决方案1】:

    我不相信这是可能的。据我了解,FarmWarDeployer 会侦听在找到新 WAR 文件或需要取消部署 WAR 时发送的集群消息。如果您的集群中的一个节点出现故障,它将丢失这些消息。

    我想你可以在宕机的节点重新启动后运行touch <your-war-file> 并触发另一个部署。或者,由于您有一个小型集群,您可以在重新启动之前手动将 WAR 文件复制到停机节点。然后该节点将在重新启动时保持最新状态。

    除此之外,我建议您考虑另一种部署 WAR 文件的方式。一些适用于小型集群的快速建议:

    1. 将 WAR 文件复制到共享存储(即安装到两个节点)。向监控共享存储挂载的每个节点添加一个 cron 作业或小型后台任务,当找到新文件时,将其部署(即复制到 webapps 目录)。 不要直接从共享存储部署,那样会自找麻烦。

    2. 使用 scp 或类似工具将 WAR 文件复制到您的节点。使用类似的 cron 作业或后台任务来获取上传的文件并进行部署。

    对于较大的安装,您可以考虑使用 Puppet、Chef、Ansible 等部署工具或其他类似技术。你真的可以用这些来做一个更小的安装,只是可能有点过分了

    【讨论】:

      【解决方案2】:

      我使用下面的配置,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" 以减少观看频率。

      希望这对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-29
        • 2013-06-24
        • 1970-01-01
        • 1970-01-01
        • 2012-08-16
        • 2017-08-30
        • 2015-10-24
        相关资源
        最近更新 更多