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

Azure:我如何确保Runbook每台服务器只调用一次

  •  0
  • user1980099  · 技术社区  · 8 年前

    我在Azure上有虚拟机。每个主虚拟机都没有运行slurm的计算节点。

    当作业完成时,slurm shutdown脚本删除的计算节点将保持运行。我也要关闭主机。

    我创建了一个关闭主服务器的Azure运行手册。 我可以在关闭计算节点的脚本中添加行来调用该运行手册。

    问题是:

    每个计算节点都将发送关闭其主节点的请求,这对于少数计算节点是相同的。什么原因导致多次发送相同的请求?

    在运行手册中,是否有任何方法可以知道接收到关闭特定主服务器的请求,并跳过关闭同一主服务器的所有其他请求。 我可以锁定运行手册或打开请求已提交的标志吗?

    谢谢。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Anatoli Beliaev    8 年前

    也许最简单的方法是使用自动化变量,如:

    $alreadySent = Get-AutomationVariable -Name ShutdownRequestSent
    if (-not $alreadySent) {
        # Send shutdown request
        ...
        Set-AutomationVariable -Name ShutdownRequestSent -Value $true
    }
    

    您必须弄清楚何时以及如何将变量重新设置为$false。

    这个解决方案很简单,但不完全是防弹的,在您的情况下可能还不够。例如,如果此Runbook的两个作业同时到达get automationvariable命令,它们都将发送关闭请求。或者,如果发送关闭请求的作业在执行set automationvariable之前因任何原因崩溃,则下一个作业将发送第二个关闭请求。我不知道这对你是不是有问题。如果您需要一次更强劲的跑步保证,请考虑使用 Lease Blob .