你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

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

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

如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户

先决条件

本文需要 Azure CLI 2.0.29 或更高版本。 如果使用 Azure Cloud Shell,则最新版本已安装。

创建资源组

Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。 必须在创建虚拟机规模集前创建资源组。 使用“az group create”命令创建资源组。 在此示例中,在“eastus”区域中创建了名为“myResourceGroup”的资源组。

az group create --name myResourceGroup --location eastus

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

创建规模集

重要

从 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  eastus
myScaleSet_instance2  myResourceGroup  eastus

若要查看有关特定 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": "eastus",
  "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  eastus
myScaleSet_instance2  myResourceGroup  eastus
myScaleSet_instance3  myResourceGroup  eastus

停止和解除分配规模集中的 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 大小
  • 手动缩放规模集
  • 执行常见的规模集管理任务,例如停止、启动和重启规模集

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