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 einer Skalierungsgruppe müssen unter Umständen verschiedene Verwaltungsaufgaben durchgeführt werden. In diesem Tutorial lernen Sie Folgendes:

  • Erstellen einer Ressourcengruppe
  • Erstellen einer VM-Skalierungsgruppe
  • Horizontal hoch- und herunterskalieren
  • Beenden, Starten und Neustarten von VM-Instanzen

Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.

Voraussetzungen

  • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

  • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

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 der VM-Skalierungsgruppe 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 der Skalierungsgruppe 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_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"
  },
}

Erstellen einer Skalierungsgruppe mit einer bestimmten VM-Instanzgröße

Bei der Erstellung der Skalierungsgruppe zu Beginn des Tutorials wurde für die VM-Instanzen die VM-Standard-SKU Standard_D1_v2 angegeben. Auf der Grundlage der Ausgabe von az vm list-sizes können Sie eine andere VM-Instanzgröße angeben. Im folgenden Beispiel wird eine Skalierungsgruppe mit dem Parameter --vm-sku erstellt, um die VM-Instanzgröße 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 az vmss create zusammen mit dem Parameter --instance-count angeben, um die Anzahl von Instanzen zu ändern, die mit einer Skalierungsgruppe erstellt werden. 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. Im folgenden Beispiel wird die Anzahl von VM-Instanzen in der Skalierungsgruppe auf 3 festgelegt:

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

Die Aktualisierung der Skalierungsgruppenkapazität dauert ein paar Minuten. Um die aktuelle Anzahl der Instanzen in der Skalierungsgruppe anzuzeigen, verwenden Sie az vm list und fragen die zugeordnete Ressourcengruppe ab.

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

Beendete VM-Instanzen bleiben weiter zugeordnet, und es fallen weiterhin Computegebühren für sie an. 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

Neustarten von VM-Instanzen in einer Skalierungsgruppe

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-Befehlszeilenschnittstelle einige grundlegende Erstellungs- und Verwaltungsaufgaben für Skalierungsgruppen ausführen:

  • Erstellen einer Ressourcengruppe
  • Erstellen einer Skalierungsgruppe
  • Anzeigen und Verwenden bestimmter VM-Größen
  • Manuelles Skalieren einer Skalierungsgruppe
  • Ausführen allgemeiner Verwaltungsaufgaben für Skalierungsgruppen, z. B. Beenden, Starten und Neustarten der Skalierungsgruppe

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