tomcat - maven一行部署到tomcat集群(多个)

标签 tomcat deployment maven-2 hudson jenkins

我们试图让 maven 仅在一行中部署到构成我们集群的多个服务器。

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

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

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

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

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

最佳答案

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

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

你不可能找到一个命令来完成你想要的,除非它只是执行一个现有的脚本,该脚本是别人写的,可以做你想做的事。

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

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

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

关于tomcat - maven一行部署到tomcat集群(多个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11766520/

相关文章:

java - java.io.FileReader 读取的文件放在哪里?

eclipse - 运行 Tomcat + Spring + Maven 项目时出现 NoClassDefFoundError (Eclipse)

batch-file - Tomcat 在 Windows 批处理文件中设置 CATALINA_OPTS

java - spring jpa 集成错误

php - 管理 wordpress 环境

c++ - 为 Windows 部署 QT exe 时遇到问题

rest - jboss fuse 6.2 休息 cxf org.apache.cxf.service.factory.ServiceConstructionException : "No resource classes found"

java - maven 的 classNotFound 错误?

maven-2 - 将 websphere 门户项目转换为 maven

Maven + Surefire/Failsafe - forkMode ="perthread"不起作用...解决方法?