Tutorial: Erstellen und Verwalten einer VM-Skalierungsgruppe mit der Azure CLI

Mithilfe einer VM-Skalierungsgruppe können Sie eine Gruppe von VMs bereitstellen und verwalten. Während des Lebenszyklus eines Virtual Machine Scale Set müssen unter Umständen verschiedene Verwaltungsaufgaben durchgeführt werden. In diesem Tutorial lernen Sie Folgendes:

  • Erstellen einer Ressourcengruppe
  • Erstellen eines Virtual Machine Scale Set
  • Horizontal hoch- und herunterskalieren
  • Beenden, Starten und Neustarten von VM-Instanzen

Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.

Voraussetzungen

Für diesen Artikel ist mindestens Version 2.0.29 der Azure CLI erforderlich. Bei Verwendung von Azure Cloud Shell ist die aktuelle Version bereits installiert.

Erstellen einer Ressourcengruppe

Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden. Vor dem Virtual Machine Scale Set muss zunächst eine Ressourcengruppe erstellt werden. Erstellen Sie mithilfe des Befehls az group create eine Ressourcengruppe. In diesem Beispiel wird eine Ressourcengruppe mit dem Namen myResourceGroup in der Region eastus erstellt.

az group create --name myResourceGroup --location eastus

Der Ressourcengruppenname wird im gesamten Tutorial beim Erstellen oder Ändern einer Skalierungsgruppe angegeben.

Erstellen einer Skalierungsgruppe

Wichtig

Ab November 2023 werden VM-Skalierungsgruppen, die mit PowerShell und der Azure CLI erstellt wurden, standardmäßig auf den flexiblen Orchestrierungsmodus festgelegt, wenn kein Orchestrierungsmodus angegeben wird. Weitere Informationen zu dieser Änderung und zu den Maßnahmen, die Sie ergreifen sollten, finden Sie unter Breaking Change für PowerShell-/CLI-Kunden mit VMSS – Microsoft Community Hub.

Verwenden Sie zum Erstellen einer VM-Skalierungsgruppe den Befehl az vmss create. Im folgenden Beispiel wird eine Skalierungsgruppe mit dem Namen myScaleSet erstellt, und es werden SSH-Schlüssel generiert, falls sie noch nicht vorhanden sind:

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode flexible \
  --image <SKU image> \
  --admin-username azureuser \
  --generate-ssh-keys

Die Erstellung und Konfiguration aller Ressourcen und VM-Instanzen des Scale Sets dauert einige Minuten. Um Datenverkehr an die einzelnen VM-Instanzen zu verteilen, wird auch ein Lastenausgleich erstellt.

Anzeigen von Informationen zu den VM-Instanzen in Ihrer Skalierungsgruppe

Verwenden Sie az vm list wie folgt, um eine Liste mit den VM-Instanzen in einer Skalierungsgruppe anzuzeigen:

az vm list --resource-group myResourceGroup --output table

Die folgende Beispielausgabe zeigt zwei VM-Instanzen in der Skalierungsgruppe:

Name                 ResourceGroup    Location    Zones
-------------------  ---------------  ----------  -------
myScaleSet_instance1  myResourceGroup  eastus
myScaleSet_instance2  myResourceGroup  eastus

Um zusätzliche Informationen zu einer bestimmten VM-Instanz anzuzeigen, verwenden Sie az vm show und geben dabei den VM-Namen an.

az vm show --resource-group myResourceGroup --name myScaleSet_instance1
{
  "hardwareProfile": {
    "vmSize": "Standard_D2s_v5",
  },
  "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"
  },
}

Erstellen eines Skalierungssatzes mit einer bestimmten VM-Instanzgröße

Wenn Sie zu Beginn des Tutorials einen Skalierungssatz erstellt haben, hat Azure CLI die Standard-VM-SKU für die aktuelle Cloud verwendet, weil Sie --vm-sku nicht angegeben haben. In Azure öffentlichen Clouds ist dieser Standardwert Standard_D2s_v5. In AzureUSGovernment bleibt der Standardwert Standard_D1_v2. Auf der Grundlage der Ausgabe von az vm list-sizes können Sie eine andere VM-Instanzgröße angeben. Im folgenden Beispiel wird ein Skalierungssatz mit dem --vm-sku Parameter erstellt, um eine VM-Instanzgröße von Standard_F1 anzugeben. Da die Erstellung und Konfiguration aller Ressourcen und VM-Instanzen der Skalierungsgruppe einige Minuten dauert, müssen Sie die folgende Skalierungsgruppe nicht bereitstellen:

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode flexible \
  --image <SKU image> \
  --vm-sku Standard_F1 \
  --admin-user azureuser \
  --generate-ssh-keys

Ändern der Kapazität einer Skalierungsgruppe

Bei der Erstellung der Skalierungsgruppe zu Beginn des Tutorials wurden standardmäßig zwei VM-Instanzen bereitgestellt. Sie können den Parameter --instance-count mit az vmss create angeben, um die Anzahl der mit einem Skalierungssatz erstellten Instanzen zu ändern. Wenn Sie die Anzahl von VM-Instanzen in Ihrer bereits vorhandenen Skalierungsgruppe erhöhen oder verringern möchten, können Sie manuell die Kapazität ändern. Die Skalierungsgruppe erstellt oder entfernt die erforderliche Anzahl von VM-Instanzen und konfiguriert anschließend den Lastenausgleich für die Verteilung des Datenverkehrs.

Die Anzahl von VM-Instanzen in der Skalierungsgruppe kann mit az vmss scale manuell erhöht oder verringert werden. Das folgende Beispiel legt die Anzahl der VM-Instanzen in Ihrem Skalierungsset auf 3 fest:

az vmss scale \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --new-capacity 3

Die Aktualisierung der Skalierungsgruppenkapazität dauert ein paar Minuten. Um die Anzahl der Instanzen anzuzeigen, die Sie jetzt im Skalierungssatz haben, verwenden Sie az vm list und führen Sie eine Abfrage für die zugeordnete Ressourcengruppe aus.

az vm list --resource-group myResourceGroup --output table
Name                 ResourceGroup    Location    Zones
-------------------  ---------------  ----------  -------
myScaleSet_instance1  myResourceGroup  eastus
myScaleSet_instance2  myResourceGroup  eastus
myScaleSet_instance3  myResourceGroup  eastus

Beenden von VM-Instanzen in einer Skalierungsgruppe und Aufheben ihrer Zuordnung

Verwenden Sie az vmss stop, um alle VM-Instanzen in einer Skalierungsgruppe zu beenden.

az vmss stop \
  --resource-group myResourceGroup \
  --name myScaleSet

Um einzelne VM-Instanzen in einer Skalierungsgruppe zu beenden, verwenden Sie az vm stop und geben den Namen der Instanz an.

az vm stop \
  --resource-group myResourceGroup \
  --name myScaleSet_instance1

Gestoppte VM-Instanzen bleiben weiterhin zugewiesen und verursachen weiterhin Rechengebühren. Wenn Sie die VM-Instanzen stattdessen freigeben möchten, sodass nur Speichergebühren anfallen, verwenden Sie az vm deallocate und geben die Namen der Instanzen an, die Sie freigeben möchten.

az vm deallocate \
  --resource-group myResourceGroup \
  --name myScaleSet_instance1

Starten von VM-Instanzen in einer Skalierungsgruppe

Verwenden Sie az vmss start, um alle VM-Instanzen in einer Skalierungsgruppe zu starten.

az vmss start \
  --resource-group myResourceGroup \
  --name myScaleSet

Um eine einzelne VM-Instanz in einer Skalierungsgruppe zu starten, verwenden Sie az vm start und geben den Instanznamen an.

az vm start \
  --resource-group myResourceGroup \
  --name myScaleSet_instance1

VM-Instanzen in einer Skalierungsgruppe neu starten

Verwenden Sie az vmss restart, um alle VM-Instanzen in einer Skalierungsgruppe neu zu starten.

az vmss restart \
  --resource-group myResourceGroup \
  --name myScaleSet

Um eine einzelne VM-Instanz in einer Skalierungsgruppe neu zu starten, verwenden Sie az vm restart und geben den Instanznamen an.

az vm restart \
  --resource-group myResourceGroup \
  --name myScaleSet_instance1

Bereinigen von Ressourcen

Wenn Sie eine Ressourcengruppe löschen, werden auch alle darin enthaltenen Ressourcen (wie VM-Instanzen, das virtuelle Netzwerk und die Datenträger) gelöscht. Der Parameter --no-wait gibt die Steuerung an die Eingabeaufforderung zurück, ohne zu warten, bis der Vorgang abgeschlossen ist. Mit dem Parameter --yes wird bestätigt, dass Sie die Ressourcen löschen möchten, ohne hierzu eine zusätzliche Aufforderung zu erhalten.

az group delete --name myResourceGroup --no-wait --yes

Nächste Schritte

In diesem Tutorial haben Sie gelernt, wie Sie mit der Azure CLI einige grundlegende Aufgaben zum Erstellen und Verwalten von Skalierungsgruppen ausführen:

  • Erstellen einer Ressourcengruppe
  • Erstellen einer Skalierungsgruppe
  • Anzeigen und Verwenden bestimmter VM-Größen
  • Manuelles Skalieren einer Skalierungsgruppe
  • Führen Sie allgemeine Verwaltungsaufgaben für Ihre Skalierungsgruppe aus, z. B. das Anhalten, Starten und Neustarten Ihrer Skalierungsgruppe

Im nächsten Tutorial erfahren Sie, wie Sie eine Verbindung mit den Instanzen Ihrer Skalierungsgruppe herstellen.