教學課程:使用 Azure PowerShell 建立和管理虛擬機擴展集

虛擬機器擴展集可讓您部署及管理一組虛擬機器。 在虛擬機器擴展集生命週期期間,您可能需要執行一或多個管理工作。 在本教學課程中,您將了解如何:

  • 建立資源群組
  • 建立虛擬機器擴展集
  • 擴增和縮減
  • 停止、啟動和重新啟動 VM 實例

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 Screenshot that shows an example of Try It for Azure Cloud Shell.
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 Button to launch Azure Cloud Shell.
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 Screenshot that shows the Cloud Shell button in the Azure portal

若要使用 Azure Cloud Shell:

  1. 啟動 Cloud Shell。

  2. 選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。

  3. 透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。

  4. 選取 Enter 鍵執行程式碼或命令。

建立資源群組

Azure 資源群組是在其中部署與管理 Azure 資源的邏輯容器。 必須在虛擬機擴展集之前建立資源群組。 使用 New-AzResourceGroup 命令來建立資源群組。 在此範例中,會在 EastUS 區域中建立名為 myResourceGroup 的資源群組。

New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "EastUS"

當您在本教學課程中建立或修改擴展集時,會指定資源組名。

建立虛擬機器擴展集

首先,使用 Get-credential 設定虛擬機器執行個體的系統管理員使用者名稱和密碼:

$cred = Get-Credential

現在使用 New-AzVmss 建立虛擬機器擴展集。 為了將流量散發到個別的虛擬機器執行個體,也會建立負載平衡器。 負載平衡器包含在 TCP 連接埠 80 上散發流量的規則,並允許 TCP 連接埠 3389 上的遠端桌面流量,以及 TCP 連接埠 5985 上的 PowerShell 遠端:

重要

自 2023 年 11 月起,如果未指定協調流程模式,則使用 PowerShell 和 Azure CLI 建立的 VM 擴展集會預設為彈性協調流程模式。 如需此變更的詳細資訊,以及您應該採取的動作,請移至 針對 VMSS PowerShell/CLI 客戶的中斷性變更 - Microsoft 社群中樞 (英文)

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -Location "EastUS" `
  -Credential $cred

建立及設定所有擴展集資源和 VM 執行個體需要幾分鐘的時間。 為了將流量散發到個別的虛擬機器執行個體,也會建立負載平衡器。

檢視擴展集中的 VM 實例

若要檢視擴展集中的 VM 實例清單,請使用 Get-AzVM ,如下所示:

Get-AzVM -ResourceGroupName "myResourceGroup"

下列範例輸出會顯示擴展集中的兩個 VM 實例:

ResourceGroupName                Name Location          VmSize  OsType      ProvisioningState 
-----------------                ---- --------          ------  ------       ----------------- 
myResourceGroup   myScaleSet_instance1   eastus Standard_DS1_v2 Windows         Succeeded     
myResourceGroup   myScaleSet_instance2   eastus Standard_DS1_v2 Windows         Succeeded     

若要檢視特定 VM 實例的其他資訊,請使用 Get-AzVM 並指定 VM 名稱。

Get-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1" 
ResourceGroupName      : myresourcegroup
Id                     : /subscriptions/resourceGroups/myresourcegroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_instance1
VmId                   : d27b5fde-d469-4087-b08f-87d0bd8df786
Name                   : myScaleSet_instance1
Type                   : Microsoft.Compute/virtualMachines
Location               : eastus
Tags                   : {}
HardwareProfile        : {VmSize}
NetworkProfile         : {NetworkInterfaces}
OSProfile              : {ComputerName, AdminUsername, WindowsConfiguration, Secrets, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState      : Succeeded
StorageProfile         : {ImageReference, OsDisk, DataDisks}
VirtualMachineScaleSet : {Id}
TimeCreated            : 11/16/2022 11:02:02 PM

建立具有特定 VM 實例大小的擴展集

當您在教學課程開始時建立擴展集時,系統會為 VM 實例提供預設的 VM SKU Standard_D1_v2 。 您可以使用 參數指定不同的 VM 實例大小-VMSize,以指定Standard_F1VM 實例大小。

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -VMSize "Standard_F1" `
  -Location "EastUS" `
  -Credential $cred

變更擴展集的容量

當您建立擴展集時,預設會部署兩個 VM 實例。 若要增加或減少擴展集中的 VM 實例數目,您可以手動變更容量。 擴展集會建立或移除所需的 VM 實例數目,然後設定負載平衡器以分散流量。

首先,使用 Get-AzVmss 建立擴展集物件,然後為 sku.capacity指定新的值。 若要套用容量變更,請使用 Update-AzVmss。 下列範例會將擴展集中的 VM 實例數目設定為 3

# Get current scale set
$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

# Set and update the capacity of your scale set
$vmss.sku.capacity = 3
Update-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet" -VirtualMachineScaleSet $vmss 

更新擴展集的容量需要幾分鐘的時間。 若要查看您現在在擴展集中擁有的實例數目,請使用 Get-Az

Get-AzVm -ResourceGroupName "myResourceGroup" 

下列範例輸出顯示擴充集的容量現在是 3

ResourceGroupName                Name Location          VmSize  OsType    ProvisioningState 
-----------------                ---- --------          ------  ------    ----------------- 
myResourceGroup   myScaleSet_instance1   eastus Standard_DS1_v2 Windows       Succeeded     
myResourceGroup   myScaleSet_instance2   eastus Standard_DS1_v2 Windows       Succeeded     
myResourceGroup   myScaleSet_instance3   eastus Standard_DS1_v2 Windows       Succeeded   

停止並解除分配擴展集中的 VM 實例

若要停止個別的 VM 實例,請使用 Stop-AzVm 並指定實例名稱。

Stop-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1"

根據預設,已停止的 VM 會解除分配,且不會產生計算費用。 如果您希望 VM 在停止時保持布建狀態,請將 參數新增 -StayProvisioned 至上述命令。 保留布建的已停止 VM 會產生一般計算費用。

在擴展集中啟動 VM 實例

若要啟動擴展集中的所有 VM 實例,請使用 Start-AzVmss

Start-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" 

若要在擴展集中啟動個別的 VM 實例,請使用 Start-AzVM 並指定實例名稱。

Start-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1"

重新啟動擴展集中的 VM 實例

若要重新啟動擴展集中的所有 VM,請使用 Restart-AzVmss

Restart-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

若要重新啟動個別實例,請使用 [Restart-AzVM] 並指定實例名稱。

Restart-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1"

清除資源

當您刪除資源群組時,也會刪除內含的所有資源,例如 VM 實例、虛擬網路和磁碟。 參數 -Force 會確認您想要刪除資源,而不需要額外的提示即可執行此動作。 -AsJob 參數不會等待作業完成,就會將控制項傳回給提示字元。

Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob

下一步

在本教學課程中,您已瞭解如何使用 Azure PowerShell 執行一些基本的擴展集建立和管理工作:

  • 建立資源群組
  • 建立擴展集
  • 檢視及使用特定 VM 大小
  • 手動調整擴展集
  • 執行常見的擴展集管理工作,例如停止、啟動和重新啟動擴展集

前進到下一個教學課程,以瞭解如何連線到擴展集實例。