Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Viele der in diesem Dokument aufgeführten Schritte gelten für Virtual Machine Scale Sets im Uniform Orchestration-Modus. Für neue Workloads empfehlen wir den Modus „Flexible Orchestrierung“. Weitere Informationen finden Sie unter Orchestrierungsmodi für Virtual Machine Scale Sets-Instanzen in Azure.
Während des Lebenszyklus Ihrer Anwendungen kann es notwendig sein, Ihre VM-Skalierungsgruppe zu ändern oder zu aktualisieren. Zu diesen Aktualisierungen können die Aktualisierung der Konfiguration des Skalen-Satzes oder die Änderung der Anwendungskonfiguration zählen. Dieser Artikel beschreibt die Vorgehensweise zum Ändern einer vorhandenen Skalierungsgruppe mit den REST-APIs, Azure PowerShell oder der Azure CLI.
Grundlegende Konzepte
Skalierungsgruppenmodell
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 Folgendes verwenden:
REST-API mit compute/virtualmachinescalesets/get wie folgt:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet?api-version={apiVersion}Azure PowerShell mit Get-AzVmss:
Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"Azure CLI mit az vmss show:
az vmss show --resource-group myResourceGroup --name myScaleSetSie können auch resources.azure.com oder die sprachspezifischen Azure-SDKs verwenden.
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:
az vmss show --resource-group myResourceGroup --name myScaleSet
{
"location": "westus",
"overprovision": true,
"plan": null,
"singlePlacementGroup": true,
"sku": {
"additionalProperties": {},
"capacity": 1,
"name": "Standard_D2_v2",
"tier": "Standard"
},
}
Diese Eigenschaften gelten für den Skalensatz als Ganzes.
Instanzenansicht für die Skalierungsgruppe
Eine Skalierungsgruppe verfügt außerdem über eine Skalierungsgruppen-Instanzenansicht, die den aktuellen Laufzeitstatus der gesamten Skalierungsgruppe erfasst. Zum Abfragen der Instanzenansicht für eine Skalierungsgruppe können Sie Folgendes verwenden:
REST-API mit compute/virtualmachinescalesets/getinstanceview wie folgt:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/instanceView?api-version={apiVersion}Azure PowerShell mit Get-AzVmss:
Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceViewAzure CLI mit az vmss get-instance-view:
az vmss get-instance-view --resource-group myResourceGroup --name myScaleSetSie können auch resources.azure.com oder die sprachspezifischen Azure-SDKs verwenden
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:
$ az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet
{
"statuses": [
{
"additionalProperties": {},
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"level": "Info",
"message": null,
"time": "{time}"
}
],
"virtualMachine": {
"additionalProperties": {},
"statusesSummary": [
{
"additionalProperties": {},
"code": "ProvisioningState/succeeded",
"count": 1
}
]
}
}
Diese Eigenschaften bieten eine Übersicht über den aktuellen Laufzeitstatus der virtuellen Computer in der Skalierungsgruppe, etwa den Status der auf die Skalierungsgruppe angewendeten Erweiterungen.
VM-Modellansicht der 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 Folgendes verwenden:
REST-API mit compute/virtualmachinescalesetvms/get wie folgt:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualmachines/instanceId?api-version={apiVersion}Azure PowerShell mit Get-AzVmssVm:
Get-AzVmssVm -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId instanceIdAzure CLI mit az vmss show:
az vmss show --resource-group myResourceGroup --name myScaleSet --instance-id instanceIdSie können auch resources.azure.com oder die Azure-SDKs verwenden.
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:
$ az vmss show --resource-group myResourceGroup --name myScaleSet
{
"location": "westus",
"name": "{name}",
"sku": {
"name": "Standard_D2_v2",
"tier": "Standard"
},
}
Diese Eigenschaften beschreiben die Konfiguration einer VM-Instanz in einer Skalierungsgruppe, nicht die Konfiguration der Skalierungsgruppe als Ganzes. Beispielsweise weist das Skalierungsgruppenmodell overprovision als Eigenschaft auf, während das Modell für eine VM-Instanz innerhalb einer Skalierungsgruppe diese Eigenschaft nicht besitzt. Dieser Unterschied ist darauf zurückzuführen, dass die Überbereitstellung eine Eigenschaft für die Skalierungsgruppe als Ganzes und nicht für einzelne VM-Instanzen in der Skalierungsgruppe ist. (Weitere Informationen zur Überbereitstellung finden Sie unter Überlegungen zum Entwurf von Skalierungsgruppen.)
VM-Instanzenansicht für die Skalierungsgruppe
Ähnlich wie eine Skalierungsgruppe über eine Instanzenansicht verfügt, hat auch jede VM-Instanz in der Skalierungsgruppe ihre eigene Instanzenansicht. Zum Abfragen der Instanzenansicht für eine bestimmte VM-Instanz in einer Skalierungsgruppe können Sie Folgendes verwenden:
REST-API mit compute/virtualmachinescalesetvms/getinstanceview wie folgt:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualmachines/instanceId/instanceView?api-version={apiVersion}Azure PowerShell mit Get-AzVmssVm:
Get-AzVmssVm -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId instanceId -InstanceViewAzure CLI mit az vmss get-instance-view
az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet --instance-id instanceIdSie können auch resources.azure.com oder die Azure-SDKs verwenden
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:
$ az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet --instance-id instanceId
{
"additionalProperties": {
"osName": "ubuntu",
"osVersion": "16.04"
},
"disks": [
{
"name": "{name}",
"statuses": [
{
"additionalProperties": {},
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"time": "{time}"
}
]
}
],
"statuses": [
{
"additionalProperties": {},
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"time": "{time}"
},
{
"additionalProperties": {},
"code": "PowerState/running",
"displayStatus": "VM running"
}
],
"vmAgent": {
"statuses": [
{
"additionalProperties": {},
"code": "ProvisioningState/succeeded",
"displayStatus": "Ready",
"level": "Info",
"message": "Guest Agent is running",
"time": "{time}"
}
],
"vmAgentVersion": "{version}"
},
}
Diese Eigenschaften beschreiben den aktuellen Laufzeitstatus einer VM-Instanz in einer Skalierungsgruppe, einschließlich aller auf die Skalierungsgruppe angewandten Erweiterungen.
Aktualisieren von globalen Skalierungsgruppeneigenschaften
Wenn Sie eine globale Skalierungsgruppeneigenschaft aktualisieren möchten, müssen Sie die Eigenschaft im Skalierungsgruppenmodell aktualisieren. Für die Aktualisierung können Sie Folgendes verwenden:
REST-API mit compute/virtualmachinescalesets/createorupdate wie folgt:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet?api-version={apiVersion}Sie können mit den Eigenschaften aus der REST-API eine Azure Resource Manager-Vorlage bereitstellen, um globale Skalierungsgruppeneigenschaften zu aktualisieren.
Azure PowerShell mit Update-AzVmss:
Update-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -VirtualMachineScaleSet {scaleSetConfigPowershellObject}Azure CLI mit az vmss update:
So ändern Sie eine Eigenschaft:
az vmss update --set {propertyPath}={value}So fügen Sie einer Listeneigenschaft in einer Skalierungsgruppe ein Objekt hinzu:
az vmss update --add {propertyPath} {JSONObjectToAdd}So entfernen Sie ein Objekt aus einer Listeneigenschaft in einer Skalierungsgruppe:
az vmss update --remove {propertyPath} {indexToRemove}Falls Sie die Skalierungsgruppe zuvor mit dem Befehl
az vmss createbereitgestellt haben, können Sie den Befehlaz vmss createerneut ausführen, um die Skalierungsgruppe zu aktualisieren. Stellen Sie sicher, dass alle Eigenschaften imaz vmss create-Befehl mit den vorherigen Eigenschaften übereinstimmen, mit Ausnahme der Eigenschaften, die Sie ändern möchten.
Sie können auch resources.azure.com oder die Azure-SDKs verwenden.
Nach der Aktualisierung des Skalierungsgruppenmodells gilt die neue Konfiguration für alle in der Skalierungsgruppe erstellten neuen virtuellen Computer. Die Modelle für die vorhandenen virtuellen Computer in der Skalierungsgruppe müssen aber dennoch auf das aktuelle Skalierungsgruppenmodell aktualisiert werden. Die Modelle der einzelnen virtuellen Computer enthalten eine boolesche Eigenschaften namens latestModelApplied, die angibt, ob ein virtueller Computer auf das aktuelle Skalierungsgruppenmodell aktualisiert wurde. (true bedeutet, dass der virtuelle Computer auf das aktuelle Modell aktualisiert wurde.)
Eigenschaften mit Einschränkungen bei der Änderung
Eigenschaften zur Erstellungszeit
Einige Eigenschaften können nur beim Erstellen der Skalierungsgruppe festgelegt werden. Einige Beispiele sind der Speicherkontotyp Managed OS Disk und die Fehlerdomänen.
Eigenschaften, die nur auf Grundlage des aktuellen Werts geändert werden können
Einige Eigenschaften können mit Ausnahmen je nach aktuellem Wert geändert werden. Zu diesen Eigenschaften zählen folgende:
- singlePlacementGroup
- Subnetz
- imageReferenceSku
- imageReferenceOffer
- Zonen
Beispiel 1
Um Ihr Skalierungsset auf eine andere Betriebssystemversion zu aktualisieren, müssen Sie alle aktualisierten Eigenschaften in einem einzigen Vorgang festlegen. In diesem Beispiel wechseln wir von Ubuntu Server 20.04 auf 22.04.
az vmss update \
--resource-group myResourceGroup \
--name myScaleSet \
--set virtualMachineProfile.storageProfile.imageReference.offer=0001-com-ubuntu-server-jammy \
--set virtualMachineProfile.storageProfile.imageReference.publisher=Canonical \
--set virtualMachineProfile.storageProfile.imageReference.sku=22_04-lts-gen2 \
--set virtualMachineProfile.storageProfile.imageReference.version=latest
Beispiel 2
Um Ihr Skalierungsset auf eine andere Betriebssystemversion zu aktualisieren, müssen Sie alle aktualisierten Eigenschaften in einem einzigen Vorgang festlegen. In diesem Beispiel wechseln wir von Windows Server 2016 zu Windows Server 2019.
$VMSS = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
Set-AzVmssStorageProfile $vmss `
-OsDiskCreateOption "FromImage" `
-ImageReferencePublisher "MicrosoftWindowsServer" `
-ImageReferenceOffer "WindowsServer" `
-ImageReferenceSku "2019-datacenter" `
-ImageReferenceVersion "latest"
Update-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet" -VirtualMachineScaleSet $VMSS
Eigenschaften, für die zur Änderung die Aufhebung der Zuordnung erforderlich ist
Einige Eigenschaften können nur in bestimmte Werte geändert werden, wenn die Zuordnung der virtuellen Computer in der Skalierungsgruppe aufgehoben wird. Zu diesen Eigenschaften zählen folgende:
- SKU-Name: Wird die neue VM-SKU auf der Hardware, auf der sich die Skalierungsgruppe derzeit befindet, nicht unterstützt, müssen Sie die Zuordnung der virtuellen Computer in der Skalierungsgruppe aufheben, bevor Sie den SKU-Namen ändern. Weitere Informationen finden Sie unter Ändern der Größe einer Azure-VM.
Szenarien
Anwendungsupdates
Wenn eine Anwendung über Erweiterungen in einer Skalierungsgruppe bereitgestellt wird, löst eine Aktualisierung der Erweiterungskonfiguration eine Aktualisierung der Anwendung gemäß der Upgraderichtlinie aus. Wenn Sie beispielsweise über eine neue Version eines Skripts für die Ausführung in einer benutzerdefinierten Skripterweiterung verfügen, können Sie die fileUris-Eigenschaft aktualisieren, sodass sie auf das neue Skript verweist. In einigen Fällen möchten Sie jedoch eine Aktualisierung erzwingen, auch wenn die Erweiterungskonfiguration unverändert bleibt, z.B. wenn Sie das Skript aktualisiert haben, ohne den URI des Skripts zu ändern. In diesen Fällen können Sie forceUpdateTag ändern, um eine Aktualisierung zu erzwingen. Diese Eigenschaft wird von der Azure-Plattform nicht interpretiert. Wenn Sie den Wert ändern, hat das keine Auswirkung auf die Ausführung der Erweiterung. Durch eine Änderung wird lediglich eine erneute Ausführung der Erweiterung erzwungen. Weitere Informationen zum forceUpdateTag finden Sie in der REST-API-Dokumentation für Erweiterungen der virtuellen Maschinen. Beachten Sie, dass forceUpdateTag mit allen Erweiterungen verwendet werden kann, nicht nur mit der benutzerdefinierten Skripterweiterung.
Anwendungen werden häufig auch über ein benutzerdefiniertes Image bereitgestellt. Dieses Szenario wird im folgenden Abschnitt behandelt.
Betriebssystemupdates
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, Aufskalieren 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 Upgrades des Betriebssystems.
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.)
Beispiele
Aktualisieren des Betriebssystemimages für Ihre Skalierungsgruppe
Möglicherweise verfügen Sie über ein Skalen-Set, das eine alte Version von Ubuntu LTS 16.04 ausführt. Sie möchten auf eine neuere Version von Ubuntu LTS 16.04 aktualisieren, z.B. Version 16.04.201801090. Die Eigenschaft für die Imagereferenzversion ist nicht Teil einer Liste, daher können Sie diese Eigenschaften direkt mit einem der folgenden Befehle ändern:
Azure PowerShell mit Update-AzVmss wie folgt:
Update-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -ImageReferenceVersion 16.04.201801090Azure CLI mit az vmss update:
az vmss update --resource-group myResourceGroup --name myScaleSet --set virtualMachineProfile.storageProfile.imageReference.version=16.04.201801090
Alternativ können Sie auch das Image ändern, das Ihre Skalierungsgruppe verwendet. Beispielsweise möchten Sie möglicherweise ein benutzerdefiniertes Abbild aktualisieren oder ändern, das Ihr Skalierungssatz verwendet. Sie können das von Ihrem Skalensatz verwendete Bild ändern, indem Sie die Eigenschaft der Bildreferenz-ID aktualisieren. Die Eigenschaft der Imagereferenz-ID gehört zu keiner Liste, sodass Sie sie direkt mit einem der folgenden Befehle ändern können:
Azure PowerShell mit Update-AzVmss wie folgt:
Update-AzVmss ` -ResourceGroupName "myResourceGroup" ` -VMScaleSetName "myScaleSet" ` -ImageReferenceId /subscriptions/{subscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myNewImageAzure CLI mit az vmss update:
az vmss update \ --resource-group myResourceGroup \ --name myScaleSet \ --set virtualMachineProfile.storageProfile.imageReference.id=/subscriptions/{subscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myNewImage
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:
Azure PowerShell:
# Get the current model of the scale set and store it in a local PowerShell object named $vmss $vmss=Get-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet" # Create a local PowerShell object for the new desired IP configuration, which includes the reference to the application gateway $ipconf = New-AzVmssIPConfig -ApplicationGatewayBackendAddressPoolsId /subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendAddressPools/{applicationGatewayBackendAddressPoolName} -SubnetId $vmss.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].IpConfigurations[0].Subnet.Id -Name $vmss.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].IpConfigurations[0].Name # Replace the existing IP configuration in the local PowerShell object (which contains the references to the current Azure Load Balancer) with the new IP configuration $vmss.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].IpConfigurations[0] = $ipconf # Update the model of the scale set with the new configuration in the local PowerShell object Update-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet" -virtualMachineScaleSet $vmssAzure CLI:
# 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
Sie können mit der Azure CLI oder Azure PowerShell auch allgemeine Verwaltungsaufgaben für Skalierungsgruppen ausführen.