我在Azure上有虚拟机。每个主vm都有很少的运行Slurm的计算节点。
作业完成后,Slurm关闭脚本删除计算节点,主节点继续运行。我也想关闭主人。
我创建了一个关闭主服务器的Azure Runbook。 我可以在关闭计算节点的脚本中添加一行来调用Runbook。
问题:
每个计算节点都会发送关闭其主服务器的请求,这对于少数计算节点是相同的。导致多次发送相同请求的原因。
在Runbook中是否有任何方法可以知道已收到关闭特定mastrer的请求,并跳过关闭同一master的所有其他请求。 我可以锁定Runbook或打开请求已提交的标志吗?
感谢。
答案 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。