3

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

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

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

詹金斯似乎有一个基于货物的部署插件,但一次只能处理一台服务器

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

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

4

1 回答 1

1

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

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

您可能不会找到一个命令来执行您想要的操作,除非它只是执行一个其他人编写的现有脚本来执行您想要的操作。

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

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

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

于 2012-08-01T21:01:45.063 回答