Udostępnij za pośrednictwem


Samouczek: modyfikowanie zestawu skalowania maszyn wirtualnych przy użyciu programu PowerShell

W całym cyklu życia aplikacji może być konieczne zmodyfikowanie lub zaktualizowanie zestawu skalowania maszyn wirtualnych. Te aktualizacje mogą obejmować sposób aktualizowania konfiguracji zestawu skalowania lub zmiany konfiguracji aplikacji. W tym artykule opisano sposób modyfikowania istniejącego zestawu skalowania przy użyciu programu PowerShell.

Aktualizowanie modelu zestawu skalowania

Zestaw skalowania ma "model zestawu skalowania", który przechwytuje żądany stan zestawu skalowania jako całości. Aby wykonać zapytanie dotyczące modelu dla zestawu skalowania, możesz użyć polecenia Get-AzVmss.

Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet

Dokładna prezentacja danych wyjściowych zależy od opcji, które podajesz do polecenia. W poniższym przykładzie przedstawiono skrócone przykładowe dane wyjściowe programu 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

Możesz również użyć polecenia Update-AzVmsss , aby zaktualizować różne właściwości zestawu skalowania. Na przykład aktualizowanie typu licencji.

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

Aktualizowanie poszczególnych wystąpień maszyn wirtualnych w zestawie skalowania

Podobnie jak w przypadku widoku modelu zestaw skalowania, każde wystąpienie maszyny wirtualnej w zestawie skalowania ma własny widok modelu. Aby wykonać zapytanie dotyczące widoku modelu dla określonego wystąpienia maszyny wirtualnej w zestawie skalowania, możesz użyć polecenia 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

Możesz również dodać flagę -Status , aby uzyskać widok wystąpienia, który zawiera więcej szczegółów na temat maszyny wirtualnej.

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

Te właściwości opisują konfigurację wystąpienia maszyny wirtualnej w zestawie skalowania, a nie konfigurację zestawu skalowania jako całości.

Aktualizacje poszczególnych wystąpień maszyn wirtualnych można wykonywać w zestawie skalowania tak samo jak w przypadku autonomicznej maszyny wirtualnej. Na przykład dołączanie nowego dysku danych do wystąpienia 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

Dodawanie wystąpienia do zestawu skalowania

Czasami warto dodać nową maszynę wirtualną do zestawu skalowania, ale chcieć wybrać różne opcje konfiguracji niż następnie wymienione w modelu zestawu skalowania. Maszyny wirtualne można dodać do zestawu skalowania podczas tworzenia za pomocą polecenia Get-AzVmsss i określić nazwę zestawu skalowania, do którego ma zostać dodane wystąpienie.

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   

Ponownie uruchamiając polecenie Get-AzVM , możemy zobaczyć, że nowe wystąpienie zostało utworzone i dodane do istniejącego zestawu skalowania.

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   

Udostępnianie aktualnych maszyn wirtualnych przy użyciu najnowszego modelu zestawu skalowania

Uwaga

Tryby uaktualniania nie są obecnie obsługiwane w Virtual Machine Scale Sets przy użyciu trybu orkiestracji elastycznej.

Zestawy skalowania mają "zasady uaktualniania", które określają sposób, w jaki maszyny wirtualne są na bieżąco z najnowszym modelem zestawu skalowania. Trzy tryby zasad uaktualniania to:

  • Automatyczne — w tym trybie zestaw skalowania nie gwarantuje, że kolejność maszyn wirtualnych zostanie wyłączona. Zestaw skalowania może jednocześnie zdjąć wszystkie maszyny wirtualne.
  • Stopniowe — w tym trybie zestaw skalowania wdraża aktualizację w partiach z opcjonalnym czasem wstrzymania między partiami.
  • Ręczne — w tym trybie podczas aktualizowania modelu zestawu skalowania nic się nie dzieje z istniejącymi maszynami wirtualnymi do momentu wyzwolenia ręcznej aktualizacji.

Jeśli zestaw skalowania jest ustawiony na ręczne uaktualnienia, możesz wyzwolić ręczne uaktualnienie przy użyciu polecenia Update-AzVmss.

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

Uwaga

Klastry usługi Service Fabric mogą używać tylko trybu automatycznego , ale aktualizacja jest obsługiwana inaczej. Aby uzyskać więcej informacji, zobacz Uaktualnienia aplikacji usługi Service Fabric.

Ponowne tworzenie obrazu zestawu skalowania

Virtual Machine Scale Sets wygeneruje unikatową nazwę dla każdej maszyny wirtualnej w zestawie skalowania. Konwencja nazewnictwa różni się w zależności od trybu aranżacji:

  • Tryb elastycznej aranżacji: {scale-set-name}_{8-char-guid}
  • Jednolity tryb aranżacji: {scale-set-name}_{instance-id}

W przypadkach, w których konieczne jest odtworzenie obrazu określonego wystąpienia, użyj polecenia Set-AzVmss i określ nazwę wystąpienia.

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

Aby odtworzyć wszystkie wystąpienia w zestawie skalowania, wystarczy określić nazwę zestawu skalowania i pominąć wszystkie identyfikatory wystąpień.

Set-AzVmssVM -Reimage -ResourceGroupName myResourceGroup -VMScaleSetName myScaleSet

Aktualizowanie obrazu systemu operacyjnego dla zestawu skalowania

Być może masz zestaw skalowania z uruchomioną starą wersją systemu Ubuntu LTS 18.04. Chcesz zaktualizować do nowszej wersji systemu Ubuntu LTS 16.04, takiej jak wersja 18.04.202210180. Właściwość wersji referencyjnej obrazu nie jest częścią listy, dlatego można bezpośrednio zmodyfikować te właściwości przy użyciu polecenia 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

Alternatywnie możesz zmienić obraz używany przez zestaw skalowania. Na przykład możesz zaktualizować lub zmienić obraz niestandardowy używany przez zestaw skalowania. Obraz używany przez zestaw skalowania można zmienić, aktualizując właściwość identyfikatora odwołania do obrazu. Właściwość identyfikatora odwołania do obrazu nie jest częścią listy, dlatego można bezpośrednio zmodyfikować tę właściwość przy użyciu polecenia 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

Jeśli używasz obrazów platformy Azure, możesz zaktualizować obraz, modyfikując obrazReference (więcej informacji, zobacz dokumentację interfejsu API REST).

Uwaga

W przypadku obrazów platformy często określa się "najnowszą" wersję referencyjną obrazu. Podczas tworzenia, skalowania w poziomie i ponownego obrazu maszyny wirtualne są tworzone przy użyciu najnowszej dostępnej wersji. Nie oznacza to jednak, że obraz systemu operacyjnego jest automatycznie aktualizowany wraz z upływem czasu, ponieważ są wydawane nowe wersje obrazów. Oddzielna funkcja zapewnia automatyczne uaktualnienia systemu operacyjnego. Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą automatycznych uaktualnień systemu operacyjnego.

Jeśli używasz obrazów niestandardowych, możesz zaktualizować obraz, aktualizując identyfikator imageReference (więcej informacji, zobacz dokumentację interfejsu API REST).

Następne kroki

W tym samouczku przedstawiono sposób modyfikowania różnych aspektów zestawu skalowania i poszczególnych wystąpień przy użyciu programu PowerShell.

  • Aktualizowanie modelu zestawu skalowania
  • Aktualizowanie pojedynczego wystąpienia maszyny wirtualnej w zestawie skalowania
  • Dodawanie wystąpienia do zestawu skalowania
  • Udostępnianie aktualnych maszyn wirtualnych przy użyciu najnowszego modelu zestawu skalowania
  • Ponowne tworzenie obrazu zestawu skalowania
  • Aktualizowanie obrazu systemu operacyjnego dla zestawu skalowania