觀點 · 資訊分享

Azure 擴展集「可用區自動平衡」正式上線:VM 擠在同一區,系統會一台一台幫你搬平

Azure 虛擬機器擴展集的可用區自動平衡正式 GA:發現 VM 偏向某個可用區時,會先在 VM 最少的區建新機、確認健康後才刪掉多的那台,一次只搬一台。

發布
2026-10-16
篇幅
約 4 分鐘 · 1,932 字
結構
7 節 + 4 題常見問題
標籤
#Azure#VMSS#可用區#高可用性
Azure 擴展集「可用區自動平衡」正式上線:VM 擠在同一區,系統會一台一台幫你搬平

一句話看懂:Azure 虛擬機器擴展集的「可用區自動平衡」正式上線,VM 偏向某個可用區時,系統會先建新機、確認健康再刪舊機,一台一台把數量拉平。

Azure VMSS 可用區自動平衡正式上線資訊圖卡:VM 擠在同一個可用區時,Azure 會先建新的、再刪舊的,一次搬一台把數量拉平

先用白話講:可用區自動平衡是什麼?

想像一家連鎖飲料店在同一個城市開了三家分店,總共排了 9 位店員。理想狀況是每家 3 位,這樣某家店停電,另外兩家還能撐住。可是經過幾次排班調動,變成 A 店 1 位、B 店 4 位、C 店 4 位,萬一 B 店停電,一口氣就少了將近一半人手。

雲端的「可用區」就像這些分店:同一個地區裡,電力和網路各自獨立的幾個機房。可用區自動平衡就是一位會自己看班表的店長,發現人數不平均時,先在人少的店補一位新人,確認他上手了,再從人多的店調走一位。

發生什麼事

Microsoft 在 10 月 15 日的 Azure 更新公告中宣布,虛擬機器擴展集(VMSS)的可用區自動平衡正式上線(GA)。依照官方文件,運作方式是:

  • 怎樣算平衡:每個可用區的 VM 數量,跟其他區相差不超過 1 台
  • 先建後刪:在 VM 最少的區建新 VM,新 VM 健康之後,才刪掉 VM 最多那區的一台
  • 一次一台:每次只搬 1 台,兩次搬移之間還有冷卻時間,避免一次動太多
  • 等健康最多 90 分鐘:新 VM 超過 90 分鐘還不健康,就改看舊 VM:舊的健康就刪新的,舊的不健康就刪舊的、留新的
  • 不打擾變更:擴展集過去 60 分鐘內有新增、刪除、升級這類操作,就先不搬

開之前要注意的事

注意事項 說明
暫時多 1 台 先建後刪,搬移期間會多一台 VM,自動調整的上限與訂閱配額要留空間
跟自動調整的互動 搬移中遇到縮減,會等搬完再縮;遇到擴增,這次搬移直接取消
不保留身分 搬移是刪掉重建,VM 的 ID、網路設定、磁碟都不會保留
規格會變新 新 VM 一律用擴展集設定裡最新的規格(SKU)
不是故障備援 它不偵測可用區故障,不能拿來當區域停擺的復原機制

所以官方建議只用在無狀態的服務,例如網站前台、API 伺服器。資料庫這類會在本機存資料的服務不適合。

給開發者的技術細節

開啟前要先滿足三個條件:至少跨 2 個可用區、所有 VM 都是指定可用區的 zonal 執行個體、啟用應用程式健康監控(Application Health 擴充功能或負載平衡器健康探查,二選一)。Compute API 版本要 2024-07-01 以上。

用 Azure CLI 對既有擴展集開啟:

az vmss update \
  --resource-group myResourceGroup \
  --name myVMScaleSet \
  --enable-automatic-zone-balancing true \
  --automatic-zone-balancing-behavior CreateBeforeDelete \
  --automatic-zone-balancing-strategy Recreate
  • 開啟時會預設一併開啟自動修復(automatic instance repairs);不想要可以加 --enable-auto-repairs false
  • 不想被搬的 VM,可以套用執行個體保護原則
  • 搬移紀錄可以在活動記錄裡篩選 BalanceVMsAcrossZones 查看

我的看法

中小企業的系統大多不會用到擴展集,但只要客戶開始要求「機房出事也不能停」,跨可用區就是第一步。麻煩的是,分散部署之後很少有人會回頭檢查 VM 是不是還分得平均,往往是真的出事了才發現大部分機器都擠在同一區。

這個功能把「定期檢查、手動調整」變成自動的,對人力有限的團隊很實用。不過要記得它是靠刪掉重建來搬,所以前提是你的服務本身就是無狀態的:設定、檔案、工作階段都放在外部的資料庫或儲存服務。如果服務還依賴本機磁碟,先改架構,再開這個功能。

名詞小辭典

  • VMSS(虛擬機器擴展集):一群設定相同的虛擬機器,可以依流量自動增加或減少數量。
  • 可用區(Availability Zone):同一個雲端地區裡,電力、網路、冷卻各自獨立的機房。
  • 無狀態(Stateless):服務本身不在機器上保存資料,任何一台壞掉換新的都能直接接手。
  • GA(正式上線):功能結束預覽,正式提供給所有客戶在正式環境使用。

資料來源

常見問題

什麼是可用區?
同一個雲端地區裡,電力、網路、冷卻各自獨立的幾個機房。把 VM 分散在不同可用區,其中一個機房出事時,其他區的 VM 還能繼續服務。
開啟需要什麼條件?
擴展集至少要跨 2 個可用區、所有 VM 都指定在某個可用區、啟用應用程式健康監控,Compute API 版本要 2024-07-01 以上。可以用入口網站、CLI、PowerShell 或 REST API 開啟。
為什麼開了卻沒有搬?
可能是安全條件沒滿足(例如過去 60 分鐘內有擴縮或升級)、VM 少的那一區容量不夠,或訂閱配額不足以暫時多開一台。另外,受執行個體保護的 VM 不會被搬。
可以拿它當機房故障的備援嗎?
不行。官方文件明講,這個功能不會偵測可用區故障,不應該當成區域停擺時的復原機制,它只負責平時把 VM 數量分平均。
LINE