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

时间:2018-05-24 13:49:58

标签: azure azure-virtual-machine slurm azure-automation

我在Azure上有虚拟机。每个主vm都有很少的运行Slurm的计算节点。

作业完成后,Slurm关闭脚本删除计算节点,主节点继续运行。我也想关闭主人。

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

问题:

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

在Runbook中是否有任何方法可以知道已收到关闭特定mastrer的请求,并跳过关闭同一master的所有其他请求。 我可以锁定Runbook或打开请求已提交的标志吗?

感谢。

1 个答案:

答案 0 :(得分:0)

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

$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