Sdílet prostřednictvím


Kurz: Úprava škálovací sady virtuálních počítačů pomocí PowerShellu

V průběhu životního cyklu aplikací možná budete muset upravit nebo aktualizovat škálovací sadu virtuálních počítačů. Tyto aktualizace můžou zahrnovat postup aktualizace konfigurace škálovací sady nebo změnu konfigurace aplikace. Tento článek popisuje, jak upravit existující škálovací sadu pomocí PowerShellu.

Aktualizace modelu škálovací sady

Škálovací sada má model škálovací sady, který zachycuje požadovaný stav škálovací sady jako celku. K dotazování modelu škálovací sady můžete použít rutinu Get-AzVmss.

Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet

Přesná prezentace výstupu závisí na možnostech, které příkazu poskytnete. Následující příklad ukazuje zhuštěný ukázkový výstup z PowerShellu:

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

K aktualizaci různých vlastností škálovací sady můžete použít také Rutinu Update-AzVmss . Například aktualizace typu licence.

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

Aktualizace jednotlivých instancí virtuálních počítačů ve škálovací sadě

Podobně jako má škálovací sada zobrazení modelu, má každá instance virtuálního počítače ve škálovací sadě své vlastní zobrazení modelu. K dotazování zobrazení modelu pro konkrétní instanci virtuálního počítače ve škálovací sadě můžete použít Rutinu 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

Můžete také přidat -Status příznak pro získání zobrazení instance, které poskytuje další podrobnosti o virtuálním počítači.

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

Tyto vlastnosti popisují konfiguraci instance virtuálního počítače ve škálovací sadě, nikoli konfiguraci škálovací sady jako celku.

Aktualizace jednotlivých instancí virtuálních počítačů ve škálovací sadě můžete provádět stejně jako u samostatného virtuálního počítače. Například připojení nového datového disku k instanci 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

Přidání instance do škálovací sady

Někdy se může stát, že budete chtít do škálovací sady přidat nový virtuální počítač, ale budete chtít jiné možnosti konfigurace, než jsou uvedené v modelu škálovací sady. Virtuální počítače je možné přidat do škálovací sady během vytváření pomocí příkazu Get-AzVmss a zadáním názvu škálovací sady, do které chcete instanci přidat.

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   

Opětovným spuštěním rutiny Get-AzVM uvidíme, že se nová instance vytvořila a přidala do existující škálovací sady.

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   

Aktualizace virtuálních počítačů pomocí nejnovějšího modelu škálovací sady

Poznámka

Režimy upgradu nejsou v současné době podporovány v Virtual Machine Scale Sets využívajících režim flexibilní orchestrace.

Škálovací sady mají zásady upgradu, které určují, jak se virtuální počítače aktualizují pomocí nejnovějšího modelu škálovací sady. Zásady upgradu mají následující tři režimy:

  • Automaticky – V tomto režimu škálovací sada nezaručuje pořadí spouštění virtuálních počítačů. Škálovací sada může současně vypnout všechny virtuální počítače.
  • Se zajištěním provozu – V tomto režimu škálovací sada zavádí aktualizaci v dávkách s volitelnou dobou pozastavení mezi dávkami.
  • Ručně – v tomto režimu se při aktualizaci modelu škálovací sady nic nestane se stávajícími virtuálními počítači, dokud se neaktivuje ruční aktualizace.

Pokud je vaše škálovací sada nastavená na ruční upgrady, můžete ruční upgrade aktivovat pomocí rutiny Update-AzVmss.

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

Poznámka

Clustery Service Fabric můžou používat pouze automatický režim, ale aktualizace se zpracovává jinak. Další informace najdete v tématu Upgrady aplikací Service Fabric.

Obnovení škálovací sady z image

Virtual Machine Scale Sets vygeneruje jedinečný název pro každý virtuální počítač ve škálovací sadě. Zásady vytváření názvů se liší podle režimu orchestrace:

  • Flexibilní režim orchestrace: {scale-set-name}_{8-char-guid}
  • Jednotný režim orchestrace: {scale-set-name}_{instance-id}

V případech, kdy potřebujete obnovit určitou instanci z image, použijte Set-AzVmss a zadejte název instance.

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

Pokud chcete obnovit image všech instancí ve škálovací sadě, jednoduše zadejte název škálovací sady a vyprázdněte všechna id instance.

Set-AzVmssVM -Reimage -ResourceGroupName myResourceGroup -VMScaleSetName myScaleSet

Aktualizace image operačního systému pro škálovací sadu

Možná máte škálovací sadu se starou verzí Ubuntu LTS 18.04. Chcete aktualizovat na novější verzi Ubuntu LTS 16.04, například na verzi 18.04.202210180. Vlastnost verze odkazu na image není součástí seznamu, takže tyto vlastnosti můžete přímo upravit pomocí rutiny 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

Případně můžete chtít změnit image, kterou vaše škálovací sada používá. Můžete například chtít aktualizovat nebo změnit vlastní image používanou škálovací sadou. Image, kterou vaše škálovací sada používá, můžete změnit aktualizací vlastnosti ID odkazu na image. Vlastnost ID odkazu na image není součástí seznamu, takže ji můžete přímo upravit pomocí rutiny 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

Pokud používáte image platformy Azure, můžete image aktualizovat úpravou imageReference (další informace najdete v dokumentaci k rozhraní REST API).

Poznámka

U imagí platformy je běžné zadat "nejnovější" pro referenční verzi image. Při vytváření, škálování na více instancí a obnovení z image se virtuální počítače vytvoří s nejnovější dostupnou verzí. Neznamená to ale, že se image operačního systému automaticky aktualizuje v průběhu času při vydání nových verzí imagí. Samostatná funkce poskytuje automatické upgrady operačního systému. Další informace najdete v dokumentaci k automatickým upgradům operačního systému.

Pokud používáte vlastní image, můžete image aktualizovat aktualizací ID imageReference (další informace najdete v dokumentaci k rozhraní REST API).

Další kroky

V tomto kurzu jste zjistili, jak pomocí PowerShellu upravit různé aspekty škálovací sady a jednotlivých instancí.

  • Aktualizace modelu škálovací sady
  • Aktualizace jednotlivé instance virtuálního počítače ve škálovací sadě
  • Přidání instance do škálovací sady
  • Aktualizace virtuálních počítačů pomocí nejnovějšího modelu škálovací sady
  • Obnovení škálovací sady z image
  • Aktualizace image operačního systému pro škálovací sadu