教程:使用 Azure CLI 创建和管理虚拟机规模集
利用虚拟机规模集,可以部署和管理一组虚拟机。 在虚拟机规模集的整个生命周期内,可能需要运行一个或多个管理任务。 本教程介绍如何执行下列操作:
- 创建资源组
- 创建虚拟机规模集
- 扩大和缩小
- 停止、启动和重启 VM 实例
如果没有 Azure 订阅,可在开始前创建一个试用帐户。
先决条件
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
本文需要 Azure CLI 2.0.29 或更高版本。
创建资源组
Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。 必须在创建虚拟机规模集前创建资源组。 使用“az group create”命令创建资源组。 本示例在 chinanorth2 区域中创建名为 myResourceGroup 的资源组 。
az group create --name myResourceGroup --location chinanorth2
在本教程中,此资源组名称是在创建或修改规模集时指定的。
创建规模集
重要
从 2023 年 11 月开始,使用 PowerShell 和 Azure CLI 创建的 VM 规模集将默认为灵活业务流程模式(如果未指定业务流程模式)。 若要详细了解此更改以及你应采取哪些操作,请访问针对 VMSS PowerShell/CLI 客户的中断性变更 - Microsoft 社区中心
请使用 az vmss create 命令创建虚拟机规模集。 以下示例创建名为“myScaleSet”的规模集,并生成 SSH 密钥(如果不存在):
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--orchestration-mode flexible \
--image <SKU image> \
--admin-username azureuser \
--generate-ssh-keys
创建和配置所有的规模集资源和 VM 实例需要几分钟时间。 若要将流量分配到单独的 VM 实例,则还要创建负载均衡器。
查看有关规模集中 VM 实例的信息
若要在规模集中查看 VM 实例的列表,请使用 az vm list,如下所示:
az vm list --resource-group myResourceGroup --output table
以下示例输出显示了规模集中的两个 VM 实例:
Name ResourceGroup Location Zones
------------------- --------------- ---------- -------
myScaleSet_instance1 myResourceGroup chinanorth2
myScaleSet_instance2 myResourceGroup chinanorth2
若要查看有关特定 VM 实例的其他信息,请使用 az vm show 并指定 VM 名称。
az vm show --resource-group myResourceGroup --name myScaleSet_instance1
{
"hardwareProfile": {
"vmSize": "Standard_DS1_v2",
},
"id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_instance1",
"location": "chinanorth2",
"name": "myScaleSet_instance1",
"networkProfile": {
"networkInterfaces": [
{
"deleteOption": "Delete",
"id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/mysca2215Nic-0396c71c",
"primary": true,
"resourceGroup": "myResourceGroup"
}
]
},
"osProfile": {
"adminUsername": "azureuser",
"allowExtensionOperations": true,
"computerName": "myScaleSN30BP1",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"enableVmAgentPlatformUpdates": false,
"patchSettings": {
"assessmentMode": "ImageDefault",
"patchMode": "ImageDefault"
},
"provisionVmAgent": true,
"ssh": {
"publicKeys": [
{
"keyData": "ssh-rsa",
"path": "/home/azureuser/.ssh/authorized_keys"
}
]
}
},
"requireGuestProvisionSignal": true,
"secrets": [],
},
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"storageProfile": {
"dataDisks": [],
"imageReference": {
"exactVersion": "XXXXX",
"offer": "myOffer",
"publisher": "myPublisher",
"sku": "mySKU",
"version": "latest"
},
"osDisk": {
"caching": "ReadWrite",
"createOption": "FromImage",
"deleteOption": "Delete",
"diskSizeGb": 30,
"managedDisk": {
"id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myScaleSet_instance1_disk1",
"resourceGroup": "myResourceGroup",
"storageAccountType": "Premium_LRS"
},
"name": "myScaleSet_instance1_disk1",
"osType": "Linux",
}
},
"tags": {},
"timeCreated": "2022-11-16T20:32:15.024581+00:00",
"type": "Microsoft.Compute/virtualMachines",
"virtualMachineScaleSet": {
"id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet",
"resourceGroup": "myResourceGroup"
},
}
创建特定 VM 实例大小的规模集
在教程开头创建规模集时,为 VM 实例提供了默认 VM SKU Standard_D1_v2。 可以根据 az vm list-sizes 的输出指定其他 VM 实例大小。 以下示例会使用 --vm-sku
参数创建一个规模集,以便指定 VM 实例大小 Standard_F1。 由于只需数分钟即可创建和配置所有的规模集资源和 VM 实例,因此不需部署以下规模集:
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--orchestration-mode flexible \
--image <SKU image> \
--vm-sku Standard_F1 \
--admin-user azureuser \
--generate-ssh-keys
更改规模集的容量
在教程开头创建规模集时,默认部署了两个 VM 实例。 可以使用 az vmss create 来指定 --instance-count
参数,以便更改通过规模集创建的实例数。 若要增加或减少现有规模集中的 VM 实例数,可以手动更改容量。 规模集会创建或删除所需数量的 VM 实例,然后配置分发流量所需的负载均衡器。
若要手动增加或减少规模集中 VM 实例的数目,请使用 az vmss scale。 以下示例将规模集中 VM 实例的数目设置为 3:
az vmss scale \
--resource-group myResourceGroup \
--name myScaleSet \
--new-capacity 3
更新规模集容量需要花费数分钟。 若要查看规模集中目前包含的实例数,请使用 az vm list 并对关联资源组进行查询。
az vm list --resource-group myResourceGroup --output table
Name ResourceGroup Location Zones
------------------- --------------- ---------- -------
myScaleSet_instance1 myResourceGroup chinanorth2
myScaleSet_instance2 myResourceGroup chinanorth2
myScaleSet_instance3 myResourceGroup chinanorth2
停止和解除分配规模集中的 VM 实例
若要停止规模集中的所有 VM 实例,请使用 az vmss stop。
az vmss stop \
--resource-group myResourceGroup \
--name myScaleSet
若要停止规模集中的单个 VM 实例,请使用 az vm stop 并指定实例名称。
az vm stop \
--resource-group myResourceGroup \
--name myScaleSet_instance1
已停止的 VM 实例会保留已分配状态,且会继续产生计算费用。 如果希望解除分配 VM 实例并且只产生存储费用,请使用 az vm deallocate 并指定要解除分配的实例名称。
az vm deallocate \
--resource-group myResourceGroup \
--name myScaleSet_instance1
启动规模集中的 VM 实例
若要启动规模集中的所有 VM 实例,请使用 az vmss start。
az vmss start \
--resource-group myResourceGroup \
--name myScaleSet
若要启动规模集中的单个 VM 实例,请使用 az vm start 并指定实例名称。
az vm start \
--resource-group myResourceGroup \
--name myScaleSet_instance1
重启规模集中的 VM 实例
若要重启规模集中的所有 VM 实例,请使用 az vmss restart。
az vmss restart \
--resource-group myResourceGroup \
--name myScaleSet
若要重启规模集中的单个 VM 实例,请使用 az vm restart 并指定实例名称。
az vm restart \
--resource-group myResourceGroup \
--name myScaleSet_instance1
清理资源
删除资源组时,也会删除其中包含的所有资源,例如 VM 实例、虚拟网络和磁盘。 --no-wait
参数会使光标返回提示符处,无需等待操作完成。 使用 --yes
参数将确认你希望删除资源,不会再通过其他提示进行询问。
az group delete --name myResourceGroup --no-wait --yes
后续步骤
本教程介绍了如何使用 Azure CLI 执行一些基本的规模集创建和管理任务:
- 创建资源组
- 创建规模集
- 查看和使用特定 VM 大小
- 手动缩放规模集
- 执行常见的规模集管理任务,例如停止、启动和重启规模集
请继续学习下一教程,了解如何连接到规模集实例。