Zelfstudie: Een virtuele-machineschaalset wijzigen met behulp van 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 voor afzonderlijke VM-exemplaren in een schaalset, net zoals u een zelfstandige VIRTUELE machine zou doen. 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 toevoegen aan uw schaalset
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 up-to-date brengen met het meest recente schaalsetmodel
Notitie
Upgrademodi worden momenteel niet ondersteund op virtuele-machineschaalsets met de flexibele indelingsmodus.
Schaalsets hebben een upgradebeleid waarmee wordt bepaald hoe VM's up-to-date worden gebracht met het nieuwste 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 wordt de update in batches met een optionele onderbrekingstijd tussen batches uitgerold door de schaalset.
- 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
Notitie
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 indelingsmodus:
- Flexibele indelingsmodus:
{scale-set-name}_{8-char-guid}
- Uniforme indelingsmodus:
{scale-set-name}_{instance-id}
In de gevallen waarin u een installatiekopie van een specifiek exemplaar wilt herstellen, gebruikt u Set-AzVmss en geeft u de naam van het exemplaar op.
Set-AzVmssVM -ResourceGroupName myResourceGroup -VMScaleSetName myScaleSet -InstanceId myScaleSet_Instance1 -Reimage
Als u alle exemplaren in een schaalset opnieuw wilt instellen, geeft u de naam van de schaalset op en laat u alle exemplaren van de 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 kunt ook de installatiekopieën wijzigen die door uw schaalset worden gebruikt. U kunt bijvoorbeeld een aangepaste installatiekopieën bijwerken of wijzigen die door uw schaalset worden 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 Azure-platforminstallatiekopieën gebruikt, kunt u de installatiekopie bijwerken door de imageReference te wijzigen (zie de REST API-documentatie voor meer informatie).
Notitie
Met platforminstallatiekopieën is het gebruikelijk om 'nieuwste' op te geven voor de referentieversie van de installatiekopieën. 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 voor automatische besturingssysteemupgrades voor meer informatie.
Als u aangepaste installatiekopieën gebruikt, kunt u de installatiekopie bijwerken door de imageReference-id 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 up-to-date brengen met het meest recente schaalsetmodel
- Een schaalset opnieuw instellen
- De installatiekopieën van het besturingssysteem voor uw schaalset bijwerken