在彈性協調流程中將部署和資源移轉至虛擬機器擴展集

如同可用性設定組,虛擬機器擴展集可讓您將虛擬機器分散到多個容錯網域。 與彈性協調流程結合的虛擬機器擴展集,可讓您合併處於統一協調流程模式下虛擬機器擴展集的可擴縮性,以及可用性設定組的區域可用性保證。 本文會詳述切換至虛擬機器擴展集的彈性協調流程模式時應考量的移轉相關事項。

更新可用性設定組的部署範本和指令碼

首先,您必須透過 Azure CLIAzure PowerShellARM 範本建立沒有自動調整設定檔的虛擬機器擴展集。 Azure 入口網站只允許使用自動調整設定檔來建立虛擬機器擴展集。 如果您不想要也不需要自動調整設定檔,但想要建立擴展集並使用 Azure 入口網站,您可以將初始容量設定為 0。

您必須指定虛擬機器擴展集的容錯網域計數。 針對區域 (非區域性) 部署,虛擬機器擴展集提供與可用性設定組相同的容錯網域保證。 然而,您可以擴大至 1000 個執行個體。 針對您將執行個體分散到多個可用性區域的區域性部署,容錯網域計數必須設定為 1。

在彈性協調流程模式中,更新網域已被取代。 大部分具有常規用途 SKU 的平台更新都是使用即時移轉來執行,而且不需要重新啟動執行個體。 在平台維護需要執行個體進行重新啟動的情況下,更新會依據容錯網域套用容錯網域。

虛擬機器擴展集的彈性協調流程也支援在橫跨多個可用性區域中部署執行個體。 建議您考慮更新 VM 部署,以分散到多個可用性區域。

此流程中的最後一個步驟是建立虛擬機器。 不需要指定可用性設定組,而是指定虛擬機器擴展集。 您可以選擇性地指定您要在其中放置 VM 的可用性區域或容錯網域。

移轉現有的可用性設定組 VM

目前沒有任何自動化工具可直接將可用性設定組中的現有執行個體移至虛擬機器擴展集。 不過,有數種策略可用來將現有的執行個體移轉至彈性擴展集:

藍色 / 綠色或並排移轉

  1. 將具有類似設定的新擴展集虛擬機器執行個體帶入相同的資源群組、虛擬網路、負載平衡器等,作為可用性中的 VM
  2. 移轉資料、網路流量等,以使用新的擴展集執行個體
  3. 解除配置或移除原始的可用性設定組虛擬機器,讓擴展集 VM 為您的應用程式進行運作

取代 VM 執行個體

  1. 請注意您想要從虛擬機器保留的參數 (名稱、NIC 識別碼、OS 和資料磁碟識別碼、VM 組態設定、容錯網域放置等)
  2. 刪除可用性設定組虛擬機器。 不會刪除 VM 的 NIC 和磁碟
  3. 建立新的虛擬機器物件,並使用原始 VM 中的參數
    • NIC 識別碼
    • OS 和資料磁碟
    • 容錯網域放置
    • 其他 VM 設定

更新統一擴展集部署範本和指令碼

更新統一虛擬機器擴展集部署範本和指令碼,以便使用彈性協調流程。 變更範本中的下列元素,以順利完成此處理程序。

  • 移除 LoadBalancerNATPool (對 flex 無效)
  • 移除超額布建參數 (對 flex 無效)
  • 移除 upgradePolicy (尚對 flex 無效)
  • 將計算 API 版本更新為 2021-03-01
  • 新增協調流程模式 flexible
  • platformFaultDomainCount 為必要
  • singlePlacementGroup=false 為必要
  • 將網路 API 版本新增至 2021-11-01 或更新版本
  • 將輸出規則所需的 IP configuration.properties.primary 設定為 true

移轉現有的統一擴展集

目前沒有任何自動化工具可直接移動現有的執行個體,或將統一擴展集升級至彈性虛擬機器擴展集。 不過,以下是可用來將現有執行個體移轉至彈性擴展集的策略:

藍色 / 綠色或並排移轉

  1. 將具有類似設定的新彈性協調流程模式擴展集帶入相同的資源群組、虛擬網路、負載平衡器等,作為統一協調流程模式中的原始擴展集
  2. 移轉資料、網路流量等,以使用新的擴展集執行個體
  3. 縮小或移除原始的統一擴展集虛擬機器,讓擴展集虛擬機器為您的應用程式進行運作

彈性擴展集考慮

與彈性協調流程模式結合的虛擬機器擴展集,可讓您合併處於統一協調流程下虛擬機器擴展集的可擴縮性,以及可用性設定組的區域可用性保證。 以下是決定以彈性協調流程模式作業時應考量的重要事項。

建立可調整的網路連線能力

網路輸出存取行為將依您在擴展集內選擇的虛擬機器建立方式而有所不同。 手動新增的 VM 執行個體具有預設輸出連線存取。 隱含建立的 VM 執行個體沒有預設存取。

為增強預設的網路安全性,透過自動調整設定檔隱含建立的虛擬機器執行個體沒有預設的輸出存取權。 為了搭配隱含建立的 VM 執行個體使用虛擬機器擴展集,必須透過下列其中一種方法明確定義輸出存取:

  • 在大部分情況下,我們建議將 NAT 閘道附加至子網路
  • 針對具有高安全性需求的情況,或使用 Azure 防火牆或網路虛擬設備 (NVA) 時,您可以指定自訂的使用者定義路由作為穿過防火牆的下一個躍點。
  • 執行個體位於標準 SKU Azure Load Balancer 的後端集區中。
  • 將公用 IP 位址附加至執行個體網路介面。

需要明確輸出連線能力的常見情況包括:

  • Windows VM 啟用需要您定義從 VM 執行個體到 Windows 啟用金鑰管理服務 (KMS) 的輸出連線。 如需詳細資訊,請參閱針對 Windows VM 啟用問題進行疑難排解
  • 儲存體帳戶或 Key Vault 的存取權。 您也可以透過私人連結建立 Azure 服務連線。
  • Windows Update。
  • 存取 Linux 套件管理員。

如需詳細資訊,請參閱 Azure 中的預設輸出存取

在單一執行個體 VM 上明確建立 NIC 後,有了此 VM,預設輸出存取便可供使用。 統一協調流程模式中的虛擬機器擴展集也有預設的輸出連線能力。

重要

確認您有明確的輸出網路連線能力。 深入了解 Azure 的虛擬網路和虛擬機器,並請務必遵循 Azure 網路的最佳做法

在 VM 建立期間指派容錯網域

您可以選擇彈性協調流程擴展集的容錯網域數目。 依預設,當您將 VM 新增至彈性擴展集時,Azure 會將執行個體平均分配至多個容錯網域。 雖然建議您讓 Azure 指派容錯網域,但在進階或疑難排解案例中,您可以覆寫此預設行為,並指定將放置執行個體的容錯網域。

az vm create –vmss "myVMSS"  –-platform_fault_domain 1

執行個體命名

當您建立 VM 並將其新增至彈性擴展集時,您可以完全掌控 Azure 命名慣例規則內的執行個體名稱。 當 VM 透過自動調整而自動新增到擴展集時,您可以提供前置詞,而 Azure 會在該名稱的結尾附加一個唯一數字。

列出擴展集 VM API 變更

虛擬機器擴展集可讓您列出屬於擴展集的執行個體。 使用彈性協調流程時,「列出虛擬機器擴展集 VM」命令會提供擴展集 VM 識別碼的清單。 然後,您可以呼叫「取得虛擬機器擴展集 VM」命令,來取得擴展集如何搭配 VM 執行個體使用的詳細資料。 若要取得 VM 的完整詳細資料,請使用標準的 GET VM 命令或 Azure Resource Graph

查詢執行個體的電源狀態

慣用方法是使用 Azure Resource Graph 來查詢虛擬機器擴展集中的所有 VM。 Azure Resource Graph 可對各訂用帳戶上的大規模 Azure 資源提供有效率的查詢功能。

| where type =~ 'Microsoft.Compute/virtualMachines'
| where properties.virtualMachineScaleSet contains "demo"
| extend powerState = properties.extended.instanceView.powerState.code
| project name, resourceGroup, location, powerState
| order by resourceGroup desc, name desc

使用 Azure Resource Graph 來查詢資源是方便且有效率的方式,不僅可查詢 Azure 資源,還能盡量降低對資源提供者發出 API 呼叫的次數。 Azure Resource Graph 是最終一致的快取,其中新的或更新的資源可能需要最多 60 秒的時間才會反映。 您可以:

  • 列出資源群組或訂用帳戶中的 VM。
  • 使用展開選項,擷取您訂用帳戶中所有 VM 的執行個體檢視 (容錯網域指派、電源和佈建狀態)。
  • 使用「Get VM」API 和命令,取得單一執行個體的模型和執行個體檢視。

擴展集 VM 批次作業

使用標準 VM 命令來啟動、停止、重新啟動和刪除執行個體,而不是使用虛擬機器擴展集 VM API。 虛擬機器擴展集 VM 批次作業 (全部啟動、全部停止、全部重新安裝映像等等) 無法在彈性協調流程模式中使用。

監視器應用程式健康情況

應用程式狀況監控可讓應用程式提供活動訊號給 Azure,以判斷您應用程式的狀況是否良好。 Azure 可以自動取代狀況不良的 VM 執行個體。 針對彈性擴展集執行個體,您必須在虛擬機器上安裝並設定應用程式健康情況擴充功能。 針對統一擴展集執行個體,您可以使用應用程式健康情況擴充功能,或使用 Azure Load Balancer 自訂健全狀態探查來量測健康情況。

擷取開機診斷資料

使用標準 VM API 和命令來擷取執行個體開機診斷資料和螢幕擷取畫面。 虛擬機器擴展集 VM 開機診斷 API 和命令不會搭配彈性協調流程模式執行個體使用。

VM extensions

使用以標準虛擬機器為目標的擴充功能,而不是以統一協調流程模式執行個體為目標的擴充功能。

保護執行個體免於遭到刪除

彈性協調流程模式中的虛擬機器擴展集目前沒有執行個體保護選項。 如果您已在虛擬機器擴展集上啟用自動調整,則某些 VM 在調整過程中可能會有遭到刪除的風險。 如果您想要保護特定 VM 執行個體免於遭到刪除,請使用 Azure Resource Manager 鎖定

下一步