使用 Azure PowerShell 管理虚拟机规模集

注意

本文档中列出的许多步骤都适用于使用统一业务流程模式的虚拟机规模集。 建议对新工作负载使用灵活业务流程。 有关详细信息,请参阅 Azure 中虚拟机规模集的业务流程模式

在虚拟机规模集的整个生命周期内,可能需要运行一个或多个管理任务。 此外,可能还需要创建自动执行各种生命周期任务的脚本。 本文详细介绍了执行这些任务常用的一些 Azure PowerShell cmdlet。

如果需要创建虚拟机规模集,可以使用 Azure PowerShell 创建规模集

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

查看有关规模集的信息

若要查看有关规模集的全部信息,请使用 Get-AzVmss。 以下示例将获取有关 myResourceGroup 资源组中 myScaleSet 规模集的信息 。 按如下所示输入自己的名称:

Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

查看规模集中的 VM

要在规模集中查看 VM 实例的列表,请使用 Get-AzVmssVM。 以下示例列出名为 myScaleSet 的规模集和 myResourceGroup 资源组中的所有 VM 实例。 为这些名称提供自己的值:

Get-AzVmssVM -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

要查看与特定 VM 实例有关的其他信息,请将 -InstanceId 参数添加到 Get-AzVmssVM,并指定要查看的实例。 以下示例将查看与 myScaleSet 规模集和 myResourceGroup 资源组中 VM 实例“0”有关的信息 。 按如下所示输入自己的名称:

Get-AzVmssVM -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "0"

还可以通过一个 API 调用获取所有实例的详细 instanceView 信息,这有助于避免大型安装的 API 限制。

Get-AzVmssVM -InstanceView -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
GET "https://management.chinacloudapi.cn/subscriptions/<sub-id>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<VMSSName>/virtualMachines?api-version=2019-03-01&%24expand=instanceView"

更改规模集的容量

以上命令显示了与规模集和 VM 实例相关的信息。 要增加或减少规模集中的实例数,可以更改其容量。 规模集会自动创建或删除所需数量的 VM,然后配置 VM 以接收应用程序流量。

首先,使用 Get-AzVmss 创建的规模集对象,然后为 sku.capacity 指定新的值。 若要应用容量更改,请使用 Update-AzVmss。 以下示例更新 myResourceGroup 资源组中的 myScaleSet,将其容量更新为能容纳 5 个实例 。 请按照如下所示,提供值:

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

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

更新规模集容量需要花费数分钟。 如果减少规模集的容量,将首先删除实例 ID 最大的 VM。

停止和启动规模集中的 VM

若要停止规模集中的一个或多个 VM,请使用 Stop-AzVmss。 通过 -InstanceId 参数,可指定要停止的一个或多个 VM。 若不指定实例 ID,则停止规模集中的所有 VM。 要停止多个 VM,请用逗号分隔每个实例 ID。

以下示例将停止 myScaleSet 规模集和 myResourceGroup 资源组中的实例“0” 。 请按照如下所示,提供值:

Stop-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "0"

默认情况下,将取消分配已停止的 VM,这些 VM 不会产生计算费用。 若要在停止 VM 后保持预配状态,请将 -StayProvisioned 参数添加到上面的命令中。 保持预配状态的已停止 VM 会产生常规计算费用。

启动规模集中的 VM

若要启动规模集中的一个或多个 VM,请使用 Start-AzVmss。 通过 -InstanceId 参数,可指定要启动的一个或多个 VM。 若不指定实例 ID,则启动规模集中的所有 VM。 要启动多个 VM,请用逗号分隔每个实例 ID。

以下示例将启动 myScaleSet 规模集和 myResourceGroup 资源组中的实例“0” 。 请按照如下所示,提供值:

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

重启规模集中的 VM

若要重启规模集中的一个或多个 VM,请使用 Restart-AzVmss。 通过 -InstanceId 参数,可指定要重启的一个或多个 VM。 若不指定实例 ID,则重启规模集中的所有 VM。 要重启多个 VM,请用逗号分隔每个实例 ID。

以下示例将重启 myScaleSet 规模集和 myResourceGroup 资源组中的实例“0” 。 请按照如下所示,提供值:

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

删除规模集中的 VM

若要删除规模集中的一个或多个 VM,请使用 Remove-AzVmss。 通过 -InstanceId 参数,可指定要删除的一个或多个 VM。 若不指定实例 ID,规模集中所有 VM 都将删除。 要删除多个 VM,请用逗号分隔每个实例 ID。

以下示例将删除 myScaleSet 规模集和 myResourceGroup 资源组中的实例“0” 。 请按照如下所示,提供值:

Remove-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "0"

后续步骤

规模集的其他常见任务包括如何部署应用程序升级 VM 实例。 也可使用 Azure PowerShell 来配置自动缩放规则