Freigeben über


Tutorial: Ändern einer VM-Skalierungsgruppe mit der Azure CLI

Während des Lebenszyklus von Anwendungen müssen Sie möglicherweise Ihre VM-Skalierungsgruppe ändern oder aktualisieren. Zu diesen Aktualisierungen können das Aktualisieren der Konfiguration der Skalierungsgruppe oder das Ändern der Anwendungskonfiguration zählen. In diesem Artikel wird beschrieben, wie Sie eine vorhandene Skalierungsgruppe mithilfe der Azure CLI ändern.

Aktualisieren des Skalierungsgruppenmodells

Eine Skalierungsgruppe enthält ein Skalierungsgruppenmodell, das den gewünschten Zustand der gesamten Skalierungsgruppe erfasst. Zum Abfragen des Modells für eine Skalierungsgruppe können Sie az vmss show verwenden:

az vmss show --resource-group myResourceGroup --name myScaleSet

Die genaue Darstellung der Ausgabe hängt von den für den Befehl angegebenen Optionen ab. Das folgende Beispiel zeigt eine verkürzte Beispielausgabe von der Azure CLI:

{
  "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet",
  "location": "eastus",
  "name": "myScaleSet",
  "orchestrationMode": "Flexible",
  "platformFaultDomainCount": 1,
  "resourceGroup": "myResourceGroup",
  "sku": {
    "capacity": 2,
    "name": "Standard_DS1_v2",
    "tier": "Standard"
  },
  "timeCreated": "2022-11-29T22:16:43.250912+00:00",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
    "networkProfile": {
      "networkApiVersion": "2020-11-01",
      "networkInterfaceConfigurations": [
        {
          "deleteOption": "Delete",
          "disableTcpStateTracking": false,
          "dnsSettings": {
            "dnsServers": []
          },
          "enableIpForwarding": false,
          "ipConfigurations": [
            {
              "applicationGatewayBackendAddressPools": [],
              "applicationSecurityGroups": [],
              "loadBalancerBackendAddressPools": [
                {
                  "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/loadBalancers/myScaleSetLB/backendAddressPools/myScaleSetLBBEPool",
                  "resourceGroup": "myResourceGroup"
                }
              ],
              "name": "mysca2215IPConfig",
              "privateIpAddressVersion": "IPv4",
              "subnet": {
                "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myScaleSetVNET/subnets/myScaleSetSubnet",
                "resourceGroup": "myResourceGroup"
              }
            }
          ],
          "name": "mysca2215Nic",
          "networkSecurityGroup": {
            "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myScaleSetNSG",
            "resourceGroup": "myResourceGroup"
          },
          "primary": true
        }
      ]
    },
    "osProfile": {
      "allowExtensionOperations": true,
      "computerNamePrefix": "myScaleS",
      "linuxConfiguration": {
        "disablePasswordAuthentication": true,
        "enableVmAgentPlatformUpdates": false,
        "patchSettings": {
          "assessmentMode": "ImageDefault",
          "patchMode": "ImageDefault"
        },
        "provisionVmAgent": true,
      },
    },
    "storageProfile": {
      "imageReference": {
        "offer": "0001-com-ubuntu-server-jammy",
        "publisher": "Canonical",
        "sku": "22_04-lts",
        "version": "latest"
      },
      "osDisk": {
        "caching": "ReadWrite",
        "createOption": "FromImage",
        "deleteOption": "Delete",
        "diskSizeGb": 30,
        "managedDisk": {
          "storageAccountType": "Premium_LRS"
        },
        "osType": "Linux",
      }
    },
  },
}

Mithilfe von az vmss update können Sie verschiedene Eigenschaften Ihrer Skalierungsgruppe aktualisieren. Aktualisieren Sie z. B. Ihren Lizenztyp oder eine Schutzrichtlinie für VM-Instanzen.

az vmss update --name MyScaleSet --resource-group MyResourceGroup --license-type windows_server
az vmss update --name MyScaleSet --resource-group MyResourceGroup --instance-id 4 --protect-from-scale-set-actions False --protect-from-scale-in

Falls Sie die Skalierungsgruppe zuvor mit dem Befehl az vmss create bereitgestellt haben, können Sie den Befehl az vmss create außerdem erneut ausführen, um die Skalierungsgruppe zu aktualisieren. Stellen Sie sicher, dass alle Eigenschaften im Befehl az vmss create mit Ausnahme der zu ändernden den vorherigen Eigenschaften entsprechen. Im folgenden Beispiel erhöhen wir die Anzahl der Instanzen auf fünf.

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

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode flexible \
  --image RHELRaw8LVMGen2 \
  --admin-username azureuser \
  --generate-ssh-keys \
  --instance-count 5

Aktualisieren einzelner VM-Instanzen in einer Skalierungsgruppe

Nicht nur die Skalierungsgruppe verfügt über eine Modellansicht, sondern auch jede in der Skalierungsgruppe enthaltene VM-Instanz. Zum Abfragen der Modellansicht für eine bestimmte VM-Instanz in einer Skalierungsgruppe können Sie az vm show verwenden.

az vm show --resource-group myResourceGroup --name myScaleSet_Instanace1

Die genaue Darstellung der Ausgabe hängt von den für den Befehl angegebenen Optionen ab. Das folgende Beispiel zeigt eine verkürzte Beispielausgabe von der Azure CLI:

{
  "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-5cf164f7",
        "primary": true,
        "resourceGroup": "myResourceGroup"
      }
    ]
  },
  "osProfile": {
    "allowExtensionOperations": true,
    "computerName": "myScaleset_Computer1",
    "linuxConfiguration": {
      "disablePasswordAuthentication": true,
      "enableVmAgentPlatformUpdates": false,
      "patchSettings": {
        "assessmentMode": "ImageDefault",
        "patchMode": "ImageDefault"
      },
      "provisionVmAgent": true,
    },
  },
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "storageProfile": {
    "dataDisks": [],
    "imageReference": {
      "exactVersion": "22.04.202204200",
      "offer": "0001-com-ubuntu-server-jammy",
      "publisher": "Canonical",
      "sku": "22_04-lts",
      "version": "latest"
    },
    "osDisk": {
      "caching": "ReadWrite",
      "createOption": "FromImage",
      "deleteOption": "Delete",
      "diskSizeGb": 30,
      "managedDisk": {
        "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myScaleSet_Instance1_disk1_e1a6c46a6b5f44d695fc9e38727267c2",
        "resourceGroup": "myResourceGroup",
        "storageAccountType": "Premium_LRS"
      },
      "name": "myScaleSet_Instance1_disk1_e1a6c46a6b5f44d695fc9e38727267c2",
      "osType": "Linux",
    }
  },
  "timeCreated": "2022-11-29T22:16:44.500895+00:00",
  "type": "Microsoft.Compute/virtualMachines",
  "virtualMachineScaleSet": {
    "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet",
    "resourceGroup": "myResourceGroup"
  },
}

Diese Eigenschaften beschreiben die Konfiguration einer VM-Instanz in einer Skalierungsgruppe, nicht die Konfiguration der Skalierungsgruppe als Ganzes.

Sie können einzelne VM-Instanzen in einer Skalierungsgruppe genauso aktualisieren wie eine eigenständige VM. Fügen Sie zum Beispiel einen neuen Datenträger an Instanz 1 an:

az vm disk attach --resource-group myResourceGroup --vm-name myScaleSet_Instance1 --name disk_name1 --new

Eine erneute Ausführung von az vm show zeigt, dass der neue Datenträger an die VM-Instanz angefügt wurde.

  "storageProfile": {
    "dataDisks": [
      {
        "caching": "None",
        "createOption": "Empty",
        "deleteOption": "Detach",
        "diskSizeGb": 1023,
        "lun": 0,
        "managedDisk": {
          "id": "/subscriptions/49d84582-7207-4a4f-824e-044e83c71887/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/disk_name1",
          "resourceGroup": "myResourceGroup",
          "storageAccountType": "Premium_LRS"
        },
        "name": "disk_name1",
        "toBeDetached": false,
      }
    ],

Hinzufügen einer Instanz zu Ihrer Skalierungsgruppe

Es gibt Situationen, in denen Sie Ihrer Skalierungsgruppe möglicherweise eine neue VM hinzufügen möchten, aber andere Konfigurationsoptionen als im Skalierungsgruppenmodell verwenden möchten. Sie können VMs während der Erstellung einer Skalierungsgruppe hinzufügen, indem Sie den Befehl az vm create verwenden und den Namen der Skalierungsgruppe angeben, der die Instanz hinzugefügt werden soll.

az vm create --name myNewInstance --resource-group myResourceGroup --vmss myScaleSet --image RHELRaw8LVMGen2
{
  "fqdns": "",
  "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myNewInstance",
  "location": "eastus",
  "macAddress": "60-45-BD-D7-13-DD",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.6",
  "publicIpAddress": "20.172.144.96",
  "resourceGroup": "myResourceGroup",
  "zones": ""

Wenn wir dann unsere Skalierungsgruppe überprüfen, wird die neue Instanz hinzugefügt.

az vm list --resource-group myResourceGroup --output table
Name                 ResourceGroup    Location
-------------------  ---------------  ----------
myNewInstance         myResourceGroup  eastus
myScaleSet_Instance1  myResourceGroup  eastus
myScaleSet_Instance1  myResourceGroup  eastus

Aktualisieren von VMs auf das aktuelle Skalierungsgruppenmodell

Hinweis

Upgrademodi werden derzeit nicht für VM-Skalierungsgruppen unterstützt, die den flexiblen Orchestrierungsmodus verwenden.

Für Skalierungsgruppen gilt eine „Upgraderichtlinie“, die festlegt, wie virtuelle Computer auf das aktuelle Skalierungsgruppenmodell aktualisiert werden. Die drei Modi für die Upgraderichtlinie lauten wie folgt:

  • Automatisch: In diesem Modus gibt die Skalierungsgruppe keine Garantie in Bezug auf die Reihenfolge, in der virtuelle Computer heruntergefahren werden. Die Skalierungsgruppe fährt unter Umständen alle virtuellen Computer gleichzeitig herunter.
  • Parallel: In diesem Modus führt die Skalierungsgruppe das Update in Batches mit optionaler Pause zwischen den Batches aus.
  • Manuell: In diesem Modus werden beim Aktualisieren des Skalierungsgruppenmodells die vorhandenen VMs nicht verändert, bis eine manuelle Aktualisierung ausgelöst wird.

Wenn Ihre Skalierungsgruppe auf manuelle Upgrades festgelegt ist, können Sie mithilfe von az vmss update ein manuelles Upgrade auslösen.

az vmss update --resource-group myResourceGroup --name myScaleSet

Hinweis

Für Service Fabric-Cluster kann nur der Modus Automatisch verwendet werden, das Update wird jedoch anders gehandhabt. Weitere Informationen finden Sie unter Service Fabric-Anwendungsupgrades.

Durchführen eines Reimaging für eine Skalierungsgruppe

Virtual Machine Scale Sets generiert einen eindeutigen Namen für jede VM in der Skalierungsgruppe. Die Benennungskonvention unterscheidet sich je nach Orchestrierungsmodus:

  • Modus „Flexible Orchestrierung“: {scale-set-name}_{8-char-guid}
  • Modus „Einheitliche Orchestrierung“: {scale-set-name}_{instance-id}

Wenn Sie für eine bestimmte Instanz ein Reimaging durchführen möchten, verwenden Sie az vmss reimage, und geben Sie den Instanznamen an.

az vmss reimage --resource-group myResourceGroup --name myScaleSet --instance-id myScaleSet_Instance1

Aktualisieren des Betriebssystemimages für Ihre Skalierungsgruppe

Möglicherweise verfügen Sie über eine Skalierungsgruppe mit einer alten Version von Ubuntu. Sie möchten auf eine neuere Version von Ubuntu aktualisieren, z. B. Version 22.04.202204200. Die Eigenschaft zum Verweis auf die Imageversion ist nicht Teil einer Liste, daher können Sie diese Eigenschaft direkt mit az vmss update ändern.

az vmss update --resource-group myResourceGroup --name myScaleSet --set virtualMachineProfile.storageProfile.imageReference.version=22.04.202204200

Alternativ können Sie auch das Image ändern, das Ihre Skalierungsgruppe verwendet. So lässt sich beispielsweise ein benutzerdefiniertes Image aktualisieren oder ändern, das Ihre Skalierungsgruppe verwendet. Aktualisieren Sie dafür die Eigenschaft der Imagereferenz-ID. Die Eigenschaft für die Imageverweis-ID ist nicht Teil einer Liste, daher können Sie diese Eigenschaft direkt mit az vmss update ändern.

az vmss update \
--resource-group myResourceGroup \
--name myScaleSet \
--set virtualMachineProfile.storageProfile.imageReference.id=/subscriptions/{subscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myNewImage

Bei Verwendung von Azure-Plattformimages können Sie das Image durch Ändern von imageReference aktualisieren. (Weitere Informationen finden Sie in der REST-API-Dokumentation.)

Hinweis

Bei Plattformimages wird als Imagereferenzversion häufig „aktuelle Version“ angegeben. Beim Erstellen, horizontalen Hochskalieren und Durchführen eines Reimagings werden die virtuellen Computer mit der neuesten verfügbaren Version erstellt. Das bedeutet jedoch nicht, dass das Betriebssystemimage im Lauf der Zeit automatisch aktualisiert wird, wenn neue Imageversionen veröffentlicht werden. Ein separates Feature bietet automatische Betriebssystemupgrades. Weitere Informationen finden Sie in der Dokumentation zu automatischen Betriebssystemupgrades.

Bei Verwendung von benutzerdefinierten Images können Sie das Image durch Aktualisieren der imageReference-ID aktualisieren. (Weitere Informationen finden Sie in der REST-API-Dokumentation.)

Aktualisieren des Lastenausgleichs für Ihre Skalierungsgruppe

Angenommen, Sie besitzen eine Skalierungsgruppe mit Azure Load Balancer und möchten Azure Load Balancer durch Azure Application Gateway ersetzen. Die Eigenschaften des Lastenausgleichsmoduls und von Application Gateway für eine Skalierungsgruppe sind Teil einer Liste, daher können Sie die Befehle zum Entfernen und Hinzufügen von Listenelementen verwenden, statt die Eigenschaften direkt zu ändern.

# Remove the load balancer backend pool from the scale set model
az vmss update --resource-group myResourceGroup --name myScaleSet --remove virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].loadBalancerBackendAddressPools 0

# Remove the load balancer backend pool from the scale set model; only necessary if you have NAT pools configured on the scale set
az vmss update --resource-group myResourceGroup --name myScaleSet --remove virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].loadBalancerInboundNatPools 0

# Add the application gateway backend pool to the scale set model
az vmss update --resource-group myResourceGroup --name myScaleSet --add virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].ApplicationGatewayBackendAddressPools '{"id": "/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendAddressPools/{applicationGatewayBackendPoolName}"}'

Hinweis

Bei diesen Befehlen wird davon ausgegangen, dass für die Skalierungsgruppe nur eine IP-Konfiguration und ein Lastenausgleichsmodul festgelegt sind. Sind mehrere vorhanden, müssen Sie möglicherweise einen anderen Listenindex als 0 verwenden.

Nächste Schritte

In diesem Tutorial haben Sie erfahren, wie Sie verschiedene Aspekte Ihrer Skalierungsgruppe und einzelner Instanzen ändern.

  • Aktualisieren des Skalierungsgruppenmodells
  • Aktualisieren einer einzelnen VM-Instanz in einer Skalierungsgruppe
  • Hinzufügen einer Instanz zu Ihrer Skalierungsgruppe
  • Aktualisieren von VMs auf das aktuelle Skalierungsgruppenmodell
  • Durchführen eines Reimaging für eine Skalierungsgruppe
  • Aktualisieren des Betriebssystemimages für Ihre Skalierungsgruppe
  • Aktualisieren des Lastenausgleichs für Ihre Skalierungsgruppe