使用 Azure Spot Virtual Machines 來管理 Microsoft Azure 虛擬機器擴展集

在擴展集中使用 Azure Spot Virtual Machines,可讓您以大幅降低的成本使用我們未運用的容量。 在任何時候,只要 Azure 又需要這些容量,Azure 基礎結構就會收回 Azure 現成虛擬機器執行個體。 因此,Azure Spot Virtual Machine 執行個體對於可因應中斷的工作負載來說很好用,例如批次處理作業、開發/測試環境、大量運算工作負載等。

可用容量的數量會根據大小、區域和當日時間等等而有所不同。 在擴展集上部署 Azure 現成虛擬機器執行個體時,只有在有可用的容量時,Azure 才會配置執行個體,但這些執行個體沒有 SLA。 Azure 現成虛擬機器擴展集是部署在單一容錯網域中,且不保證高可用性。

限制

Azure Spot Virtual Machine 不支援下列大小:

  • B 系列
  • 任何大小的促銷版本 (例如 Dv2、NV、NC、H 促銷大小)

除了由 21Vianet 運作的 Microsoft Azure 之外,Azure 現成虛擬機器可以部署到任何區域。

目前支援下列規則類型

  • Enterprise 合約
  • 隨用隨付供應項目程式碼 (003P)
  • 贊助 (0036P 和 0136P)
  • 若為雲端服務提供者 (CSP) ,請參閱合作夥伴中心或直接與您的合作夥伴聯絡。

定價

Azure 位置虛擬機器執行個體的定價是根據區域和 SKU 的變數為準。 如需詳細資訊,請參閱 LinuxWindows 的定價。

採用變動定價,您可選擇使用最多 5 個小數位數來設定最大價格 (以美元 (USD) 計價)。 例如,0.98765 的值是每小時 $0.98765 美元的最大價格。 如果您將最大價格設為 -1,將不會根據價格來收回執行個體。 執行個體的價格會是 Azure 現成虛擬機器的目前價格或標準執行個體的價格 (以便宜者計),只要有可用的容量和配額。

收回原則

使用 Azure 現成的虛擬機器建立擴展集時,您可以將收回原則設定為解除配置 (預設) 或 刪除

解除配置原則會將已收回的執行個體移至已停止 (已解除配置) 狀態,讓您可重新部署收回的執行個體。 不過,不保證配置會成功。 已解除分配的 VM 會依據擴展集執行個體配額計算,而您需支付基礎磁碟的費用。

如果您想讓執行個體在收回時一併刪除,可將收回原則設定為刪除。 收回原則設定為刪除的情況下,您可以藉由增加擴展集執行個體計數屬性來建立新的 VM。 Azure 會一同刪除已收回的 VM 與其基礎磁碟,因此您將不需要支付此儲存體的費用。 您也可以使用擴展集的自動調整功能,自動嘗試和補償收回的 VM,不過不保證配置成功。 建議您只在收回原則設定為刪除時,才讓 Azure 現成虛擬機器擴展集使用自動調整功能,以節省磁碟成本並避免達到配額限制。

使用者可以選擇透過 Azure Scheduled Events 接收 VM 內通知。 這會在您的 VM 被收回時通知您,而且您在收回前有 30 秒的時間可完成任何工作並執行關機。

收回歷程記錄

您可以在入口網站的區域中查看每個大小的歷程記錄定價和收回費率。 選取 [檢視定價歷程記錄] 並比較鄰近地區的價格 ,以查看特定大小的資料表或定價圖表。 下列影像中的定價和收回率僅為範例。

圖表

Screenshot of the region options with the difference in pricing and eviction rates as a chart.

資料表

Screenshot of the region options with the difference in pricing and eviction rates as a table.

嘗試還原

此平台層級功能使用 AI 來自動嘗試還原擴展集內已收回的 Azure 現成虛擬機器執行個體,以維護目標執行個體計數。

嘗試還原的優點:

  • 嘗試還原由於容量而收回的 Azure 位置虛擬機器。
  • 還原的 Azure 位置虛擬機器預期會執行較長的持續時間,而較低的容量會觸發收回。
  • 改善 Azure 點虛擬機器的存留期,讓工作負載執行較長的時間。
  • 協助虛擬機器擴展集維護 Azure Spot Virtual Machines 的目標計數,類似於隨用隨付 VM 目前已有的維護目標計數功能。

在使用自動調整的擴展集中,已停用嘗試還原。 擴展集中的 VM 數目是由自動調整規則所驅動。

放置群組

放置群組是一種類似於 Azure 可用性設定組的建構,並有自己的容錯網域和升級網域。 根據預設,擴展集包含一個大小上限為 100 個 VM 的位置群組。 如果名為 singlePlacementGroup 的擴展集屬性設定為 false,擴展集可以由多個放置群組構成,且具有範圍為 0 到 1,000 個的 VM。

重要

除非您使用的是與 HPC 搭配的功能,否則強烈建議您將擴展集屬性 singlePlacementGroup 設為 false,以啟用多個放置群組,以便在區域或區域之間進行更佳的調整。

在擴展集中部署 Azure Spot Virtual Machines

若要在擴展集上部署 Azure Spot Virtual Machines,您可以將新的優先權旗標設定為現成品。 擴展集中的所有 VM 都會設定為現成品。 若要建立具有 Azure Spot Virtual Machines 的擴展集,請使用下列其中一種方法:

入口網站

建立使用 Azure Spot Virtual Machines 之擴展集的程序,與使用者入門文章所述程序相同。 部署擴展集時,可以選擇設定「現成品」旗標,回收類型及回收原則;如果想嘗試還原執行個體:Create a scale set with Azure Spot Virtual Machines

Azure CLI

重要

自 2023 年 11 月起,如果未指定協調流程模式,則使用 PowerShell 和 Azure CLI 建立的 VM 擴展集會預設為彈性協調流程模式。 如需此變更的詳細資訊,以及您應該採取的動作,請前往針對 VMSS PowerShell/CLI 客戶的中斷性變更 - Microsoft 社群中樞

建立使用 Azure Spot Virtual Machines 之擴展集的程序,與使用者入門文章所述程序相同。 只需新增 '--Priority Spot' 並加入 --max-price。 在此範例中,我們針對 --max-price 使用 -1,如此就不會根據價格來收回執行個體。

az vmss create \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --image Ubuntu2204 \
    --orchestration-mode Flexible \
    --single-placement-group false \
    --admin-username azureuser \
    --generate-ssh-keys \
    --priority Spot \
    --eviction-policy Deallocate \
    --max-price -1 \
    --enable-spot-restore True \
    --spot-restore-timeout PT1H

PowerShell

重要

自 2023 年 11 月起,如果未指定協調流程模式,則使用 PowerShell 和 Azure CLI 建立的 VM 擴展集會預設為彈性協調流程模式。 如需此變更的詳細資訊,以及您應該採取的動作,請前往針對 VMSS PowerShell/CLI 客戶的中斷性變更 - Microsoft 社群中樞

建立使用 Azure Spot Virtual Machines 之擴展集的程序,與使用者入門文章所述程序相同。 只需新增 '-Priority Spot',並提供 -max-priceNew-AzVmssConfig

$vmssConfig = New-AzVmssConfig `
    -Location "East US 2" `
    -SkuCapacity 2 `
    -OrchestrationMode "Flexible" `
    -SkuName "Standard_DS2" `
    -Priority "Spot" `
    -max-price -1 `
    -EnableSpotRestore `
    -SpotRestoreTimeout 60 `
    -EvictionPolicy delete

Resource Manager 範本

建立使用 Azure Spot Virtual Machines 之擴展集的程序,與 LinuxWindows 所述細節相同。

針對 Azure 位置虛擬機器範本部署,請使用 "apiVersion": "2019-03-01" 或更新版本。

priorityevictionPolicybillingProfilespotRestoryPolicy 屬性加入至 "virtualMachineProfile": 區段,並將 "singlePlacementGroup": false, 屬性新增至範本中的 "Microsoft.Compute/virtualMachineScaleSets" 區段:


{
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  },
  "properties": {
    "singlePlacementGroup": false,
    }

        "virtualMachineProfile": {
              "priority": "Spot",
                "evictionPolicy": "Deallocate",
                "billingProfile": {
                    "maxPrice": -1
                },
                "spotRestorePolicy": {
                  "enabled": "bool",
                  "restoreTimeout": "string"
    },
            },

若要在收回執行個體之後將其刪除,請將參數 evictionPolicy 變更為 Delete

模擬收回

您可以模擬 Azure 現成虛擬機器的收回,以測試應用程式回應突然收回的程度。

以您的資訊取代下列內容:

  • subscriptionId
  • resourceGroupName
  • vmName
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/simulateEviction?api-version=2020-06-01

Response Code: 204 表示模擬的收回成功。

如需詳細資訊,請參閱測試模擬收回通知

常見問題集

問:建立之後,Azure Spot Virtual Machine 執行個體是否與標準執行個體相同?

答:是,除了 Azure Spot Virtual Machines 沒有 SLA,而且可以隨時收回。

問:當您收回但仍需要容量時,該怎麼辦?

答:如果您立即需要容量,建議您使用標準 VM,而不是 Azure Spot Virtual Machines。

問: 如何針對 Azure 位置虛擬機器管理配額?

答: Azure 現成虛擬機器執行個體和標準執行個體會有不同的配額集區。 VM 和擴展集執行個體之間共用 Azure 現成虛擬機器配額。 如需詳細資訊,請參閱 Azure 訂用帳戶和服務限制、配額與條件約束

問: 我可以要求 Azure 位置虛擬機器的額外配額嗎?

答:是,您可以透過標準配額要求程序來提交要求,以增加 Azure 現成虛擬機器的配額。

問: 我可以將現有的擴展集轉換成 Azure 現成虛擬機器擴展集嗎?

答:不行,只支援在建立時設定 Spot 旗標。

問: 如果我使用的是 low 低優先順序擴展集,是否需要改為開始使用 Spot

答: 現在 lowSpot 都可以運作,但您應該開始轉換成使用 Spot

問: 我可以建立具有一般 VM 和 Azure Spot Virtual Machines 的擴展集嗎?

答:否,擴展集不支援一個以上的優先順序類型。

問: 我可以搭配使用自動調整與 Azure 現成虛擬機器擴展集嗎?

答: 是,您可以在 Azure 現成虛擬機器擴展集上設定自動調整規則。 如果您的 VM 已收回,自動調整可能會嘗試建立新的 Azure Spot Virtual Machines。 請記住,不保證容量足夠。

問:自動調整是否可以同時使用收回原則 (解除配置和刪除)?

答:建議您在使用自動調整時,將您的收回原則設為刪除。 這是因為解除配置執行個體是按照擴展集的容量計數進行計算。 使用自動調整時,由於已解除配置收回的執行個體,可能會很快達到目標執行個體計數。 此外,您的調整作業可能會受到現成品收回的影響。 例如,虛擬機器擴展集執行個體可能會低於設定的最小計數,因為在縮放作業期間有多個現成品收回。

問:哪裡可以張貼問題?

答: 您可以在 Q&A 張貼並用 azure-spot 標記您的問題。

下一步

如需定價詳細資料,請參閱虛擬機器擴展集價格分頁