你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
教程:使用 Azure PowerShell 创建和管理虚拟机规模集
利用虚拟机规模集,可以部署和管理一组虚拟机。 在虚拟机规模集的整个生命周期内,可能需要运行一个或多个管理任务。 本教程介绍如何执行下列操作:
- 创建资源组
- 创建虚拟机规模集
- 扩大和缩小
- 停止、启动和重启 VM 实例
如果没有 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”运行代码或命令。
创建资源组
Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。 必须在创建虚拟机规模集前创建资源组。 使用 New-AzResourceGroup 命令创建资源组。 在此示例中,在“EastUS”区域中创建了名为“myResourceGroup”的资源组。
New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "EastUS"
在本教程中,此资源组名称是在创建或修改规模集时指定的。
创建虚拟机规模集
首先,使用 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 "EastUS" `
-Credential $cred
创建和配置所有的规模集资源和 VM 实例需要几分钟时间。 若要将流量分配到单独的 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 实例大小,以便指定 VM 实例大小 Standard_F1。
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 不会产生计算费用。 若要在停止 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 大小
- 手动缩放规模集
- 执行常见的规模集管理任务,例如停止、启动和重启规模集
请继续学习下一教程,了解如何连接到规模集实例。