Zelfstudie: Een schaalset voor virtuele machines wijzigen met PowerShell

Tijdens de levenscyclus van uw toepassingen moet u mogelijk uw virtuele-machineschaalset wijzigen of bijwerken. Deze updates kunnen omvatten hoe u de configuratie van de schaalset bijwerkt of de toepassingsconfiguratie wijzigt. In dit artikel wordt beschreven hoe u een bestaande schaalset wijzigt met behulp van PowerShell.

Het schaalsetmodel bijwerken

Een schaalset heeft een 'schaalsetmodel' waarmee de gewenste status van de schaalset als geheel wordt vastgelegd. Als u een query wilt uitvoeren op het model voor een schaalset, kunt u Get-AzVmss gebruiken.

Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet

De exacte presentatie van de uitvoer is afhankelijk van de opties die u aan de opdracht geeft. In het volgende voorbeeld ziet u verkorte voorbeelduitvoer van 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

U kunt ook Update-AzVmss gebruiken om verschillende eigenschappen van uw schaalset bij te werken. Bijvoorbeeld het bijwerken van uw licentietype.

$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName myScaleSet -LicenseType Windows_Server

Afzonderlijke VM-exemplaren in een schaalset bijwerken

Net als bij hoe een schaalset een modelweergave heeft, heeft elk VM-exemplaar in de schaalset een eigen modelweergave. Als u een query wilt uitvoeren op de modelweergave voor een bepaald VM-exemplaar in een schaalset, kunt u Get-AzVM gebruiken.

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

U kunt ook de -Status vlag toevoegen om de exemplaarweergave op te halen. Hier vindt u meer informatie over de virtuele machine.

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

Deze eigenschappen beschrijven de configuratie van een VM-exemplaar in een schaalset, niet de configuratie van de schaalset als geheel.

U kunt updates uitvoeren op afzonderlijke VM-exemplaren in een schaalset, net zoals bij een zelfstandige VM. Als u bijvoorbeeld een nieuwe gegevensschijf koppelt aan exemplaar 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

Een exemplaar aan uw schaalgroep toevoegen

Het kan voorkomen dat u een nieuwe VIRTUELE machine aan uw schaalset wilt toevoegen, maar andere configuratieopties wilt gebruiken dan in het schaalsetmodel wordt vermeld. Vm's kunnen tijdens het maken aan een schaalset worden toegevoegd met behulp van de opdracht Get-AzVmss en de naam van de schaalset opgeven waaraan u het exemplaar wilt toevoegen.

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   

Door Get-AzVM opnieuw uit te voeren, kunnen we zien dat het nieuwe exemplaar is gemaakt en toegevoegd aan de bestaande schaalset.

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   

VM’s bijwerken met het nieuwste schaalsetmodel

Opmerking

Upgrade-modi worden momenteel niet ondersteund voor Virtual Machine Scale Sets die de modus Flexibele indeling gebruiken.

Schaalsets hebben een upgradebeleid waarmee wordt bepaald hoe VM's up-to-date worden gebracht met het meest recente schaalsetmodel. De drie modi voor het upgradebeleid zijn:

  • Automatisch : in deze modus biedt de schaalset geen garanties over de volgorde van vm's die worden neergezet. De schaalset kan alle VM's tegelijkertijd uitschakelen.
  • Rolling - In deze modus rolt de schaalset de update in batches uit, met een optionele pauzetijd tussen de batches.
  • Handmatig: wanneer u het schaalsetmodel bijwerkt, gebeurt er in deze modus niets met bestaande VM's totdat een handmatige update wordt geactiveerd.

Als uw schaalset is ingesteld op handmatige upgrades, kunt u een handmatige upgrade activeren met Update-AzVmss.

$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName myScaleSet

Opmerking

Service Fabric clusters kunnen alleen de automatische modus gebruiken, maar de update wordt anders verwerkt. Zie Service Fabric-toepassingsupgrades voor meer informatie.

Een schaalset opnieuw instellen

Virtuele-machineschaalsets genereren een unieke naam voor elke virtuele machine in de schaalset. De naamconventie verschilt per orkestratiemodus:

  • Flexibele orkestratiemodus: {scale-set-name}_{8-char-guid}
  • Uniforme orkestratiemodus: {scale-set-name}_{instance-id}

Als u een specifieke instantie opnieuw van een installatiekopie moet voorzien, gebruikt u Set-AzVmss en geeft u de instantienaam op.

Set-AzVmssVM -ResourceGroupName myResourceGroup -VMScaleSetName myScaleSet -InstanceId myScaleSet_Instance1 -Reimage

Als u alle instanties in een schaalset opnieuw wilt image’en, geeft u de naam van de schaalset op en laat u eventuele instantie-id’s weg.

Set-AzVmssVM -Reimage -ResourceGroupName myResourceGroup -VMScaleSetName myScaleSet

De installatiekopieën van het besturingssysteem voor uw schaalset bijwerken

Mogelijk hebt u een schaalset waarop een oude versie van Ubuntu LTS 18.04 wordt uitgevoerd. U wilt bijwerken naar een nieuwere versie van Ubuntu LTS 16.04, zoals versie 18.04.202210180. De eigenschap van de installatiekopieënverwijzingsversie maakt geen deel uit van een lijst, dus u kunt deze eigenschappen rechtstreeks wijzigen met Update-AzVmss.

$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet      
  
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName myScaleSet -ImageReferenceVersion virtualMachineProfile.storageProfile.imageReference.version=18.04.202210180

U wilt mogelijk ook de installatiekopie wijzigen die door uw schaalset wordt gebruikt. U wilt bijvoorbeeld mogelijk een aangepaste installatiekopie bijwerken of wijzigen die door uw schaalset wordt gebruikt. U kunt de afbeelding wijzigen die door de schaalset wordt gebruikt door de eigenschap afbeeldingsreferentie-id bij te werken. De eigenschap afbeeldingsverwijzings-id maakt geen deel uit van een lijst, dus u kunt deze eigenschap rechtstreeks wijzigen met Update-AzVmss.

$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

Als u platforminstallatiekopieën van Azure gebruikt, kunt u de installatiekopie bijwerken door de imageReference te wijzigen (zie de REST API-documentatie voor meer informatie).

Opmerking

Bij platformafbeeldingen is het gebruikelijk om "latest" op te geven voor de referentieversie van de afbeelding. Wanneer u vm's maakt, uitschaalt en opnieuw maakt, worden vm's gemaakt met de nieuwste beschikbare versie. Het betekent echter niet dat de installatiekopieën van het besturingssysteem na verloop van tijd automatisch worden bijgewerkt wanneer nieuwe installatiekopieën worden uitgebracht. Een afzonderlijke functie biedt automatische upgrades van het besturingssysteem. Zie de documentatie over automatische upgrades van het besturingssysteem voor meer informatie.

Als u aangepaste images gebruikt, kunt u de image bijwerken door de ID van imageReference bij te werken (zie de REST API-documentatie voor meer informatie).

Volgende stappen 

In deze zelfstudie hebt u geleerd hoe u verschillende aspecten van uw schaalset en afzonderlijke exemplaren kunt wijzigen met behulp van PowerShell.

  • Het schaalsetmodel bijwerken
  • Een afzonderlijk VM-exemplaar in een schaalset bijwerken
  • Een exemplaar toevoegen aan uw schaalset
  • VM’s bijwerken met het nieuwste schaalsetmodel
  • Een schaalset opnieuw instellen
  • De installatiekopieën van het besturingssysteem voor uw schaalset bijwerken