對 Azure 中的虛擬機器和擴展集進行自動延伸模組升級
自動延伸模組升級適用於 Azure 虛擬機器和 Azure 虛擬機器擴展集。 在虛擬機器 (VM) 或擴展集上啟用自動延伸模組升級時,每當延伸模組發行者發佈延伸模組的新版本時,該延伸模組就會自動升級。
自動擴充功能升級具有下列功能:
- 支援 Azure VM 和虛擬機器擴展集。
- 升級會套用在可用性優先部署模型中。
- 針對虛擬機器擴展集,在單一批次中不會升級超過 20% 的擴展集 VM。 最小批次大小為一個 VM。
- 所有 VM 大小以及 Windows 和 Linux 延伸模組都是相容的。
- 隨時可選擇自動升級。
- 啟用任何大小的虛擬機器擴展集。
- 每個支援的延伸模組都是個別註冊的。 您可以選擇要自動升級的延伸模組。
- 支援所有公用雲端區域。
自動擴充功能升級如何運作?
每當延伸模組發行者發佈相同延伸模組的新版本時,延伸模組升級流程就會以這個版本取代 VM 上的現有延伸模組版本。 安裝新的擴充功能之後,隨即會監視 VM 的健康情況。 如果 VM 在升級完成後的五分鐘內未處於狀況良好狀態,延伸模組版本將會回復為先前版本。
系統會自動重試失敗的擴充功能升級。 系統會每隔幾天自動嘗試重試一次,無須使用者介入。
可用性優先更新
平台協調升級的可用性優先模型會確保在多個可用性層級中遵守 Azure 的可用性設定。
針對進行升級的 VM 群組,Azure 平台會協調跨區域、區域內和集合內的升級。
跨區域
- 升級會以分階段的方式跨 Azure 全域移動,以防止整個 Azure 發生部署失敗。
- 一個階段可有一個或多個區域,而升級僅在前一階段中符合資格的 VM 成功升級時,才會跨階段移動。
- 異地配對區域不會同時升級,亦無法處於同一個區域階段。
- 升級成功會以追蹤 VM 升級後的健全狀況來測量。 VM 健康情況會透過 VM 的平台健康情況指標來追蹤。 針對虛擬機器擴展集,透過應用程式健全狀態探查或應用程式健康情況延伸模組 (若套用至擴展集) 來追蹤 VM 健康情況。
區域內
- 不同可用性區域中的 VM 不會以相同升級同時進行升級。
- 不屬於可用性設定組的單一 VM 會盡可能進行批次處理,以避免訂用帳戶中所有的 VM 進行並行升級。
集合內
- 在通用可用性設定組中的所有 VM 或擴展集不會同時升級。
- 一般可用性設定組中的 VM 會在升級網域界限內升級。 跨多個升級網域的 VM 不會同時升級。
- 一般虛擬機器擴展集中的 VM 會以批次方式進行分組,並在升級網域界限內進行升級。 在升級期間,會接受擴展集上定義的升級原則。 每個群組都會使用滾動升級策略來進行升級。
虛擬機器擴展集的升級流程
- 在開始進行升級程序之前,協調器會確定整個擴展集內,狀況不良的 VM 數目未超過 20% (不計原因)。
- 升級協調器會識別要升級的 VM 執行個體批次。 升級批次最多可有總 VM 計數的 20%,受限於 VM 的最小批次大小。 在批次進行識別時,協調器會考慮升級原則和可用性區域的定義。
- 升級之後,一律會監視 VM 健康情況,再移至下一個批次。 針對具有已設定應用程式健全狀態探查或應用程式健康情況延伸模組的擴展集,也會監視應用程式健康情況。 升級最多等待 5 分鐘 (或定義的健全狀態探查設定),讓 VM 的狀況變成良好,然後再升級下一個批次。 如果 VM 在升級後未復原其健康情況,則預設會重新安裝 VM 上先前的延伸模組版本。
- 升級協調器也會追蹤在升級後變得狀況不良的 VM 百分比。 如果在升級程序進行期間,已升級的執行個體有超過 20% 變成狀況不良,升級作業就會停止。
此程序會持續進行,直到擴展集中的所有執行個體皆已升級為止。
擴展集的升級協調器在升級每個批次之前,都會先檢查整體的擴展集健康情況。 在批次升級期間,其他並行計劃性或非計劃性維護活動可能影響到擴展集 VM 的健康情況。 在此情況下,如果擴展集的執行個體有超過 20% 變得狀況不良,則擴展集升級會在目前批次結束時停止。
支援的擴充功能
若要檢查延伸模組是否支援自動升級,請在 Azure 入口網站 - 延伸模組刀鋒視窗上檢視自動升級狀態。
以下是自動升級支援的熱門擴充功能(且會定期新增更多功能):
- Azure 自動化混合式背景工作角色延伸模組:Linux 和 Windows
- Dependency Agent:Linux 和 Windows
- 應用程式健康情況延伸模組:Linux 和 Windows
- 來賓證明延伸模組:Linux 和 Windows
- 來賓設定延伸模組:Linux 和 Windows
- Azure Key Vault:Linux 和 Windows
- Azure 監視器代理程式
- 適用於 Linux 的 Log Analytics 代理程式
- 適用於 Linux 的 Azure 診斷延伸模組
- Azure Service Fabric:Linux
啟用自動延伸模組升級
若要為延伸模組啟用自動延伸模組升級,您必須確定 enableAutomaticUpgrade
屬性設定為 true
,並個別新增至每個延伸模組定義。
使用 Azure 入口網站
在 Azure 入口網站中,使用 [延伸模組] 窗格,在現有的 VM 和虛擬機器擴展集上啟用延伸模組的自動升級。
在 [設定] 下,移至 [延伸模組 + 應用程式] 窗格,其中顯示資源上安裝的所有延伸模組。 [自動升級狀態] 欄位會向您顯示延伸模組的自動升級已啟用、已停用還是不受支援。
選取延伸模組名稱,以開啟 [延伸模組] 詳細資料窗格。
選取 [啟用自動升級],以啟用延伸模組的自動升級。 如有必要,請使用此按鈕來停用自動升級。
對於虛擬機器
若要為 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"
}
}
針對虛擬機器擴展集
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"
}
}
]
}
}
}
}
注意
這些作業會在虛擬機擴展集資源上將 enableAutomaticUpgrade
屬性設定為 true
,但在基礎 VM 上不會這樣做。
如果虛擬機器擴展集在 upgradeProfile 中定義自動或滾動升級模式,則虛擬機器擴展集會自動將變更傳播到每個基礎 VM。
如果虛擬機器擴展集在 upgradeProfile
中定義了手動模式,則您也需要手動更新每個執行個體,並將變更傳播到每個基礎 VM。
進行多個擴充功能的擴充功能升級
一個 VM 或虛擬機器擴展集可有多個已啟用自動延伸模組升級的延伸模組。 相同的 VM 或擴展集也可以具有其他未啟用自動延伸模組升級的延伸模組。
若有多個延伸模組升級可供 VM 使用,則這些升級可能會一併批次處理,但每個延伸模組升級會個別套用在 VM 上。 某個延伸模組的失敗不會影響其他可能正在升級的延伸模組。 例如,如果已排程兩個延伸模組進行升級,且第一個延伸模組升級失敗,則第二個延伸模組仍會進行升級。
當一個 VM 或虛擬機器擴展集具有多個已設定延伸模組排序的延伸模組時,您也可以套用自動延伸模組升級。 延伸模組排序適用於 VM 的第一次部署。 延伸模組上任何未來的延伸模組升級都會獨立套用。
EnableAutomaticUpgrade 與 AutoUpgradeMinorVersion 之間的差異
AutoUpgradeMinorVersion
:- 此屬性是在建立 VM 期間,以及您使用新設定升級 VM 時使用。
- 當設定為
true
時,其確保 VM 上會自動安裝延伸模組最新的次要版本。 - 其會使用最新的穩定次要版本覆寫
TypeHandlerVersion
。 - 當您升級 VM 設定時,若有新的次要版本可用,則視為設定變更。 延伸模組會透過最新的次要版本重新安裝。
- 如此一來,新建立的 VM 會透過最新的穩定次要延伸模組版本來保持最新狀態。
- 如果您想要手動將延伸模組設定為特定版本,請將此屬性設定為
false
。
EnableAutomaticUpgrade
:- 此屬性會影響現有的 VM。
- 其不會影響 VM 建立期間所安裝的版本。
- 在建立 VM 之後,如果 VM 未執行延伸模組最新的次要版本,請啟用此屬性以觸發自動升級。
- 升級不會導致 VM 重新啟動,而且會以安全的滾動方式推出。 失敗的升級會立即回復,以提供高服務可用性和可靠性。
- 現有的 VM 會透過自動更新為最新的次要版本,以保持安全和最新狀態。
建議您啟用這兩個屬性,以協助將所有 VM 保持安全和最新狀態。
這兩個屬性從不會自動執行對主要延伸模組版本的升級,因為主要版本可能包含重大變更。 您必須手動將 TypeHandlerVersion
設定為主要版本,並手動將每個現有的 VM 升級為最新的主要版本。