Freigeben über


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