代码之家  ›  专栏  ›  技术社区  ›  Seb

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

  •  -1
  • Seb  · 技术社区  · 7 年前

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

    Task1
    Task2
    Task3
    Task4
    

    和一组服务器:

    SVR1
    SVR2
    SVR3
    SVR4
    

    目前,我有一个部署管道,它有效地表示(都在同一个代理上,使用[无]并行选项):

    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并行部署方面也没有太多经验。

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

    提前感谢

    2 回复  |  直到 7 年前
        1
  •  1
  •   starian chen-MSFT    7 年前

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

    1. 添加变量以存储服务器(例如名称: servers ; 值: SVR1,SVR2,SVR3,SVR4 )
    2. 为每个任务组(task1、task2等)添加多个代理阶段
    3. 为每个代理阶段配置执行计划(选择一个阶段>检查多个配置选项>指定 服务器 (step1变量)在乘法器输入框中
    4. 然后您可以从 服务器 任务中的变量

    另一方面,您可以在同一台机器和池中配置多个代理,然后在每个阶段的最大代理数输入框中指定代理数,以减少构建/发布时间。

        2
  •  0
  •   Marina Liu    7 年前

    由于您只有一个管道,任务将串行执行,而不是并发执行。

    如果要在不同的服务器之间同时部署任务,则应购买其他管道。