Azure VM 规模集自动缩减通知

Azure VM scale set auto-scale scale down notifications

我有一个 VM 规模集,我想为其设置自动缩放,我想知道缩减有多突然。在 VM 被销毁之前,我想确保所有活动的 long-运行 请求都已完成。这可能吗?

我对以下内容感到好奇:

我的规模集中的 VM 将位于负载均衡器之后,我需要能够在销毁之前耗尽连接(从后端池中删除 VM)。

How does auto-scaling decides which VMs to destroy when scaling down?

默认情况下,自动伸缩会删除较大的Instance ID(例如,Instance ID为0,2,3,vmss会删除3)。我们可以使用 powershell 获取 vmss vms 的实例 ID。

PS C> Get-AzureRmVmssvm -ResourceGroupName "vmss" -VMScaleSetName "vmss"

ResourceGroupName   Name Location            Sku Capacity InstanceID ProvisioningState
-----------------   ---- --------            --- -------- ---------- -----------------
VMSS              vmss_0   westus Standard_D1_v2                   0         Succeeded
VMSS              vmss_2   westus Standard_D1_v2                   2         Succeeded

Is there any notification inside the VM that it is scheduled to be destroyed?

据我所知,autoscale通过邮件通知资源的管理员和贡献者,VM不会收到通知。

Can a VM that is scheduled to be destroyed control when it gets destroyed (and hold off destruction until all requests are complete)?

我们暂时不能推迟销毁,直到所有请求都完成。

在大多数情况下,我们使用负载均衡器部署 vmss,它使用 "round-robin" 方法,VMSS 实例在实例被删除之前不会收到请求。

I want to make sure any active long-running requests complete. Is this possible?

据我所知,我们可以为自动缩放选择不同的 OS metrics,但我们不能确保 VMSS 会在 long-运行 请求完成。

自动缩放有多种策略,它可以根据这些策略选择在缩小时删除哪些 VM,例如“NewestVM”将删除最后启动的 VM,您可以在此处阅读更多信息:https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-scale-in-policy

关于 VM 内部关于终止的通知,有一个称为“终止通知”的新功能,它发送一个事件,您可以从本地主机元数据中读取该事件,例如

curl -s -H "Metadata:true" "http://169.254.169.254/metadata/instance?api-version=2019-06-01"

在此处阅读更多内容:https://azure.microsoft.com/en-us/blog/azure-virtual-machine-scale-sets-now-provide-simpler-management-during-scalein/

VM 可以等待终止超时,或向元数据发送信号(POST 请求)以在超时前继续终止。

要耗尽连接,其中一种方法是阻止健康探测 IP 地址 168.63.129.16,因此 VM 在负载均衡器或应用程序网关中将“不健康”,具体取决于您使用的是什么,并且不会有新流量在旧的现有流量仍处于活动状态时发送。