Tutorial: Erstellen einer VM-Skalierungsgruppe mit PowerShell
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 mit PowerShell ä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 Get-AzVmss verwenden.
Get-AzVmss -ResourceGroupName 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 in PowerShell:
Sku :
Name : Standard_DS1_v2
Tier : Standard
Capacity : 2
ProvisioningState : Succeeded
SinglePlacementGroup : False
Id : /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet
Name : myScaleSet
Type : Microsoft.Compute/virtualMachineScaleSets
Location : eastus
VirtualMachineProfile :
ComputerNamePrefix : myScaleSe
ProvisionVMAgent : True
EnableAutomaticUpdates : True
PatchMode : AutomaticByOS
AssessmentMode : ImageDefault
EnableVMAgentPlatformUpdates : False
AllowExtensionOperations : True
StorageProfile :
Publisher : MicrosoftWindowsServer
Offer : WindowsServer
Sku : 2016-Datacenter
Version : latest
OsDisk :
Caching : None
CreateOption : FromImage
DiskSizeGB : 127
OsType : Windows
StorageAccountType : Premium_LRS
DeleteOption : Delete
NetworkProfile :
NetworkInterfaceConfigurations[0] :
Name : myScaleSet
Primary : True
DisableTcpStateTracking : False
Name : myScaleSet
Subnet :
Id : /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myScaleSet/subnets/myScaleSet
PrivateIPAddressVersion : IPv4
LoadBalancerBackendAddressPools[0] :
/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/loadBalancers/myScaleSet/backendAddressPools/myScaleSet
EnableIPForwarding : False
DeleteOption : Delete
NetworkApiVersion : 2020-11-01
OrchestrationMode : Flexible
TimeCreated : 12/2/2022 5:41:21 PM
Sie können auch Update-AzVmss verwenden, um verschiedene Eigenschaften Ihrer Skalierungsgruppe zu ändern. Sie können z. B. Ihren Lizenztyp ändern.
$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName myScaleSet -LicenseType Windows_Server
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 Get-AzVM verwenden.
Get-AzVM -ResourceGroupName myResourceGroup -name MyScaleSet_Instance1
ResourceGroupName : myResourceGroup
Id : /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_Instance1
Name : myScaleSet_Instance1
Type : Microsoft.Compute/virtualMachines
Location : eastus
Extensions : {MicrosoftMonitoringAgent}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
OSProfile : {ComputerName, AdminUsername, WindowsConfiguration, Secrets, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState : Succeeded
StorageProfile : {ImageReference, OsDisk, DataDisks}
VirtualMachineScaleSet : {Id}
TimeCreated : 12/2/2022 5:41:23 PM
Sie können auch das Flag -Status
hinzufügen, um die Instanzansicht abzurufen, die weitere Details zur VM enthält.
Get-AzVM -ResourceGroupName myResourceGroup -name MyScaleSet_Instance1 -Status
ResourceGroupName : myResourceGroup
Name : MyScaleSet_Instance1
OsName : Windows Server 2016 Datacenter
OsVersion : 10.0.14393.5501
HyperVGeneration : V1
Disks[0] :
Name : myScaleSet_Instance1_disk1_cab60acccff7414b81d60572eeecb9e3
Statuses[0] :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Time : 12/2/2022 5:41:25 PM
Disks[1] :
Name : disk1
Statuses[0] :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Time : 12/2/2022 6:33:36 PM
Extensions[0] :
Name : MicrosoftMonitoringAgent
Type : Microsoft.EnterpriseCloud.Monitoring.MicrosoftMonitoringAgent
TypeHandlerVersion : 1.0.18067.0
Statuses[0] :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Message : Latest configuration has been applied to the Microsoft Monitoring Agent.
VMAgent :
VmAgentVersion : 2.7.41491.1071
ExtensionHandlers[0] :
Type : Microsoft.EnterpriseCloud.Monitoring.MicrosoftMonitoringAgent
TypeHandlerVersion : 1.0.18067.0
Status :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Ready
Message : This virtual machine has successfully connected to Azure Log Analytics.
Statuses[0] :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Ready
Message : GuestAgent is running and processing the extensions.
Time : 12/2/2022 6:34:55 PM
Statuses[0] :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Time : 12/2/2022 6:33:42 PM
Statuses[1] :
Code : PowerState/running
Level : Info
DisplayStatus : VM running
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. Beispiel für das Anfügen eines neuen Datenträgers an Instanz 1:
$VirtualMachine = Get-AzVM -ResourceGroupName "myResourceGroup" -Name "myScaleSet_Instance1".
Add-AzVMDataDisk -VM $VirtualMachine -Name "disk1" -LUN 0 -Caching ReadOnly -DiskSizeinGB 128 -CreateOption Empty
Update-AzVM -ResourceGroupName "myResourceGroup" -VM $VirtualMachine
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 Get-AzVmss verwenden und den Namen der Skalierungsgruppe angeben, der die Instanz hinzugefügt werden soll.
New-AzVM -Name myNewInstance -ResourceGroupName myResourceGroup -image Ubuntu2204 -VmssId /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet
ResourceGroupName : myResourceGroup
Id : /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myNewInstance
Name : myNewInstance
Type : Microsoft.Compute/virtualMachines
Location : eastus
Tags : {}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
OSProfile : {ComputerName, AdminUsername, LinuxConfiguration, Secrets, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState : Succeeded
StorageProfile : {ImageReference, OsDisk, DataDisks}
FullyQualifiedDomainName : mynewinstance-21bc01.eastus.cloudapp.azure.com
VirtualMachineScaleSet : {Id}
TimeCreated : 12/2/2022 6:40:20 PM
Wenn Sie Get-AzVM erneut ausführen, können Sie sehen, dass die neue Instanz erstellt und der vorhandenen Skalierungsgruppe hinzugefügt wurde.
Get-AzVm -ResourceGroupName myResourceGroup
ResourceGroupName Name Location VmSize OsType NIC ProvisioningState
----------------- ---- -------- ------ ------ --- -----------------
myResourceGroup myNewInstance eastus Standard_D2s_v3 Linux myNewInstance Succeeded
myResourceGroup myScaleSet_Instance1 eastus Standard_DS1_v2 Windows myScaleSet-a9f1d54c Succeeded
myResourceGroup myScaleSet_Instance2 eastus Standard_DS1_v2 Windows myScaleSet-4dc708e5 Succeeded
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 geschieht beim Aktualisieren des Skalierungsgruppenmodells nichts mit den vorhandenen VMs bis ein manuelles Update ausgelöst wird.
Wenn Ihre Skalierungsgruppe auf manuelle Upgrades festgelegt ist, können Sie mithilfe von Update-AzVmss ein manuelles Upgrade auslösen.
$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName 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}
Verwenden Sie Set-AzVmss unter Angabe des Instanznamens, wenn Sie für eine bestimmte Instanz ein Reimaging durchführen möchten.
Set-AzVmssVM -ResourceGroupName myResourceGroup -VMScaleSetName myScaleSet -InstanceId myScaleSet_Instance1 -Reimage
Wenn Sie das Reimaging für alle Instanzen in einer Skalierungsgruppe durchführen möchten, geben Sie einfach den Namen der Skalierungsgruppe an, und geben Sie keine Instanz-IDs an.
Set-AzVmssVM -Reimage -ResourceGroupName myResourceGroup -VMScaleSetName myScaleSet
Aktualisieren des Betriebssystemimages für Ihre Skalierungsgruppe
Möglicherweise verfügen Sie über eine Skalierungsgruppe mit einer alten Version von Ubuntu LTS 18.04. Sie möchten ein Update auf eine neuere Version von Ubuntu LTS 16.04 durchführen, z. B. auf Version 18.04.202210180. Die Eigenschaft für die Imagereferenzversion ist nicht Teil einer Liste, daher können Sie diese Eigenschaft direkt mit Update-AzVmss ändern.
$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName myScaleSet -ImageReferenceVersion virtualMachineProfile.storageProfile.imageReference.version=18.04.202210180
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 Imagereferenz-ID ist nicht Teil einer Liste, daher können Sie diese Eigenschaft direkt mit Update-AzVmss ändern.
$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName myScaleSet -ImageReferenceVersion 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.)
Nächste Schritte
In diesem Tutorial haben Sie erfahren, wie Sie verschiedene Aspekte Ihrer Skalierungsgruppe und einzelner Instanzen mithilfe von PowerShell ä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