教程:使用 Azure PowerShell 创建和管理虚拟机规模集

利用虚拟机规模集,可以部署和管理一组虚拟机。 在虚拟机规模集的整个生命周期内,可能需要运行一个或多个管理任务。 本教程介绍如何执行下列操作:

  • 创建资源组
  • 创建虚拟机规模集
  • 扩大和缩小
  • 停止、启动和重启 VM 实例

如果没有 Azure 订阅,可在开始前创建一个试用帐户

创建资源组

Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。 必须在创建虚拟机规模集前创建资源组。 使用 New-AzResourceGroup 命令创建资源组。 本示例在 chinanorth2 区域中创建名为 myResourceGroup 的资源组 。

New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "chinanorth2"

在本教程中,此资源组名称是在创建或修改规模集时指定的。

创建虚拟机规模集

首先,使用 Get-Credential 设置 VM 实例的管理员用户名和密码:

$cred = Get-Credential

现在,使用 New-AzVmss 创建虚拟机规模集。 若要将流量分配到单独的 VM 实例,则还要创建负载均衡器。 负载均衡器包含的规则可在 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 "chinanorth2" `
  -Credential $cred

创建和配置所有的规模集资源和 VM 实例需要几分钟时间。 若要将流量分配到单独的 VM 实例,则还要创建负载均衡器。

查看规模集中的 VM 实例

若要在规模集中查看 VM 实例的列表,请使用 Get-AzVM,如下所示:

Get-AzVM -ResourceGroupName "myResourceGroup"

以下示例输出显示了规模集中的两个 VM 实例:

ResourceGroupName                Name Location          VmSize  OsType      ProvisioningState 
-----------------                ---- --------          ------  ------       ----------------- 
myResourceGroup   myScaleSet_instance1   chinanorth2 Standard_DS1_v2 Windows         Succeeded     
myResourceGroup   myScaleSet_instance2   chinanorth2 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               : chinanorth2
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 实例大小,以便指定 VM 实例大小 Standard_F1。

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -VMSize "Standard_F1" `
  -Location "chinanorth2" `
  -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   chinanorth2 Standard_DS1_v2 Windows       Succeeded     
myResourceGroup   myScaleSet_instance2   chinanorth2 Standard_DS1_v2 Windows       Succeeded     
myResourceGroup   myScaleSet_instance3   chinanorth2 Standard_DS1_v2 Windows       Succeeded   

停止和解除分配规模集中的 VM 实例

若要停止单个 VM 实例,请使用 Stop-AzVm 并指定实例名称。

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

默认情况下,将取消分配已停止的 VM,这些 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 大小
  • 手动缩放规模集
  • 执行常见的规模集管理任务,例如停止、启动和重启规模集

请继续学习下一教程,了解如何连接到规模集实例。