教學課程 - 使用 Azure CLI 建立及管理虛擬機器擴展集

虛擬機器擴展集可讓您部署及管理一組虛擬機器。 在虛擬機器擴展集生命週期期間,您可能需要執行一或多個管理工作。 在本教學課程中,您將了解如何:

  • 建立資源群組
  • 建立虛擬機器擴展集
  • 擴增和縮減
  • 停止、啟動和重新啟動 VM 執行個體

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

必要條件

本文需要 2.0.29 版或更新版本的 Azure CLI。 如果您是使用 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 執行個體清單,請使用 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 大小
  • 手動調整擴展集
  • 執行常見的擴展集管理工作,例如停止、啟動和重新啟動擴展集

前進至下一個教學課程,以了解如何連線至您的擴展集執行個體。