微軟雲賬號購買:手把手教你利用 Azure VMSS 實現應用程序的自動化彈性擴縮容
在上一次的教程中,我們成功在 Azure 中部署了第一台虛擬機。 但現實中,如果你的網站突然遭遇「雙十一」式的流量暴擊,單台虛擬機可能瞬間癱瘓;而到了深夜,流量低谷時,讓一堆高性能服務器空轉又是巨大的資金浪費。
在雲原生時代,我們不應該手動去買服務器、配環境。
Azure 虛擬機規模集(Virtual Machine Scale Sets,簡稱 VMSS)
就是為了解決這個痛點而生的。 它可以根據業務流量的變化,
自動幫你增加(買)或減少(退)虛擬機實例的數量
。
今天這篇深度教程,就帶你從零開始,親手搭建一個具備「自動彈性擴縮容」能力的超高可用 Web 應用架構。
一、 核心概念:什麼是 VMSS 與彈性擴縮容?
在動手前,我們先用大白話理清兩個硬核概念:
虛擬機規模集(VMSS): 簡單來說,它是一個「打字機模板」。 你只需要配置好一台虛擬機的操作系統、軟件環境,VMSS 就能在幾分鐘內,幫你克隆出 5 台、50 台甚至 500 台一模一樣的虛擬機。
水平擴展(Scale Out)與水平收縮(Scale In):垂直擴展是把雙核 CPU 換成四核(需要重啟,有上限);水平擴展則是「人多力量大」--一台扛不住,自動再來兩台。 流量沒了,再自動退掉。 這就是彈性(Elasticity)。
二、 核心架構設計
我們要搭建的不是一個光禿禿的規模集,而是一個標準的生產環境架構:
[ 互聯網流量 (HTTP/80) ]
│
▼
[ Azure 負載均衡器 ]
(Load Balancer)
│
┌────────┴────────┐
▼ ▼
[ VMSS 實例 1 ] [ VMSS 實例 2 ] ... (根據 CPU 自動增減)
流量先到達負載均衡器,由它平均分配給後端的 VMSS 實例。 VMSS 會盯著這些實例的 CPU 損耗,一旦超過閾值,立刻自動裂變出新的實例加入戰鬥。
三、 第一階段:創建與配置 VMSS(基礎搭建)
登錄 Azure 門戶(Azure Portal),在搜索欄輸
入
「虛擬機規模集」
(Virtual Machine Scale Sets),點擊「創建」。
1. 基本信息
資源組: 建議新建一個,比如 MyVMSS-RG。
虛擬機規模集名稱: 比如 my-web-scale-set。
區域: 選擇離你最近的區域(如 East Asia)。
業務流程: 選 「統一 (Uniform)」。 這能確保所有克隆出來的機器完全一致,最適合無狀態的 Web 應用。
映像(Image): 這裡我們以 Ubuntu Server 24.04 LTS 為例(Windows 操作邏輯完全相同)。
2. 規模與規格
大小: 依舊推薦極具性價比的 Standard_B1s 或 Standard_B2s(練手足夠,省錢第一)。
驗證類型: 選擇「密碼」或「SSH 密鑰」。 為了教學演示方便,我們這裡選密碼,設置好用戶名(如 azureuser)和強密碼。
3. 網絡配置(關鍵步驟)
拉到網絡部分,你會看到「負載均衡」選項。
勾選「使用負載均衡器」。
負載均衡器選項: 選擇「Azure 負載均衡器」。
選擇負載均衡器 / 新建: 命名為 my-load-balancer。
選擇後端池 / 新建: 命名為 my-backend-pool。
💡為什麼要選這個? 這樣一來,未來無論 VMSS 自動創建了多少台虛擬機,azure 都會自動把它們塞進這個「後端池」里,負載均衡器會自動把用戶的訪問流量分發過去,完全不需要你手動配置 IP。
四、 第二階段:利用自定義腳本實現「開箱即用」
規模集會自動幫我們建機器,但新機器裡面是空空的。 怎麼讓新克隆出來的機器自動裝好 Web 服務(比如 Nginx)並運行我們的應用呢?
我們需要利用
高級(Advanced)
選項中的
「自定義腳本擴展(Custom Script Extension)」
。
在創建頁面的
「高級」
選項卡中,找到「自定義數據(Custom Data)」,在文本框中貼入以下這段 Linux 初始化腳本:
Bash
#! /Bin/bash
# 更新系統並安裝 Nginx
Apt-get update -y
Apt-get install nginx -y
# 啟動 Nginx 服務
Systemctl start nginx
Sys
Temctl enable nginx
# 寫入一個網頁,動態顯示當前主機的名稱(方便我們測試看效果)
Echo "<h1>Hello from Azure VMSS! My Hostname is: $(hostname)</h1>" > /var/www/html/index.html
這段腳本的作用是:
每當 VMSS 發現流量大、自動新建一台虛擬機時,這台新機器在開機的一瞬間,就會自動執行這段代碼--安裝 Nginx、啟動服務、寫好網頁。 真正實現無人值守的自動化。
五、 第三階段:配置核心--自動彈性擴縮容策略
點擊切換到
「縮放(Scaling)」
選項卡。 這是整個教程靈魂所在。
默認選項是「手動縮放」,我們需要把它改成
「自定義自動縮放(Custom autoscale)」
。
接下來,我們需要配置一套嚴密的「擴縮容規則」:
1. 設置實例範圍
最低實例數(Minimum): 1(平時沒人訪問時,保留 1 台機器省錢)。
最高實例數(Maximum): 3(防止代碼寫錯陷入死循環,或者遇到惡意攻擊時,無限開機器導致信用卡刷爆,設個上限保護錢包)。
默認實例數(Default): 1。
2. 添加擴容規則(Scale Out Rule)
點擊「添加規則」,我們要告訴系統什麼時候該加機器:
度量值源: 當前資源(VMSS)。
時間聚合: 平均值。
度量值名稱: Percentage CPU(CPU 使用率)。
運算符: 大於。
閾值(Metric threshold): 70 (當 CPU 平均使用率超過 70% 時)。
持續時間(分鐘): 5 (這種情況持續了 5 分鐘以上,說明不是偶發的瞬時波動,是真的頂不住了)。
操作: 將計數增加。
實例數: 1 (每次增加 1 台機器)。
冷卻時間(分鐘): 5 (加完一台機器後,讓子彈飛一會兒,觀察 5 分鐘,別加太快)。
3. 添加縮容規則(Scale In Rule)
有借有還,再添加一條規則,告訴系統什麼時候該退機器省錢:
度量值名稱: Percentage CPU。
運算符: 小於。
閾值: 30 (當全場平均 CPU 閒到 30% 以下時)。
操作: 將計數減少。
實例數: 1 (每次裁剪 1 台機器
,直到縮減到最低值 1 台為止)。
配置完成後,點擊
「查看 創建」
,等待部署完成。
六、 驗證奇蹟:如何測試自動擴縮容?
部署完成後,轉到你的資源組,找到那個
負載均衡器(my-load-balancer)
,複製它的「前端公共 IP 地址」。
正常訪問: 在瀏覽器輸入這個 IP,你應該能看到 Hello from Azure VMSS! My Hostname is: my-web-scale-set_0。 刷新幾次,頁面穩如泰山。
人工製造暴擊(壓測):我們需要手動把這台機器的 CPU 給拉滿。 通過 SSH 連接到當前的這台虛擬機實例,在終端里運行一條經典的 CPU 壓測命令(或者安裝 stress 工具):bash# 安裝壓測工具 sudo apt-get install stress -y # 讓 CPU 4核滿載運行(哪怕你只有1核,它也會全力拉滿) stress --cpu 4 --timeout 600
3. **見證奇蹟:**
回到 Azure 門戶的 VMSS 頁面,點擊左側的 **「運行狀況 (Run history)」** 或 **「實例 (Instances)」**。
大約 5 分鐘後,你會發現圖表中的 CPU 曲線陡峭上升。 緊接著,實例列表里刷新出了一個新的實例:'my-web-scale-set_1',狀態為「正在創建」 -> 「正在運行」。
4. **再次訪問:**
瘋狂刷新你瀏覽器裡的那個負載均衡器 IP。 你會發現,一會兒顯示的是 'Hostname is: . .._0',一會兒變成了 'Hostname is: . .._1'。
**這說明負載均衡器已經成功把部分流量分流給了剛出生的小弟! **
5. **自動退場:**
10分鐘後,壓測命令結束,CPU 回落。 再過 5-10 分鐘,系統觸發縮容規則,剛剛新建的那台虛擬機又會被自動優雅地關閉並刪除,一切恢復原狀。
---
## 七、 總結與排坑指南
通過今天的進階學習,你已經解鎖了雲原生架構的核心能力--**高可用與彈性自癒**。 在實際生產環境應用中,還有兩個小貼士需要注意:
* **無狀態設計(Stateless):** 彈性擴縮容的機器是「隨生隨滅」的。 千萬不要
把用戶的上傳文件、數據庫存在 VMSS 虛擬機的本地硬盤里,否則一縮容就全沒了。 文件應該存到 Azure Blob Storage(對象存儲),數據應該存到 Azure SQL 等獨立數據庫。
* **鏡像更新:** 我們今天用的是腳本裝 Nginx,如果你的應用很複雜、依賴很多,更好的做法是:在一台普通 VM 里把環境全部配好,然後把它打包成一個**自定義映像(Custom Image)**,讓 VMSS 直接基於你的自定義映像去克隆。
掌握了 VMSS,你就再也不用在半夜盯著服務器流量看板,可以安心把高可用交到微軟雲的自動化算法手中了!
