【问题标题】:maven deploy to tomcat cluster (multiple) in one linemaven在一行中部署到tomcat集群(多个)
【发布时间】:2012-07-30 18:41:00
【问题描述】:

我们正在尝试将 maven 部署到许多多台服务器,这些服务器仅在一行中就形成了我们的集群。

This solution 工作得很好,只是我们需要重复运行它(每个服务器安装 1 次),我们的目标是在我们的集成服务器 (jenkins) 构建成功的工件之后执行它。目前,拥有矩阵功能并不是一个真正的选择。如果我们只需要部署它,为什么要为每台服务器重新构建项目? (加上花在这上面的时间)

我们一直在尝试使用 maven 配置文件(每台服务器一个并尝试一次全部激活它们,或者一个包含所有服务器的大型配置文件)但该选项没有运气,tomcat-maven-plugin 不起作用那样。

Jenkins 似乎有一个基于 cargo 的部署插件,但一次只能处理一台服务器

有没有办法做到这一点?要么使用 maven-tomcat-plugin?还是 Jenkins/Hudson 插件?

您的专家还有其他关于如何在成功构建后将战争部署到集群的想法吗? (我试图避免使用 shell 脚本,只是因为可移植性问题)

【问题讨论】:

    标签: tomcat deployment maven-2 hudson jenkins


    【解决方案1】:

    如果您只需要一行代码,我建议将 CMD、Ant、bash 等脚本作为“一行”执行,并让该脚本做不止一件事。

    例如,如果您使用Ant... 你的一行可能是这样的:ant DeployToCluster。并且您的 build.xml 文件可能包含目标 DeployToCluster,其中可能包含许多步骤。把它想象成重构出一种可以做很多事情的代码方法。调用你的方法的代码变成了单行代码。

    你不可能找到一个命令来做你想做的事,除非它只是执行一个其他人编写的现有脚本来做你想做的事。

    无论哪种方式,能够一次将代码部署到单个服务器通常是一个好主意。这使您可以始终保持您的应用程序/服务处于运行状态,因为您一次只影响一个节点,而其他节点可以继续运行。它还有一个好处是,如果出现严重错误,您可以不重新启用集群中的一个节点并诊断一台服务器的问题,而不是用一个糟糕的部署来取出整个集群。我们的脚本遵循的部署策略步骤是:

    1. 禁用单个节点的监控
    2. 将该节点拉出集群
    3. 向其部署新代码
    4. 使用新代码验证节点是否正常运行
    5. 将节点放回集群
    6. 重新启用对该节点的监控
    7. 对每个其他节点重复步骤

    如果任何步骤出现问题,我们始终为用户提供工作环境。

    【讨论】:

    • 如果你需要从maven执行一个Ant脚本/目标,我之前用过Ant-Run插件,效果很好。 maven.apache.org/plugins/maven-antrun-plugin
    • 感谢您在提到一次只做一台服务器时提出了一个很好的观点。现在,这是针对我们的用户接受度测试的,实际上出现故障会提醒我们这一点。我想我们需要重新评估整个过程
    • 谢谢!我不是有意破坏你的计划,但这些都是值得考虑的好事情。我猜你投入多少精力取决于几件事:1)停机时间可以接受吗?多长时间? 2) 你需要这个过程有多可靠?例如如果发生故障,服务器应该处于什么状态?祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 2011-01-07
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 2013-03-23
    相关资源
    最近更新 更多