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 z 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łączenie 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 możesz dodać nową maszynę wirtualną do zestawu skalowania, ale chcesz użyć różnych opcji konfiguracji niż wtedy w modelu zestawu skalowania. Maszyny wirtualne można dodać do zestawu skalowania podczas tworzenia przy użyciu polecenia Get-AzVmss 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
Aktualizowanie maszyn wirtualnych przy użyciu najnowszego modelu zestawu skalowania
Uwaga
Tryby uaktualniania nie są obecnie obsługiwane w zestawach skalowania maszyn wirtualnych przy użyciu trybu elastycznej aranżacji.
Zestawy skalowania mają "zasady uaktualniania", które określają, w jaki sposób maszyny wirtualne są wprowadzane 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 po zaktualizowaniu 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 uaktualnienia ręczne, możesz wyzwolić uaktualnienie ręczne 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 Uaktualnianie aplikacji usługi Service Fabric.
Ponowne tworzenie obrazu zestawu skalowania
Zestawy skalowania maszyn wirtualnych wygenerują 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 trzeba odtworzyć określone wystąpienie, 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, po prostu określ nazwę zestawu skalowania i pomiń 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 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 odwołania do obrazu nie jest częścią listy, więc można bezpośrednio modyfikować 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, więc możesz 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 można znaleźć w dokumentacji 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 w miarę wydawania nowych wersji obrazów. Osobna 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 można znaleźć w dokumentacji 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
- Aktualizowanie maszyn wirtualnych przy użyciu najnowszego modelu zestawu skalowania
- Ponowne tworzenie obrazu zestawu skalowania
- Aktualizowanie obrazu systemu operacyjnego dla zestawu skalowania