Share via


Azure 中 VM 和擴展集的自動擴充功能升級

自動擴充功能更新適用於 Azure VM 和 Azure 虛擬機器擴展集。 在 VM 或 VM 擴展集上啟用自動擴充功能升級時,每當擴充功能發行者發行該擴充功能的新版本時,就會自動升級擴充功能。

自動擴充功能升級具有下列功能:

  • 支援 Azure VM 和 Azure 虛擬機器擴展集。
  • 升級會套用在可用性優先部署模型中。
  • 針對虛擬機器擴展集,在單一批次中不會升級超過 20% 的擴展集虛擬機器。 最小批次大小為一部虛擬機器。
  • 適用於所有 VM 大小,且適用於 Windows 和 Linux 擴充功能。
  • 您可以隨時退出自動升級。
  • 您可以在任何大小的虛擬機器擴展集上啟用自動擴充功能升級。
  • 每個支援的擴充功能都會個別註冊,您可以選擇要自動升級的擴充功能。
  • 在所有公用雲端區域中皆提供支援。

自動擴充功能升級如何運作?

擴充功能升級程序會在擴充功能發行者發行時,將 VM 上現有擴充功能版本取代為新版本的相同擴充功能。 安裝新的擴充功能之後,隨即會監視 VM 的健康情況。 如果 VM 在升級完成後的 5 分鐘內未處於健全狀態,則會將擴充功能版本復原至先前版本。

系統會自動重試失敗的擴充功能更新。 系統會每隔幾天自動嘗試重試一次,無須使用者介入。

可用性優先更新

平台協調更新的可用性優先模型會確保在多個可用性層級中遵守 Azure 的可用性設定。

針對進行更新的虛擬機器群組,Azure 平台會協調更新:

跨區域:

  • 升級會以分階段的方式跨 Azure 全域移動,以防止整個 Azure 發生部署失敗。
  • 「階段」可能會有一個或多個區域,而更新僅在前一階段符合資格的 VM 成功更新後,跨階段移動。
  • 異地配對區域不會同時更新,亦無法處於同一個區域階段。
  • 更新成功會以追蹤 VM 更新後的健全狀況來測量。 VM 健康情況會透過 VM 的平台健康情況指標來追蹤。 針對虛擬機器擴展集,VM 健康情況會透過應用程式健全狀態探查來追蹤,若將 VM 套用至擴展集,則會透過應用程式健康情況擴充功能來追蹤。

區域內:

  • 不同可用性區域的 VM 不會以相同更新同時進行更新。
  • 不屬於可用性設定組的單一 VM 會盡可能以批次處理,以避免訂閱中所有的 VM 進行並行更新。

「集合」內:

  • 在通用可用性設定組中的所有 VM 或擴展集不會同時更新。
  • 通用可用性設定組中的 VM 會在更新網域界限內更新,且跨多個更新網域的 VM 不會同時更新。
  • 通用虛擬機器擴展集中的所有 VM 會依批次進行分組,並在更新網域界線內更新。 在更新期間,會接受擴展集上定義的升級原則。 如果升級原則設定為 [手動],即使已啟用自動擴充功能升級,VM 也不會更新。

虛擬機器擴展集的升級程序

  1. 在開始進行升級程序之前,協調器會確定整個擴展集內,狀況不良的 VM 數目未超過 20% (不計原因)。

  2. 升級協調器會識別要升級的 VM 執行個體批次。 升級批次最多可以有總 VM 計數的 20%,受限於一部虛擬機器的最小批次大小。 在識別批次時,會考慮升級原則和 可用性區域的定義。

  3. 升級之後,一律會監視 VM 健康情況,再移至下一個批次。 針對具有已設定應用程式健康狀態探查或應用程式健康情況延伸模組的擴展集,也會監視應用程式健康情況。 升級會等候最多 5 分鐘(或定義的健康情況探查組態)讓 VM 在升級下一個批次之前變成狀況良好。 如果 VM 在升級後未復原其健康情況,則依預設會重新安裝 VM 上的先前擴充功能版本。

  4. 升級協調器也會追蹤在升級後變得狀況不良的 VM 百分比。 如果在升級程序進行期間,已升級的執行個體有超過 20% 變成狀況不良,升級作業就會停止。

上述程序會持續進行,直到擴展集中的所有執行個體皆已升級。

擴展集的升級協調器在升級每個批次之前,都會先檢查整體的擴展集健康情況。 在批次升級期間,可能會有其他計劃性或非計劃性維護活動也在並行執行,而可能影響到擴展集虛擬機器的健康情況。 在此情況下,如果擴展集的執行個體有超過 20% 變得狀況不良,則擴展集升級程序會在當前的批次結束時停止。

支援的擴充功能

自動擴充功能升級支援下列擴充功能 (定期新增更多項目):

正在啟用自動擴充功能升級

若要為擴充功能啟用自動擴充功能升級,您必須確定 enableAutomaticUpgrade 屬性已設定為 true,並分別將其新增至每個擴充功能定義。

虛擬機器的 REST API

若要為 Azure VM 上的擴充功能啟用自動擴充功能升級 (此範例為 Dependency Agent 擴充功能),請使用下列呼叫:

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/extensions/<extensionName>?api-version=2019-12-01`
{    
    "name": "extensionName",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "<location>",
    "properties": {
        "autoUpgradeMinorVersion": true,
        "enableAutomaticUpgrade": true, 
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.5"
        }
}

虛擬機器擴展集的 REST API

使用下列呼叫,以將擴充功能新增至擴展集模型:

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>?api-version=2019-12-01`
{
   "location": "<location>",
   "properties": {
   	    "virtualMachineProfile": {
            "extensionProfile": {
       	        "extensions": [
            	{
                "name": "<extensionName>",
            	  "properties": {
             		    "autoUpgradeMinorVersion": true,
             		    "enableAutomaticUpgrade": true,
              	    "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
              	    "type": "DependencyAgentWindows",
              	    "typeHandlerVersion": "9.5"
            		}
          	    }
        	    ]
    	    }
    	}
    }
}

虛擬機器的 Azure PowerShell

使用 Set-AzVMExtension Cmdlet:

Set-AzVMExtension -ExtensionName "Microsoft.Azure.Monitoring.DependencyAgent" `
    -ResourceGroupName "myResourceGroup" `
    -VMName "myVM" `
    -Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
    -ExtensionType "DependencyAgentWindows" `
    -TypeHandlerVersion 9.5 `
    -Location WestUS `
    -EnableAutomaticUpgrade $true

虛擬機器擴展集的 Azure PowerShell

使用 Add-AzVmssExtension Cmdlet 將擴充功能新增至擴展集模型:

Add-AzVmssExtension -VirtualMachineScaleSet $vmss
    -Name "Microsoft.Azure.Monitoring.DependencyAgent" `
    -Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
    -Type "DependencyAgentWindows" `
    -TypeHandlerVersion 9.5 `
    -EnableAutomaticUpgrade $true

在新增擴充功能之後,使用 Update-AzVmss 新增擴展集。

虛擬機器可使用的 Azure CLI

使用 az vm extension set Cmdlet:

az vm extension set \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --name DependencyAgentLinux \
    --publisher Microsoft.Azure.Monitoring.DependencyAgent \
    --version 9.5 \
    --enable-auto-upgrade true

虛擬機器擴展集的 Azure CLI

使用 az vmss extension set Cmdlet 將擴充功能新增至擴展集模型:

az vmss extension set \
    --resource-group myResourceGroup \
    --vmss-name myVMSS \
    --name DependencyAgentLinux \
    --publisher Microsoft.Azure.Monitoring.DependencyAgent \
    --version 9.5 \
    --enable-auto-upgrade true

適用於 虛擬機器的 ARM 範本

下列範例說明如何使用 Azure Resource Manager 在虛擬機上設定延伸模組的自動擴充功能升級(此範例中的相依性代理程式擴充功能)

{
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[resourceGroup().location]",
    "name": "<extensionName>",
    "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
    ],
    "properties": {
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.5",
        "autoUpgradeMinorVersion": true,
        "enableAutomaticUpgrade": true,
        "settings": {
            "enableAMA": "true"
        }
    }
}

適用於 虛擬機器擴展集的 ARM 範本

使用下列範例,在擴展集模型中的擴充功能上設定自動擴充功能升級:

{
   "type": "Microsoft.Compute/virtualMachineScaleSets",
   "apiVersion": "2023-09-01",
   "name": "[variables('vmScaleSetName')]",
   "location": "[resourceGroup().location]",
   "properties": {
   	    "virtualMachineProfile": {
            "extensionProfile": {
       	        "extensions": [{
                     "name": "<extensionName>",
                     "properties": {
                          "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
                          "type": "DependencyAgentWindows",
                          "typeHandlerVersion": "9.5",
                          "autoUpgradeMinorVersion": true,
                          "enableAutomaticUpgrade": true,
                     }
                }]
    	    }
    	}
    }
}

使用 Azure 入口網站

您可以使用 Azure 入口網站 - 擴充功能刀鋒視窗,在現有 虛擬機器 和 虛擬機器擴展集 上啟用延伸模組的自動升級。

  1. 流覽至 [虛擬機器虛擬機器 擴展集] 刀鋒視窗,然後按兩下其名稱以選取資源。
  2. 流覽至 [設定 下的 [Extenisons + 應用程式] 刀鋒視窗,以檢視資源上安裝的所有延伸模組。 [自動升級狀態] 資料行會指出是否啟用、停用或不支援自動升級擴充功能。
  3. 按兩下延伸模組名稱,流覽至 [擴充功能詳細資料] 刀鋒視窗。
  4. 按兩下[啟用自動升級] 以啟用延伸模組的自動升級。 此按鈕也可用來在必要時停用自動升級。
    image

image

進行多個擴充功能的擴充功能升級

VM 或虛擬機器擴展集可以有啟用自動擴充更能升級的多個擴充功能。 相同的 VM 或擴展集也可以有未啟用自動擴充功能升級的其他擴充功能。

如果虛擬機器有多個可用的擴充功能升級,則升級可能會一併批次處理,但每個擴充功能會個別套用在虛擬機器上。 某個擴充功能的失敗不會影響其他正在升級的擴充功能。 例如,如果已排程升級兩個擴充功能且第一個擴充功能升級失敗,則仍會升級第二個擴充功能。

當 VM 或虛擬機器擴展集有多個已設定擴充功能排序的擴充功能時,也可以套用自動擴充功能升級。 擴充功能排序適用於第一次部署 VM,而此項目會獨立套用至擴充功能的未來擴充功能升級。

下一步