共用方式為


教學課程 - 使用 Azure PowerShell 建立及管理虛擬機器擴展集

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

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

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

Azure Cloud Shell

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

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 Azure Cloud Shell 的「試試看」範例螢幕擷取畫面。
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 啟動 Azure Cloud Shell 的按鈕。
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 顯示 Azure 入口網站中 Cloud Shell 按鈕的螢幕擷取畫面

若要使用 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。 您可以使用 -VMSize 參數指定不同的 VM 執行個體大小,以指定 Standard_F1 的 VM 執行個體大小。

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 大小
  • 手動調整擴展集
  • 執行常見的擴展集管理工作,例如停止、啟動和重新啟動擴展集

前進至下一個教學課程,以了解如何連線至您的擴展集執行個體。