🗺️ Azure 服務地圖
運算與容器・虛擬機器・AZ-900/AZ-104/AZ-305

VM、可用性區域與擴展集:壞一台不停,忙起來自動加

只開一台虛擬機器,主機一維護服務就停;多開幾台卻放在同一個機櫃,斷一次電照樣全倒。這一頁要讓你分清楚每種部署方式擋得住哪一種故障,並讓機器數量跟著負載自動增減。

故障模擬:4 種部署 × 4 種故障 自動調整模擬器 操作教學:建立跨區域擴展集

💡 先搞懂問題

虛構公司「晴空食品」的線上訂購 API 跑在一台 Azure 虛擬機器(VM)上。第一個月很順利,第二個月出了兩次狀況:一次是 Azure 平台做主機維護,VM 重新開機了幾分鐘;另一次是中午訂餐尖峰,CPU 長時間滿載,客人一直看到逾時。工程師的直覺是「再開一台」,於是手動建了第二台,卻沒注意到它和第一台可能在同一個機櫃上,如果那個機櫃斷電,兩台會一起倒;而尖峰過後,兩台都閒著繼續計費。

這裡有兩個不同的問題。第一個是故障隔離:多台機器要分散到「不會一起壞」的地方,Azure 提供的工具是可用性設定組(availability set)與可用性區域(availability zones)。第二個是容量跟著負載走:機器數量要能依 CPU 等計量自動增減,Azure 的工具是虛擬機器擴展集(Virtual Machine Scale Sets,VMSS)搭配 Azure Monitor 的自動調整(autoscale)。新手最常卡在兩件事:把「多開幾台」當成高可用(其實要看它們分散在哪裡),以及以為擴展集會自動處理一切(其實門檻、上下限與冷卻時間都要自己訂,訂錯會來回加減機器)。

區域(例如東亞) 整個區域故障 → 要靠第二個區域 可用性區域 1(獨立電力、冷卻、網路) 資料中心 機架(容錯網域) 實體主機 上面跑你的 VM 可用性區域 2 可用性區域 3 主機維護:更新網域分批 機架斷電:分散容錯網域 資料中心停擺:跨可用性區域
故障有大有小:一台主機重新開機、一個機架斷電、一整個資料中心停擺、甚至整個區域出事。每一層外框都比裡面那層大,能擋住的部署方式也不同。綠字是對應的做法:可用性設定組處理前兩種,可用性區域處理到資料中心那一層;整個區域的災難,要靠部署到第二個區域。

生活比喻:連鎖便當店

想像晴空食品同時經營實體便當店。最早只有一家店、一個櫃位:店員請假或冰箱壞了,整家店就停賣。後來在同一棟商業大樓開了三個櫃位,分別接在不同的電箱上,大樓輪流做消防檢查時也一次只封一個樓層,所以單一電箱跳電或某層停業時,其他櫃位照常營業。但如果整棟大樓停電,三個櫃位還是一起關門,於是公司在不同行政區開了分店,各自有獨立的電力和聯外道路。最後,午餐尖峰排隊的人太多,店長訂了一條規則:「排隊超過 15 人就加開一個櫃位,少於 3 人就收掉一個,而且每次調整後至少觀察 10 分鐘再決定下一步」。

① 一家店、一個櫃位 櫃位 → 單一 VM ② 同一棟大樓三個櫃位 電箱 A 電箱 B 電箱 C → 可用性設定組 ③ 三個行政區各一家分店 北區 東區 南區 → 可用性區域 ④ 尖峰依排隊人數加開櫃位 加開 → 擴展集+自動調整
四格是一間店一路成長的過程:先解決「一個櫃位壞了就停賣」,再解決「整棟大樓出事」,最後解決「尖峰人手不夠、離峰閒著浪費」。前三格是故障隔離,第四格是容量調整,兩者常常一起用。
回到 Azure:剛才的「一個櫃位」對應的就是單一 VM;同一棟大樓接不同電箱的櫃位,對應可用性設定組:VM 分散在不同的容錯網域(fault domain,共用電源與網路交換器的一組硬體,最多 3 個),平台維護時一次只重新開機一個更新網域(update domain,最多 20 個,預設 5 個),就像大樓輪流做消防檢查。不同行政區的分店,對應同一區域內獨立供電、冷卻、網路的可用性區域。依排隊人數加開櫃位,就是擴展集的自動調整規則:計量(CPU 使用率)超過放大門檻就加執行個體,低於縮小門檻就減,「觀察 10 分鐘」則是冷卻時間(cooldown)。

這個比喻有幾個地方和實際不同。第一,加開櫃位只要叫一個店員過來,新的 VM 卻要配置、開機、跑完初始化才能接流量,通常要幾分鐘,所以放大門檻不能等到 100% 才觸發。第二,行政區分店仍在同一個城市,可用性區域也都在同一個區域內;區域級的大型災難(例如整個區域的服務中斷)要靠第二個區域,例如搭配 Azure Site Recovery 或在另一個區域再部署一套,這已經超出本頁的範圍。第三,櫃位多開幾個只是多付薪水,VM 多開幾台就是多付運算、磁碟與網路費用;擴展集本身不收費,但裡面每一台 VM 都照常計費,所以縮小規則和最大執行個體數同樣重要。

🎮 互動實驗室一:故障模擬器

先選一種部署方式,畫面會把執行個體放到區域、可用性區域與機架裡。接著按一種故障,系統會先請你預測服務是「存活」還是「中斷」,再顯示哪些執行個體掛掉、服務還剩幾台,以及這種部署方式對應的官方 SLA。4 種部署 × 4 種故障共 16 種組合,下方小方塊會記錄你預測過哪些。示意的前提:單一 VM 與可用性設定組都位在可用性區域 1 的資料中心裡。

① 部署方式
② 觸發故障
區域:東亞(示意)
服務正常
預測正確 0 / 0
畫面說明:載入中。

🎮 互動實驗室二:自動調整模擬器

晴空食品的訂購 API 在早上 8 點到 11 點會經歷一波訂餐尖峰。下面的需求曲線是示意數字,單位是「相當於幾台 VM 滿載」,例如 4.5 代表要 4.5 台的 CPU 全速運轉才吃得下。左邊調整自動調整規則,右邊按「下一步」每次前進 5 分鐘,或按「播放」自動跑完。模擬的規則:每 5 分鐘看一次平均 CPU,超過放大門檻就加 1 台、低於縮小門檻就減 1 台,任何一次調整後要等冷卻時間過了才會再動作,新加的 VM 從下一個 5 分鐘開始分擔負載。

自動調整規則

超過就加 1 台(scale out)
低於就減 1 台(scale in);要明顯低於放大門檻
費用的天花板:再忙也不會超過這個台數
Azure 在讀不到計量時使用的台數;這個模擬也用它當起始台數

播放

時間—
需求—
執行個體—
平均 CPU—
按「下一步」開始。
畫面說明:載入中。

🛠️ 操作教學:建立跨可用性區域的擴展集與自動調整

晴空食品決定把訂購 API 改成擴展集:分散在三個可用性區域,前面放負載平衡器,再依 CPU 自動增減。下面用簡化重繪的入口網站走一次建立流程,右邊(手機版在下方)同步顯示等效的 Azure CLI 與 Bicep。你改名稱、區域、可用性區域、大小、執行個體數與自動調整規則,指令會跟著變,目前步驟對應的幾行以黃底標示。不需要登入 Azure,也不會建立任何資源。

示意畫面:簡化重繪,只保留和本主題有關的欄位;實際畫面以 Azure 入口網站為準。

☰雲端主控台(示意)搜尋資源、服務及文件
建立虛擬機器擴展集
基本網路調整檢閱 + 建立
在入口網站搜尋「虛擬機器擴展集」,按「+ 建立」。第一步先決定費用記在哪個訂用帳戶、資源放在哪個資源群組。
示意名稱。CLI 與 Bicep 不寫訂用帳戶 ID,需要時用 <your-subscription-id> 佔位。
1~90 個字元:字母、數字、底線、連字號、句點、括號,不能以句點結尾。
Linux 擴展集 1~64 個字元;不能有空白、底線、句點等符號,不能以連字號結尾。同一個資源群組內不能重複。
可用性區域 (Availability zone)
協調流程模式 (Orchestration mode)
建立後不能變更。彈性模式的成員就是一般 VM,可混用大小與 Spot;統一模式所有執行個體完全相同。
受信任的啟動提供安全開機與 vTPM,需要第 2 代(Gen2)映像。
大小決定每台的運算費用;不寫價格,請以定價計算機為準。
驗證類型 (Authentication type)
Linux 使用者名稱 1~32 個字元,不能用 admin、root、administrator、test、user 等保留名稱。
私密金鑰只留在你的電腦,不要貼到任何地方;上傳到 Azure 的只有公開金鑰。
虛擬網路 (Virtual network,新建)
負載平衡 (Load balancing)
Standard 負載平衡器預設拒絕輸入,要有網路安全性群組允許的連接埠才會通;這裡只開放 TCP 80。
彈性模式最多 1,000 台。跨 3 個區域時,3 的倍數比較容易平均分散。
調整模式 (Scaling mode)
執行個體上下限 (最小/最大/預設)
規則 (平均 CPU 百分比,觀察 5 分鐘)
放大:大於縮小:小於
擴展集本身不收費,但每一台 VM、磁碟、公用 IP 與負載平衡器都會計費。練習完請刪除整個資源群組。
畫面說明:載入中。

同一件事的三種做法

入口網站、Azure CLI 與 Bicep 最後都把請求送到 Azure Resource Manager(ARM),由它驗證身分與權限後交給運算、網路與監視服務。差別在於「替你做了多少決定」:az vmss create 很省事,沒指定的部分會自動補上:沒給虛擬網路時會自動選用或新建一個,負載平衡器預設新建一個 Standard SKU 的(連同它的公用 IP),預設大小是 Standard_D2s_v5、預設協調流程模式是 Flexible;Bicep 則要把虛擬網路、網路安全性群組、負載平衡器、擴展集與自動調整設定一個一個寫清楚,篇幅較長,但每一個設定都看得見、可以放進版本控制與審查,也能在多個環境重複部署。第一次學習或臨時驗證用入口網站,寫腳本或排除問題用 CLI,要長期維護的正式環境用 Bicep。

自己動手時要注意

📘 原理補完

可用性設定組:同一個資料中心內的兩種分散

可用性設定組(availability set)是一個邏輯分組,放進去的 VM 會由平台分散到不同的容錯網域與更新網域。容錯網域對應實體故障:同一個容錯網域的主機共用電源與網路交換器,一個區域內的可用性設定組最多 3 個容錯網域。更新網域對應計畫性維護:平台需要重新開機的維護一次只處理一個更新網域,最多 20 個、預設 5 個。可用性設定組本身不收費,但 VM 只能在建立時放進去,事後不能直接加入;它也只在單一資料中心內分散,整個資料中心停擺時保護不了。官方建議兩台以上 VM 放在同一個可用性設定組,才能符合 99.95% 的 SLA(Learn「Availability options for Azure Virtual Machines」,2025-12-05 更新,2026 年 10 月查證)。

容錯網域 0 容錯網域 1 容錯網域 2 更新網域 0更新網域 1更新網域 2更新網域 3更新網域 4 VM-1 VM-2 VM-3 VM-4 VM-5 VM-6 紅框:容錯網域 0 斷電,影響 VM-1、VM-4 橘框:更新網域 0 維護
每台 VM 同時有一個容錯網域與一個更新網域。紅色虛線框是容錯網域 0 的機架斷電,只帶走兩台;橘色虛線框是更新網域 0 正在維護重新開機,同時間只有 VM-1 與 VM-6 受影響。整張表都在同一個資料中心裡,所以資料中心停擺時六台一起倒。

可用性區域:區域性、區域備援與非區域部署

支援可用性區域的區域至少有 3 個可用性區域,各有獨立的電力、冷卻與網路。資源與區域的關係有三種:區域性(zonal)是你指定放在某一個區域,例如 VM 放在區域 1,要扛區域故障就得自己在多個區域各放一份;區域備援(zone-redundant)是服務自動跨區域分散或複寫,例如跨區域的擴展集、ZRS 儲存體、區域備援的 Standard 負載平衡器;非區域(regional/nonzonal)則不保證放在哪個區域。另一個細節是區域編號是邏輯的:兩個訂用帳戶都選「區域 1」,不代表在同一個實體資料中心。VM 或擴展集有 2 台以上執行個體、分散在 2 個以上可用性區域時,SLA 是 99.99%(Learn「Use availability zones with Virtual Machine Scale Sets」,2026-09-09 更新,2026 年 10 月查證)。代價是區域之間有一點延遲(官方目標是往返約 2 毫秒內),對延遲極度敏感、需要彼此頻繁溝通的叢集,有時會選擇放在單一區域。

區域性(zonal):全部在區域 1區域備援(zone-redundant):平均分散非區域(regional):不指定區域 區域 1 區域 2 區域 3 區域 1 區域 2 區域 3 同一個區域內,由平台放置 區域 1 故障 → 全倒區域 1 故障 → 剩 4 台(SLA 99.99%)
藍色小方塊是執行個體。中間那一列是本頁建議的做法:跨三個區域各放兩台,任一區域故障還剩三分之二的容量。最上面那列執行個體彼此延遲最低,但整個區域 1 出事就全倒;最下面那列由平台決定放哪裡,不保證能扛住區域故障。

各種部署方式比較

部署方式擋得住擋不住月可用率 SLA自動增減
單一 VM(無備援)主機維護重新開機、機架與資料中心故障99.9%(所有作業系統與資料磁碟都是 Premium SSD、Premium SSD v2 或 Ultra Disk 時)*無
可用性設定組(2 台以上)單一主機維護、單一機架故障整個資料中心或可用性區域故障99.95%無,台數要手動調整
跨可用性區域的 VM(2 台以上)上面兩種,加上單一可用性區域故障整個區域故障99.99%無,台數要手動調整
擴展集跨可用性區域(Flexible)同上整個區域故障99.99%有,搭配自動調整規則
多區域部署整個區域故障設計錯誤、資料複寫落差沒有單一 SLA,要自己用複合 SLA 估算依各區域設定

*單一執行個體 VM 的 99.9% 與磁碟條件,引自 Microsoft 員工在 Microsoft Q&A 對 SLA 條文的轉述(2023 年),Learn 文件本身沒有列出這個數字;實際條件請以 Microsoft 的 SLA 文件為準。其餘數字為 2026 年 10 月查證的 Learn 文件。

單一 VM99.9%*・43.2 分 可用性設定組99.95%・21.6 分 跨可用性區域99.99%・4.32 分 多區域自行用複合 SLA 估算 每往右一階,擋得住的故障範圍越大,費用與複雜度也越高(分鐘數為 30 天月份的停機上限)
階梯越高代表擋得住的故障範圍越大。注意這些 SLA 都有前提:2 台以上執行個體、確實分散在不同容錯網域或區域。只開一台卻放進可用性設定組,並不會得到 99.95%。分鐘數用 30 天 × 24 小時 × 60 分鐘換算。

擴展集:協調流程模式與分散方式

虛擬機器擴展集用同一份設定建立與管理一群 VM,本身不另收費。建立時要選協調流程模式(orchestration mode),之後不能變更:Flexible(彈性)是官方建議的模式,成員就是一般的 Azure VM,可以混用不同大小、混用 Spot 與一般 VM,最多 1,000 台;Uniform(統一)的執行個體完全相同,用擴展集專用的 API 管理,適合大量、無狀態、完全一樣的工作節點。跨區域部署時,執行個體預設「盡量平均」分散到所選的區域(best-effort);設定嚴格平衡(zoneBalance)則要求各區域台數一致。Flexible 搭配可用性區域時,官方建議容錯網域數設為 1(最大分散,max spreading),讓平台盡量把執行個體分散到不同的硬體上。

Flexible(彈性,建議) D2s D4s Spot ・成員就是一般 VM・可混用大小與 Spot・最多 1,000 台 Uniform(統一) D2s D2s D2s ・所有執行個體完全相同・用擴展集專用 API 管理・適合大量無狀態節點 建立時就要選,之後不能互換
左邊的彈性模式像一支可以混編的團隊,成員各自是完整的 VM;右邊的統一模式像同一個模子印出來的節點。新部署官方建議選彈性模式,舊有的統一模式擴展集若要換模式,只能重新建立。

自動調整:規則怎麼被評估

擴展集的自動調整由 Azure Monitor autoscale 負責:它定期讀取計量(例如 Percentage CPU),依規則決定加減執行個體,評估頻率依資源類型約每 30~60 秒一次。幾個規則要記住:設定裡的最小、最大是台數的上下限,手動調整到範圍外也會被自動調整拉回;預設是讀不到計量時使用的台數;多條規則時,放大只要任一條成立,縮小要所有縮小規則都成立;每次調整後要過了冷卻時間才會再動作,CLI 的預設是 5 分鐘。最容易出事的是門檻設得太近:放大後平均 CPU 掉到縮小門檻以下,馬上又縮小,縮小後 CPU 又衝過放大門檻,這叫震盪(flapping)。Azure 在縮小前會先估算「減掉之後的平均值」,若會觸發放大就略過或少減幾台,但這只是保險,正確做法仍是把兩個門檻拉開,並一律成對設定放大與縮小規則。

① 擴展集的 VM回報 Percentage CPU ② Azure Monitor彙總 5 分鐘平均 ③ 評估規則約每 30~60 秒 ④ 調整台數放大:任一規則成立縮小:全部規則成立 ⑤ 冷卻時間期間不再調整新 VM 開機中 上下限最小 ≤ 台數 ≤ 最大讀不到計量用預設
這是一個不停轉的循環。左下角灰框不是流程的一步,而是每次調整都要遵守的邊界。冷卻時間的用意,是等新 VM 開機並開始分擔負載後再看計量;太短會在新機器還沒上線時重複加機器,太長則會讓尖峰時加機器的速度跟不上。
門檻太近:放大 > 60%,縮小 < 55% 4 台・平均 52%低於 55% → 縮小 3 台・平均約 69%高於 60% → 放大 4 台・平均 52%又低於 55% … 總負載 208% 不變:208 ÷ 3 ≈ 69%、208 ÷ 4 = 52%,永遠落在兩個門檻的兩側 拉開門檻:放大 > 60%,縮小 < 30% 4 台・平均 52%在 30%~60% 之間 不放大也不縮小,台數穩定要等負載真的下降很多才會縮小 數字為示意;Azure 的防震盪估算會略過上排的縮小,但不能取代合理的門檻設定
上排的總負載一直是 208%(相當於 2.08 台滿載),4 台時平均 52%,3 台時平均約 69%,剛好一邊低於縮小門檻、一邊高於放大門檻,所以每次調整都會觸發反方向的調整。下排把縮小門檻拉到 30%,同樣的負載就落在兩條門檻之間的「穩定區」。

判斷步驟:選哪一種部署方式

  1. 先問需不需要完整控制作業系統。只是跑網站、API 或容器,App Service、Container Apps 這類 PaaS 的擴縮與修補更省事。
  2. 確定要用 VM 後,問要防的是哪一種故障:主機維護與機架故障用可用性設定組就夠;要扛資料中心或可用性區域故障,就跨可用性區域部署。
  3. 台數需要依負載自動增減,或想用同一份設定管理一群 VM,就用擴展集(新部署選 Flexible),再搭配可用性區域與負載平衡器。
  4. 訂自動調整規則:成對設定放大與縮小規則,兩個門檻拉開,最大執行個體數就是費用上限,冷卻時間至少涵蓋新 VM 開機到能服務的時間。
  5. 要扛整個區域故障,或業務要求高於 99.99%,再考慮第二個區域與流量切換,並用複合 SLA 估算整體。
需要完整控制作業系統? 台數要依負載自動增減? 要扛資料中心等級的故障? PaaS:App Service 等 擴展集+可用性區域 跨可用性區域的 VM 可用性設定組(2 台以上) 否是是 是否否 任何一條路:只開一台就沒有備援
這是簡化的判斷順序。實務上新部署多半直接選「擴展集+可用性區域」,即使暫時不開自動調整,日後要加台數或換映像也比較好管理;可用性設定組適合從地端搬上來、需要彼此低延遲又暫時不想改架構的舊系統。

容易答錯的地方

容錯網域與更新網域顛倒:容錯網域對應「硬體壞掉」(電源、網路交換器),更新網域對應「平台計畫性維護重新開機」。題目寫機架斷電選容錯網域,寫主機更新選更新網域。

可用性設定組能扛資料中心故障:不能。可用性設定組只在單一資料中心內分散,要扛資料中心或可用性區域故障,要跨可用性區域部署;要扛整個區域,要跨區域。

一台 VM 也有 99.95%:99.95% 與 99.99% 的前提都是 2 台以上執行個體且確實分散。只有一台時,SLA 依磁碟類型另有條件。

擴展集會自動高可用:擴展集只是管理一群 VM 的方式,要不要跨可用性區域、要不要自動調整都要自己設定。沒選可用性區域的擴展集,仍可能被單一區域故障整組帶走。

協調流程模式可以事後改:不行,Flexible 與 Uniform 建立後不能互換。新部署官方建議 Flexible。

只設放大規則:沒有縮小規則,尖峰過後台數不會降回來,費用一路累積;放大與縮小門檻太近又會震盪。另外,Basic SKU 的負載平衡器已於 2025-09-30 退役,CLI 的 --lb-sku 雖然仍列出 Basic,新部署請用 Standard。

✅ 自我檢測

以下 6 題都是原創題,選完會立即顯示對錯與解析,全部作答後會出現總分。目前得分:0 / 6