Deployment 如何使用VSTS发布过程跨多个服务器并行部署分布式系统

Deployment 如何使用VSTS发布过程跨多个服务器并行部署分布式系统,deployment,parallel-processing,azure-devops,azure-pipelines-release-pipeline,Deployment,Parallel Processing,Azure Devops,Azure Pipelines Release Pipeline,下面是我的场景,我在Visual Studio online中有一个任务组列表,这些任务组接受目标服务器的MachineName参数: Task1 Task2 Task3 Task4 和一组服务器: SVR1 SVR2 SVR3 SVR4 目前,我有一个部署管道,它使用[None]并行选项在同一个代理上有效地表示所有: Task1(SVR1) Task1(SVR2) Task1(SVR3) Task1(SVR4) Task2(SVR1) Task2(SVR2) Task2(SVR3) Ta

下面是我的场景,我在Visual Studio online中有一个任务组列表,这些任务组接受目标服务器的MachineName参数:

Task1
Task2
Task3
Task4
和一组服务器:

SVR1
SVR2
SVR3
SVR4
目前,我有一个部署管道,它使用[None]并行选项在同一个代理上有效地表示所有:

Task1(SVR1)
Task1(SVR2)
Task1(SVR3)
Task1(SVR4)

Task2(SVR1)
Task2(SVR2)
Task2(SVR3)
Task2(SVR4)
etc...
这些任务必须按特定顺序执行,并且在所有服务器都收到上一个任务之前,任何任务都不应在任何服务器上启动。然而,目前的部署过程并不是特别具有可扩展性。每次我们添加一个额外的节点,部署时间就会增加大约1分钟20秒

我想做的是:

Execute Task1 on all servers (Wait until all are complete)
Execute Task2 on all servers (Wait until all are complete)
Execute Task3 on all servers (Wait until all are complete)
etc.. you get the picture.
我目前还没有在网上找到一个完全符合我需要的示例,而且我在使用VST并行部署方面也没有太多经验

有没有一个简单的方法可以做到这一点?我需要运行多个代理才能让它工作,还是它可以在同一个代理上运行多个并行任务


提前感谢

因为您只有一个管道,所以任务将以串行方式而不是并发方式执行


如果您想在不同的服务器之间同时部署任务,您应该购买额外的管道。

您可以为每个任务组task1、task2等添加多个代理阶段:

添加一个变量来存储服务器,例如名称:servers;值:SVR1、SVR2、SVR3、SVR4 为每个任务组task1、task2等添加多个代理阶段… 为每个代理阶段配置执行计划选择阶段>选中多重配置选项>在乘数输入框中指定服务器step1变量 然后可以从任务中的servers变量获取服务器
另一方面,您可以在同一台机器和池中配置多个代理,然后在每个阶段的最大代理数输入框中指定代理数,以减少生成/发布时间。

您能否解释为什么要在所有服务器上执行task1,然后执行task2等?由于您部署在不同的服务器上,您是否应该分别部署到服务器上,例如在SVR1上执行task1,而不是在SVR2上执行task1,那么在SVR1上执行task2不应该等待?@MarinaLiu MSFT-这是一个在多个节点上运行的分布式奥尔良应用程序。任务1是“停止所有服务”。然后,Task2是“卸载所有旧服务”。任务3-“将新文件复制到服务器”任务4-“安装所有新服务”。这就是为什么我们要按顺序执行。我对奥尔良不熟悉。但是如果你真的想把这四个任务依次部署到不同的服务器上,你应该在你的发布定义中添加16个任务。我有一个管道,有一个代理阶段和42个任务。问题是这会以串行顺序执行它们。我要做的是make=Agent阶段在所有服务器上执行任务1,Agent阶段在所有服务器上执行任务2。但我想在这两者之间等待。对于乘数和变量,这可能吗?您可以使用乘数,但它的工作原理与您当前的情况类似,因为您只有一个管道,所以所有任务都是串行执行的。例如task1不会在不同的服务器之间并发执行。好的-我有一个任务组,它接受以下参数:RemoteComputer、Username、Password。因为任务组运行powershell脚本。是否可以将服务器/远程计算机名称从代理阶段乘数“传递”到并行任务组中。我的任务组:。我的代理阶段:。我的变量:。如何在代理阶段通过在任务组的“远程计算机”参数中填入不同的值来指定一组我希望它并行运行的乘数。@Seb 1。使用SVR1、SVR2、SVR3、SVR4值2指定服务变量。在乘数3中指定“服务”。在RemoteComputer框中指定$services。为了并行运行乘数,代理池必须有多个代理。太棒了,现在所有这些都完成并并行运行了!非常感谢。