Dela via


Självstudie: Ändra en VM-skalningsuppsättning med PowerShell

Under hela livscykeln för dina program kan du behöva ändra eller uppdatera vm-skalningsuppsättningen. Dessa uppdateringar kan omfatta hur du uppdaterar konfigurationen av skalningsuppsättningen eller ändrar programkonfigurationen. I den här artikeln beskrivs hur du ändrar en befintlig skalningsuppsättning med hjälp av PowerShell.

Uppdatera skalningsuppsättningsmodellen

En skalningsuppsättning har en "skalningsuppsättningsmodell" som fångar upp det önskade tillståndet för skalningsuppsättningen som helhet. Om du vill fråga modellen efter en skalningsuppsättning kan du använda Get-AzVmss.

Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet

Den exakta presentationen av utdata beror på vilka alternativ du anger för kommandot. I följande exempel visas komprimerade exempelutdata från 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

Du kan också använda Update-AzVmss för att uppdatera olika egenskaper för din skalningsuppsättning. Du kan till exempel uppdatera din licenstyp.

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

Uppdatera enskilda VM-instanser i en skalningsuppsättning

På samma sätt som en skalningsuppsättning har en modellvy har varje VM-instans i skalningsuppsättningen en egen modellvy. Om du vill köra frågor mot modellvyn för en viss VM-instans i en skalningsuppsättning kan du använda Get-AzVM.

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

Du kan också lägga till -Status flaggan för att hämta instansvyn, som innehåller mer information om den virtuella datorn.

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

De här egenskaperna beskriver konfigurationen av en virtuell datorinstans i en skalningsuppsättning, inte konfigurationen av skalningsuppsättningen som helhet.

Du kan utföra uppdateringar av enskilda VM-instanser i en skalningsuppsättning på samma sätt som en fristående virtuell dator. Du kan till exempel koppla en ny datadisk till instans 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

Lägga till en instans i din skalningsuppsättning

Det finns tillfällen då du kanske vill lägga till en ny virtuell dator i skalningsuppsättningen men vill ha andra konfigurationsalternativ än vad som sedan anges i skalningsuppsättningsmodellen. Virtuella datorer kan läggas till i en skalningsuppsättning när de skapas med hjälp av kommandot Get-AzVmss och ange det skalningsuppsättningsnamn som du vill att instansen ska läggas till i.

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   

Genom att köra Get-AzVM igen kan vi se att den nya instansen har skapats och lagts till i den befintliga skalningsuppsättningen.

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   

Bring VMs up-to-date med den senaste skalningsuppsättningsmodellen

Kommentar

Uppgraderingslägen stöds för närvarande inte i vm-skalningsuppsättningar med flexibelt orkestreringsläge.

Skalningsuppsättningar har en "uppgraderingsprincip" som avgör hur virtuella datorer är uppdaterade med den senaste skalningsuppsättningsmodellen. De tre lägena för uppgraderingsprincipen är:

  • Automatisk – I det här läget ger skalningsuppsättningen inga garantier för ordningen på virtuella datorer som tas bort. Skalningsuppsättningen kan ta bort alla virtuella datorer samtidigt.
  • Rullande – I det här läget distribuerar skalningsuppsättningen uppdateringen i batchar med en valfri paustid mellan batchar.
  • Manuell – När du uppdaterar skalningsuppsättningsmodellen i det här läget händer ingenting med befintliga virtuella datorer förrän en manuell uppdatering utlöses.

Om skalningsuppsättningen är inställd på manuella uppgraderingar kan du utlösa en manuell uppgradering med Update-AzVmss.

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

Kommentar

Service Fabric-kluster kan bara använda automatiskt läge, men uppdateringen hanteras på olika sätt. Mer information finns i Service Fabric-programuppgraderingar.

Återskapa en skalningsuppsättning

Vm-skalningsuppsättningar genererar ett unikt namn för varje virtuell dator i skalningsuppsättningen. Namngivningskonventionen skiljer sig åt beroende på orkestreringsläge:

  • Flexibelt orkestreringsläge: {scale-set-name}_{8-char-guid}
  • Enhetligt orkestreringsläge: {scale-set-name}_{instance-id}

I de fall där du behöver återskapa en specifik instans använder du Set-AzVmss och anger instansnamnet.

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

Om du vill återskapa alla instanser i en skalningsuppsättning anger du bara skalningsuppsättningens namn och utelämnar instans-ID:t.

Set-AzVmssVM -Reimage -ResourceGroupName myResourceGroup -VMScaleSetName myScaleSet

Uppdatera OS-avbildningen för skalningsuppsättningen

Du kan ha en skalningsuppsättning som kör en gammal version av Ubuntu LTS 18.04. Du vill uppdatera till en nyare version av Ubuntu LTS 16.04, till exempel version 18.04.202210180. Egenskapen för avbildningsreferensversion ingår inte i en lista, så du kan ändra dessa egenskaper direkt med 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

Du kan också ändra den bild som skalningsuppsättningen använder. Du kanske till exempel vill uppdatera eller ändra en anpassad avbildning som används av skalningsuppsättningen. Du kan ändra den avbildning som skalningsuppsättningen använder genom att uppdatera egenskapen för bildreferens-ID. Egenskapen för bildreferens-ID ingår inte i en lista, så du kan ändra den här egenskapen direkt med 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

Om du använder Azure-plattformsavbildningar kan du uppdatera avbildningen genom att ändra imageReference (mer information finns i REST API-dokumentationen).

Kommentar

Med plattformsbilder är det vanligt att ange "senaste" för avbildningsreferensversionen. När du skapar, skalar ut och återskapar skapas virtuella datorer med den senaste tillgängliga versionen. Det innebär dock inte att OS-avbildningen uppdateras automatiskt med tiden när nya avbildningsversioner släpps. En separat funktion ger automatiska OS-uppgraderingar. Mer information finns i dokumentationen om automatiska os-uppgraderingar.

Om du använder anpassade avbildningar kan du uppdatera avbildningen genom att uppdatera imageReference-ID:t (mer information finns i REST API-dokumentationen).

Nästa steg

I den här självstudien har du lärt dig hur du ändrar olika aspekter av din skalningsuppsättning och enskilda instanser med hjälp av PowerShell.

  • Uppdatera skalningsuppsättningsmodellen
  • Uppdatera en enskild VM-instans i en skalningsuppsättning
  • Lägga till en instans i din skalningsuppsättning
  • Bring VMs up-to-date med den senaste skalningsuppsättningsmodellen
  • Återskapa en skalningsuppsättning
  • Uppdatera OS-avbildningen för skalningsuppsättningen