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

时间:2012-08-01 19:50:15

标签: tomcat deployment maven-2 hudson jenkins

我们正在尝试将maven部署到多个服务器,这些服务器只需一行即可构成我们的集群。

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

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

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

有没有办法实现这个目标?要么使用maven-tomcat-plugin?或Jenkins / Hudson插件?

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

1 个答案:

答案 0 :(得分:1)

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

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

你不可能找到一个单独的命令来完成你所追求的目标,除非它只是执行一个其他人编写的你想要的现有脚本。

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

  1. 禁用单节点监控
  2. 将该节点拉出群集
  3. 向其部署新代码
  4. 使用新代码验证节点是否正常运行
  5. 将节点放回群集
  6. 重新启用对该节点的监控
  7. 为每个其他节点重复步骤
  8. 如果在任何步骤出现任何问题,我们总会为用户提供一个工作环境。