虛擬機規模集是一種 Azure 計算資源,可用于部署和管理一組相同的 VM。 由于所有 VM 的配置都相同,因此無需對 VM 進行任何預先配置。 這樣就可以更方便地構建面向大型計算、大數據、容器化工作負荷的大規模服務。
對于需要擴大和縮小計算資源的應用程序,縮放操作在容錯域和更新域之間進行隱式平衡。 有關規模集的更多介紹,請參閱Azure 博客公告。
創建和管理規模集
可以在Azure 門戶中創建規模集,方法是:選擇“新建”,然后在搜索欄中鍵入“規模”。 結果中會列出“虛擬機規模集”。 從這里,可以填寫必填字段,自定義和部署規模集。
也可以使用 JSON 模板與REST API來定義和部署規模集,就像定義和部署單個 Azure Resource Manager VM 一樣。 因此,可以使用任何標準的 Azure Resource Manager 部署方法。 有關模板的詳細信息,請參閱創作 Azure Resource Manager 模板。
可在Azure 快速入門模板 GitHub 存儲庫中找到一組虛擬機規模集的示例模板。 (查找標題中含有vmss的模板。)
以“快速啟動”模板為例,每個模板的自述文件中的“部署到 Azure”按鈕都會鏈接到門戶部署功能。 如果要部署規模集,請單擊該按鈕,并填寫門戶中所需的任何參數。
擴大和縮小規模集
若要在 Azure 門戶中更改規模集的容量,可單擊“設置”下的“縮放”部分。
若要在命令行中更改規模集容量,請在Azure CLI中使用scale命令。 例如,使用以下命令可將規模集設置為 10 個 VM 的容量:
Note
在 Azure 中國區使用 Azure CLI 2.0 之前,請先運行az cloud set -n AzureChinaCloud來改變云環境。如果想切回國際版 Azure,請再次運行az cloud set -n AzureCloud。
bash復制
az vmss scale -g resourcegroupname -n scalesetname --new-capacity 10
若要通過 PowerShell 在規模集中設置 VM 數,請使用Update-AzureRmVmss命令:
PowerShell復制
$vmss=Get-AzureRmVmss-ResourceGroupNameresourcegroupname-VMScaleSetNamescalesetname$vmss.Sku.Capacity =10Update-AzureRmVmss-ResourceGroupNameresourcegroupname-Namescalesetname-VirtualMachineScaleSet$vmss
若要通過 Azure Resource Manager 模板增加或減少規模集中的虛擬機數,請更改capacity屬性并重新部署模板。
若要重新部署 Azure Resource Manager 模板以更改容量,可以定義一個小得多的模板,只包括SKU屬性數據包和更新的容量。下面是一個示例。
監視規模集
Azure 門戶列出規模集并顯示其屬性。 門戶還支持管理操作。 可以針對規模集和規模集中的單個 VM 執行這些操作。 該門戶還提供了一個可自定義的資源使用情況圖。
規模集方案
本部分列出了一些典型的規模集方案。 一些高級 Azure 服務(如批處理、Service Fabric 和容器服務)使用這些方案。
使用 RDP 或 SSH 連接到規模集實例:在虛擬網絡中創建規模集,默認情況下不為規模集中的單個 VM 分配公共 IP 地址。 此策略避免了將獨立的公共 IP 地址分配給計算網格中的所有節點所需的支出和管理開銷。 如果確實需要通過直接的外部連接來連接到規模集 VM,則可將規模集配置為自動將公共 IP 地址分配到新的 VM。 也可從虛擬網絡中可以為其分配公共 IP 地址的其他資源(例如,負載均衡器和獨立虛擬機)連接到這些 VM。
使用 NAT 規則連接到 VM:可以創建一個公共 IP 地址,并將其分配給負載均衡器,然后定義入站 NAT 池。 這些操作將 IP 地址上的端口映射到規模集中 VM 上的端口。 例如:
源Source Port目標Destination Port
公共 IP端口 50000vmss_0端口 22
公共 IP端口 50001vmss_1端口 22
公共 IP端口 50002vmss_2端口 22
此示例中定義了 NAT 規則,以便通過單個公共 IP 地址實現與規模集中每個 VM 的 SSH 連接。
此示例使用 RDP 和 Windows 實現相同的目的。
使用“jumpbox”連接到 VM:如果在同一個虛擬網絡中創建一個規模集和一個獨立 VM,則該獨立 VM 和規模集 VM 能夠使用其由虛擬網絡或子網定義的內部 IP 地址彼此連接。 如果創建一個公共 IP 地址并將其分配給獨立 VM,可以使用 RDP 或 SSH 連接到該獨立 VM。 然后,可從該虛擬機連接到規模集實例。 此時你可能會發現,與使用其默認配置中的公共 IP 地址的簡單獨立 VM 相比,簡單的規模集本質上更安全。
例如,此模板使用一個獨立的 VM 部署簡單的規模集。
負載均衡到規模集實例:如果想要使用輪循機制方法向 VM 的計算群集交付工作,可以使用第 4 層負載均衡規則對 Azure 負載均衡器進行相應的配置。 可以定義探測,通過使用指定的協議、間隔和請求路徑對端口執行 ping 操作來驗證應用程序是否正在運行。Azure 應用程序網關也支持規模集,以及第 7 層和更復雜的負載均衡方案。
此示例創建運行 Apache Web 服務器的規模集,并使用負載均衡器來均衡每個 VM 接收的負載。 (查看 Microsoft.Network/loadBalancers 資源類型以及 virtualMachineScaleSet 中的 networkProfile 和 extensionProfile。)
此 Linux 示例和此 Windows 示例使用應用程序網關。
在 PaaS 群集管理器中將規模集部署為計算群集:規模集有時描述為下一代輔助角色。 這是有效的描述,但也可能導致將規模集功能與 Azure 云服務功能混淆。 在某種意義上,規模集提供真正的輔助角色或輔助角色資源。 規模集是通用計算資源,獨立于平臺/運行時、可自定義且可集成到 Azure Resource Manager IaaS 中。
云服務輔助角色雖然在平臺/運行時支持方面受到限制(僅限 Windows 平臺映像), 但它也包括多項服務,如 VIP 交換,可配置的升級設置,以及特定于運行時/應用部署的設置。 這些服務尚未在規模集中提供,或者由 Azure Service Fabric 等其他更高級別 PaaS 服務提供。 可以將規模集視為支持 PaaS 的基礎結構。 PaaS 解決方案(例如Service Fabric)基于該基礎結構。
規模集性能和縮放指南
一個規模集最多支持 1,000 個 VM。 如果創建和上傳自己的自定義 VM 映像,則該限制為 300。 如需使用大型規模集時的注意事項,請參閱使用大型虛擬機規模集。
無需預先創建 Azure 存儲帳戶即可使用規模集。 規模集支持 Azure 托管磁盤,因此不需擔心因單個存儲帳戶磁盤數不足而造成的性能問題。 有關詳細信息,請參閱Azure 虛擬機規模集和托管磁盤。
可以考慮使用 Azure 高級存儲而不是 Azure 存儲,以便加快 VM 預配速度、提高 VM 預配時間的可預測性,以及改進 I/O 性能。
可以創建的 VM 數受到在其中進行部署的區域中核心配額的限制。 即使目前用于 Azure 云服務的核心數上限已較高,也仍可能需要聯系客戶支持來提高計算配額限制。 若要查詢配額,請運行以下 Azure CLI 命令:azure vm list-usage。 或者,運行以下 PowerShell 命令:Get-AzureRmVMUsage。
有關規模集的常見問題
問:可在規模集中包含多少個 VM?
答:一個規模集可以包含 0 到 1,000 個基于平臺映像的 VM,或者 0 到 300 個基于自定義映像的 VM。
問:規模集是否支持數據磁盤?
答:是的。 規模集可以定義適用于集中所有 VM 的附加數據磁盤配置。 有關詳細信息,請參閱Azure scale sets and attached data disks(Azure 規模集和附加的數據磁盤)。 可用于存儲數據的其他選項包括:
Azure 文件(SMB 共享驅動器)
OS 驅動器
臨時驅動器(本地,不是以 Azure 存儲為基礎)
Azure 數據服務(例如 Azure 表、Azure Blob)
外部數據服務(例如遠程數據庫)
問:哪些 Azure 區域支持規模集?
答:所有區域都支持規模集。
問:如何使用自定義映像創建規模集?
答:根據自定義映像 VHD 創建托管磁盤,并在規模集模板中引用該磁盤。下面是一個示例。
問:如果我將規模集容量從 20 減少到 15,將刪除哪些 VM?
答:將從跨更新域和容錯域的規模集中均勻地刪除虛擬機,以最大限度地提高可用性。 首先刪除 ID 最大的 VM。
問:如果將容量從 15 增加到 18,會發生什么情況?
答:如果將容量增加到 18,則創建 3 個新 VM。 每增加容量一次,VM 實例 ID 就會從以前的最高值(例如 20、21、22)遞增。 容錯域與和更新域中的 VM 是均衡的。
問:在一個規模集中使用多個擴展時,是否可以強制規定執行序列?
答:不能直接強制執行,但對于 customScript 擴展,腳本可以等待另一個擴展來完成。 在Extension Sequencing in Azure VM Scale Sets(Azure VM 規模集中的擴展序列)博客文章中可以獲取有關擴展序列的其他指導。
問:規模集是否適用于 Azure 可用性集?
答:是的。 規模集是包含 5 個容錯域和 5 個更新域的隱式可用性集。 規模集如果包含 100 個以上的 VM,則會跨多個位置組,等效于多個可用性集。 有關位置組的詳細信息,請參閱使用大型虛擬機規模集。 由 VM 組成的可用性集可以與由 VM 組成的規模集位于相同的虛擬網絡中。 常見的配置是將控件節點 VM(經常需要獨特的配置)放在可用性集中,將數據節點放在規模集中。
可在Azure 虛擬機規模集常見問題中找到有關規模集的更多常見問題解答。