適用於: ✔️ Linux 虛擬機 ✔️ Windows 虛擬機 ✔️ 一致性規模設定集
注意
以下文章適用於統一虛擬機器規模設定。 我們建議針對新的工作負載使用彈性虛擬機器規模集。 在我們的彈性虛擬機器擴展集概觀中,深入瞭解這個新的協調流程模式。
虛擬機器擴展集可讓您部署和管理一組自動調整的虛擬機器。 您可以手動調整擴展集中的 VM 數目,或定義規則以根據 CPU、記憶體需求或網路流量等資源使用量進行自動調整。 其後,Azure 負載平衡器會將流量分配到擴展集中的多個 VM 執行個體。 在此快速入門中,您會使用 Azure PowerShell 建立虛擬機器擴展集,並部署應用程式範例。
如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
Azure Cloud Shell
Azure 提供的 Azure Cloud Shell 是一個互動式 Shell 環境,您可以在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。
要啟動 Azure Cloud Shell:
選項 | 範例/連結 |
---|---|
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 |
![]() |
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 |
![]() |
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 |
![]() |
若要使用 Azure Cloud Shell:
啟動 Cloud Shell。
選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。
透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。
選取 Enter 鍵執行程式碼或命令。
建立規模設定
建立擴展集之前,請先用New-AzResourceGroup來建立資源群組。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組:
New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "EastUS"
現在使用 New-AzVmss 建立虛擬機器規模集。 下列範例會建立一個名為myScaleSet的虛擬機器擴展集,該擴展集使用Windows Server 2016 Datacenter平台映像。 系統會自動建立虛擬網路、公用 IP 位址和負載平衡器的 Azure 網路資源。 當出現提示時,您可以為虛擬機規模設定中的 VM 執行個體設定自己的管理憑證:
重要
自 2023 年 11 月起,如果未指定協調流程模式,則使用 PowerShell 和 Azure CLI 建立的 VM 擴展集會預設為彈性協調流程模式。 如需此變更的詳細資訊,以及您應該採取的動作,請前往針對 VMSS PowerShell/CLI 客戶的重大改變 - Microsoft 社群中樞
New-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Location "EastUS" `
-VMScaleSetName "myScaleSet" `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-PublicIpAddressName "myPublicIPAddress" `
-LoadBalancerName "myLoadBalancer" `
-OrchestrationMode 'Uniform' `
-UpgradePolicyMode "Automatic"
建立及設定所有擴展集資源和 VM 需要幾分鐘的時間。
部署範例應用程式
若要測試您的擴展集,請安裝基本的 Web 應用程式。 您可以使用 Azure 自訂指令碼延伸模組來下載及執行會在 VM 執行個體上安裝 IIS 的指令碼。 此擴充功能適用於部署後組態、軟體安裝或其他任何組態/管理工作。 如需詳細資訊,請參閱自訂指令碼延伸模組概觀。
使用自訂指令碼延伸模組安裝基本的 IIS Web 伺服器。 套用安裝 IIS 的自訂指令碼延伸模組,如下所示:
# Define the script for your Custom Script Extension to run
$publicSettings = @{
"fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis.ps1");
"commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis.ps1"
}
# Get information about the scale set
$vmss = Get-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet"
# Use Custom Script Extension to install IIS and configure basic website
Add-AzVmssExtension -VirtualMachineScaleSet $vmss `
-Name "customScript" `
-Publisher "Microsoft.Compute" `
-Type "CustomScriptExtension" `
-TypeHandlerVersion 1.8 `
-Setting $publicSettings
# Update the scale set and apply the Custom Script Extension to the VM instances
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-VirtualMachineScaleSet $vmss
允許流量流向應用程式
若要允許存取基本 Web 應用程式,請使用 New-AzNetworkSecurityRuleConfig 和 New-AzNetworkSecurityGroup 建立網路安全性群組。 如需詳細資訊,請參閱 Azure 虛擬機器擴展集的網路功能。
# Get information about the scale set
$vmss = Get-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet"
#Create a rule to allow traffic over port 80
$nsgFrontendRule = New-AzNetworkSecurityRuleConfig `
-Name myFrontendNSGRule `
-Protocol Tcp `
-Direction Inbound `
-Priority 200 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 80 `
-Access Allow
#Create a network security group and associate it with the rule
$nsgFrontend = New-AzNetworkSecurityGroup `
-ResourceGroupName "myResourceGroup" `
-Location EastUS `
-Name myFrontendNSG `
-SecurityRules $nsgFrontendRule
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName "myResourceGroup" `
-Name myVnet
$frontendSubnet = $vnet.Subnets[0]
$frontendSubnetConfig = Set-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name mySubnet `
-AddressPrefix $frontendSubnet.AddressPrefix `
-NetworkSecurityGroup $nsgFrontend
Set-AzVirtualNetwork -VirtualNetwork $vnet
# Update the scale set and apply the Custom Script Extension to the VM instances
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-VirtualMachineScaleSet $vmss
測試您的規模設定
若要查看虛擬機擴展集的運作情況,請在網頁瀏覽器中存取範例 Web 應用程式。 使用 Get-AzPublicIpAddress 取得負載平衡器的公用 IP 位址。 下列範例會顯示 myResourceGroup 資源群組中建立的 IP 位址:
Get-AzPublicIpAddress -ResourceGroupName "myResourceGroup" | Select IpAddress
將負載平衡器的公用 IP 位址輸入網頁瀏覽器中。 負載平衡器會將流量散發至您的其中一個 VM 執行個體,如下列範例所示:
清除資源
若不再需要,您可以使用 Remove-AzResourceGroup 移除資源群組、擴展集和所有相關資源,如下所示。
-Force
參數會確認您想要刪除資源,而不另外對您提示將要進行此作業。
-AsJob
參數在不等待作業完成的情況下,會將控制權返回給提示字元。
Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob
下一步
在此快速入門中,您建立了一個基本的規模設定,並使用自訂腳本延伸模組,在 VM 執行個體上安裝了基本的 IIS Web 伺服器。 若要深入了解,請繼續執行有關於如何建立和管理 Azure 虛擬機器擴展集的教學課程。