我们试图让 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
,其中可能包含许多步骤。把它想象成重构出一个可以做很多事情的代码方法。调用您的方法的代码成为单行代码。
你不可能找到一个命令来完成你想要的,除非它只是执行一个现有的脚本,该脚本是别人写的,可以做你想做的事。
无论哪种方式,一次能够将代码部署到单个服务器通常是个好主意。这使您可以始终保持您的应用程序/服务正常运行,因为您一次只影响一个节点,而其他节点可以继续运行。它还有一个优点,如果出现严重错误,您可以不重新启用集群中的一个节点并诊断一个服务器的问题,而不是通过糟糕的部署来摧毁整个集群。我们的脚本遵循的部署策略步骤是:
- 禁用单节点监控
- 将该节点拉出集群
- 为其部署新代码
- 使用新代码验证节点是否正常运行
- 将节点放回集群
- 为该节点重新启用监控
- 对每个其他节点重复步骤
如果任何步骤出现问题,我们始终为用户提供一个工作环境。
关于tomcat - maven一行部署到tomcat集群(多个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11766520/