一尘不染

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

tomcat

我们正在尝试将maven部署到仅在一行中构成集群的许多多台服务器。

该解决方案运行良好,只是需要重复运行(每个服务器安装1次),并且我们的目标是在集成服务器(jenkins)构建成功工件后进行操作。而且,目前还不具备矩阵功能。如果只需要部署每个服务器,为什么还要再次构建该项目?(加上花费的时间)

我们一直在尝试使用Maven配置文件(每个服务器一个,并尝试一次激活所有配置文件,或者尝试使用所有服务器上的一个大型配置文件),但是使用该选项没有运气,tomcat-
maven-plugin无法正常工作。

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

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

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


阅读 265

收藏
2020-06-16

共1个答案

一尘不染

如果您只需要一行就可以完成,我建议将CMD,Ant,bash等脚本作为“一行”执行,并使该脚本做多件事。

例如,如果您使用Ant …,您的一行可能是这样的:ant DeployToCluster。并且您的build.xml文件可能具有DeployToCluster可能包含许多步骤的目标。可以将其视为重构一种可以完成许多事情的代码方法。调用您的方法的代码变成了单行代码。

您将不可能找到一个命令来执行所要执行的操作,除非该命令只是执行别人编写的现有脚本来执行您想要的操作。

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

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

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

2020-06-16