Azure:如何确保每台服务器只调用一次 Runbook
Azure: how can I make sure Runbook invoke only one time per server
我在 Azure 上有虚拟机。每个主虚拟机有几个计算节点 运行 Slurm.
当一个作业完成时,Slurm 关闭脚本删除的计算节点和主节点保留 运行。我也想关master
我创建了一个关闭主服务器的 Azure Runbook。
我可以在关闭计算节点的脚本中添加一行来调用该 Runbook。
问题:
每个计算节点都会发送关闭其master的请求,少数计算节点也是如此。同一个请求多次发送是什么原因
是否有任何方法可以在 Runbook 中知道已收到关闭特定 master 的请求并跳过所有其他关闭同一 master 的请求。
我可以锁定 Runbook 或打开请求已提交的标记吗?
谢谢。
也许最简单的方法是使用自动化变量,如下所示:
$alreadySent = Get-AutomationVariable -Name ShutdownRequestSent
if (-not $alreadySent) {
# Send shutdown request
...
Set-AutomationVariable -Name ShutdownRequestSent -Value $true
}
您将不得不弄清楚何时以及如何将变量再次重置为 $false。
这个解决方案很简单,但并不完全可靠,对您的情况可能还不够。例如,如果 运行 这本书的两个作业大约同时到达 Get-AutomationVariable 命令,它们都会发送一个关闭请求。或者,如果发送关闭请求的作业在执行 Set-AutomationVariable 之前因任何原因崩溃,则下一个作业将发送第二个关闭请求。我不知道这对你来说是否是个问题。如果您需要更强的 运行-once 保证,请考虑使用 Lease Blob。
我在 Azure 上有虚拟机。每个主虚拟机有几个计算节点 运行 Slurm.
当一个作业完成时,Slurm 关闭脚本删除的计算节点和主节点保留 运行。我也想关master
我创建了一个关闭主服务器的 Azure Runbook。 我可以在关闭计算节点的脚本中添加一行来调用该 Runbook。
问题:
每个计算节点都会发送关闭其master的请求,少数计算节点也是如此。同一个请求多次发送是什么原因
是否有任何方法可以在 Runbook 中知道已收到关闭特定 master 的请求并跳过所有其他关闭同一 master 的请求。 我可以锁定 Runbook 或打开请求已提交的标记吗?
谢谢。
也许最简单的方法是使用自动化变量,如下所示:
$alreadySent = Get-AutomationVariable -Name ShutdownRequestSent
if (-not $alreadySent) {
# Send shutdown request
...
Set-AutomationVariable -Name ShutdownRequestSent -Value $true
}
您将不得不弄清楚何时以及如何将变量再次重置为 $false。
这个解决方案很简单,但并不完全可靠,对您的情况可能还不够。例如,如果 运行 这本书的两个作业大约同时到达 Get-AutomationVariable 命令,它们都会发送一个关闭请求。或者,如果发送关闭请求的作业在执行 Set-AutomationVariable 之前因任何原因崩溃,则下一个作业将发送第二个关闭请求。我不知道这对你来说是否是个问题。如果您需要更强的 运行-once 保证,请考虑使用 Lease Blob。