Aangepaste schaalbeleidsregels gebruiken met Virtual Machine Scale Sets van Azure
Een implementatie van een virtuele-machineschaalset kan worden uitgeschaald of ingeschaald op basis van een matrix met metrische gegevens, waaronder platform- en door de gebruiker gedefinieerde aangepaste metrische gegevens. Hoewel een scale-out nieuwe virtuele machines maakt op basis van het schaalsetmodel, is een inschaalbewerking van invloed op het uitvoeren van virtuele machines die mogelijk verschillende configuraties en/of functies hebben naarmate de workload van de schaalset zich ontwikkelt.
De functie voor het inschalen van beleid biedt gebruikers een manier om de volgorde te configureren waarin virtuele machines worden geschaald, door middel van drie inschaalconfiguraties:
- Standaardinstelling
- Nieuwste VM
- Oudste VM
Standaardbeleid voor inschalen
Flexibele indeling
Virtuele-machineschaalset past dit beleid standaard toe om te bepalen in welke instantie(s) wordt ingeschaald. Met het standaardbeleid worden VM's geselecteerd voor inschalen in de volgende volgorde:
- Virtuele machines verdelen over beschikbaarheidszones (als de schaalset is geïmplementeerd in zonegebonden configuratie)
- Virtuele machines verdelen over foutdomeinen (best effort)
- Virtuele machine verwijderen met de hoogste exemplaar-id
Gebruikers hoeven geen beleid voor inschalen op te geven als ze alleen willen dat de standaardvolgorde wordt gevolgd.
Uniforme indeling
Virtuele-machineschaalset past dit beleid standaard toe om te bepalen in welke instantie(s) wordt ingeschaald. Met het standaardbeleid worden VM's geselecteerd voor inschalen in de volgende volgorde:
- Virtuele machines verdelen over beschikbaarheidszones (als de schaalset is geïmplementeerd in zonegebonden configuratie)
- Virtuele machines verdelen over foutdomeinen (best effort)
- Virtuele machine verwijderen met de hoogste exemplaar-id
Gebruikers hoeven geen beleid voor inschalen op te geven als ze alleen willen dat de standaardvolgorde wordt gevolgd.
Door te verdelen over beschikbaarheidszones of foutdomeinen worden exemplaren niet verplaatst tussen beschikbaarheidszones of foutdomeinen. De taakverdeling wordt bereikt door het verwijderen van virtuele machines uit de niet-verdeelde beschikbaarheidszones of foutdomeinen totdat de verdeling van virtuele machines wordt verdeeld.
NieuwsteVM-schaalbeleid
Met dit beleid wordt de nieuwste of laatst gemaakte virtuele machine in de schaalset verwijderd, na het verdelen van VM's in beschikbaarheidszones (voor zonegebonden implementaties). Voor het inschakelen van dit beleid is een configuratiewijziging vereist voor het virtuele-machineschaalsetmodel.
OudsteVM-schaalbeleid
Met dit beleid wordt de oudste virtuele machine in de schaalset verwijderd, na het verdelen van VM's in beschikbaarheidszones (voor zonegebonden implementaties). Voor het inschakelen van dit beleid is een configuratiewijziging vereist voor het virtuele-machineschaalsetmodel.
Inschalen van beleid inschakelen
Er wordt een inschaalbeleid gedefinieerd in het model virtuele-machineschaalset. Zoals vermeld in de vorige secties, is een inschaalbeleidsdefinitie nodig bij het gebruik van het beleid 'NieuwsteVM' en 'OudsteVM'. Virtuele-machineschaalset gebruikt automatisch het standaardbeleid voor inschalen als er geen inschaalbeleidsdefinitie is gevonden in het schaalsetmodel.
Een inschaalbeleid kan op de volgende manieren worden gedefinieerd in het virtuele-machineschaalsetmodel:
Azure Portal
Met de volgende stappen definieert u het beleid voor inschalen bij het maken van een nieuwe schaalset.
- Ga naar Virtuele-machineschaalsets.
- Selecteer + Toevoegen om een nieuwe schaalset te maken.
- Ga naar het tabblad Schalen .
- Zoek de sectie Inschalen.
- Selecteer een inschalend beleid in de vervolgkeuzelijst.
- Wanneer u klaar bent met het maken van de nieuwe schaalset, selecteert u de knop Beoordelen en maken .
API gebruiken
Voer een PUT uit op de virtuele-machineschaalset met behulp van API 2019-03-01:
PUT
https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<myRG>/providers/Microsoft.Compute/virtualMachineScaleSets/<myVMSS>?api-version=2019-03-01
{
"location": "<VMSS location>",
"properties": {
"scaleInPolicy": {
"rules": ["OldestVM"]
}
}
}
Azure PowerShell
Belangrijk
Vanaf november 2023 worden VM-schaalsets die zijn gemaakt met PowerShell en Azure CLI standaard ingesteld op de flexibele indelingsmodus als er geen indelingsmodus is opgegeven. Voor meer informatie over deze wijziging en welke acties u moet ondernemen, gaat u naar Belangrijke wijziging voor VMSS PowerShell/CLI-klanten - Microsoft Community Hub
Maak een resourcegroep en maak vervolgens een nieuwe schaalset met een inschaalbeleidsset als OudsteVM.
New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "<VMSS location>"
New-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Location "<VMSS location>" `
-VMScaleSetName "myScaleSet" `
-OrchestrationMode "Flexible" `
-ScaleInPolicy “OldestVM”
Azure-CLI
Belangrijk
Vanaf november 2023 worden VM-schaalsets die zijn gemaakt met PowerShell en Azure CLI standaard ingesteld op de flexibele indelingsmodus als er geen indelingsmodus is opgegeven. Voor meer informatie over deze wijziging en welke acties u moet ondernemen, gaat u naar Belangrijke wijziging voor VMSS PowerShell/CLI-klanten - Microsoft Community Hub
In het volgende voorbeeld wordt een inschaalbeleid toegevoegd tijdens het maken van een nieuwe schaalset. Maak eerst een resourcegroep en maak vervolgens een nieuwe schaalset met scale-in-beleid als OudsteVM.
az group create --name <myResourceGroup> --location <VMSSLocation>
az vmss create \
--resource-group <myResourceGroup> \
--name <myVMScaleSet> \
--orchestration-mode flexible \
--image Ubuntu2204 \
--admin-username <azureuser> \
--generate-ssh-keys \
--scale-in-policy OldestVM
Sjabloon gebruiken
Voeg in uw sjabloon onder Eigenschappen de scaleInPolicy
eigenschap toe:
"scaleInPolicy": {
"rules": ["OldestVM"]
}
Deze codeblokken geven aan dat de virtuele-machineschaalset de oudste virtuele machine in een schaalset met zoneverdeling verwijdert wanneer een inschaling wordt geactiveerd (via automatisch schalen of handmatig verwijderen).
Wanneer een virtuele-machineschaalset niet in evenwicht is, verwijdert de schaalset eerst VM's in de onevenwichtige zone(en). Binnen de onevenwichtige zones maakt de schaalset gebruik van het opgegeven inschaalbeleid om te bepalen in welke VM moet worden geschaald. In dit geval selecteert de schaalset in een onevenwichtige zone de oudste VM in die zone die moet worden verwijderd.
Voor niet-zonegebonden virtuele-machineschaalset selecteert het beleid de oudste virtuele machine in de schaalset voor verwijdering.
Hetzelfde proces is van toepassing wanneer u het beleid 'NieuwsteVM' gebruikt.
Beleid voor inschalen wijzigen
Het aanpassen van het inschaalbeleid volgt hetzelfde proces als het toepassen van het inschaalbeleid. Als u bijvoorbeeld het beleid wilt wijzigen van 'OudsteVM' in 'NieuwsteVM', kunt u dit doen door:
Azure Portal
U kunt het inschaalbeleid van een bestaande schaalset wijzigen via Azure Portal.
- Selecteer Schalen in een bestaande virtuele-machineschaalset in het menu aan de linkerkant.
- Selecteer het tabblad Inschalen.
- Selecteer een inschalend beleid in de vervolgkeuzelijst.
- Selecteer Opslaan als u klaar bent.
API gebruiken
Voer een PUT uit op de virtuele-machineschaalset met behulp van API 2019-03-01:
PUT
https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<myRG>/providers/Microsoft.Compute/virtualMachineScaleSets/<myVMSS>?api-version=2019-03-01
{
"location": "<VMSS location>",
"properties": {
"scaleInPolicy": {
"rules": ["NewestVM"]
}
}
}
Azure PowerShell
Werk het beleid voor inschalen van een bestaande schaalset bij:
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet" `
-ScaleInPolicy “OldestVM”
Azure-CLI
Hier volgt een voorbeeld voor het bijwerken van het beleid voor inschalen van een bestaande schaalset:
az vmss update \
--resource-group <myResourceGroup> \
--name <myVMScaleSet> \
--scale-in-policy OldestVM
Sjabloon gebruiken
Wijzig in uw sjabloon onder Eigenschappen de sjabloon zoals hieronder en implementeer opnieuw:
"scaleInPolicy": {
"rules": ["NewestVM"]
}
Hetzelfde proces is van toepassing als u besluit om 'NieuwsteVM' te wijzigen in 'Standaard' of 'OudsteVM'
Beleid voor exemplaarbeveiliging en inschalen
Virtuele-machineschaalsets bieden twee typen exemplaarbeveiliging:
- Beveiligen tegen inschalen
- Beveiligen tegen schaalsetacties
Een beveiligde virtuele machine wordt niet verwijderd via een inschaalactie, ongeacht het toegepaste beleid voor inschalen. Als VM_0 (oudste VM in de schaalset) bijvoorbeeld is beveiligd tegen inschalen en het beleid 'OudsteVM' is ingeschakeld voor de schaalset, wordt VM_0 niet overwogen om te worden ingeschaald, ook al is dit de oudste VM in de schaalset.
Een beveiligde virtuele machine kan op elk gewenst moment handmatig door de gebruiker worden verwijderd, ongeacht het beleid voor inschalen dat is ingeschakeld op de schaalset.
Voorbeelden van gebruik
In de onderstaande voorbeelden ziet u hoe een virtuele-machineschaalset vm's selecteert die moeten worden verwijderd wanneer een inschaalgebeurtenis wordt geactiveerd. Voor virtuele machines met de hoogste exemplaar-id's wordt ervan uitgegaan dat dit de nieuwste VM's in de schaalset zijn en dat de VM's met de kleinste exemplaar-id's de oudste VM's in de schaalset zijn.
OudsteVM-schaalbeleid
Gebeurtenis | Exemplaar-id's in Zone1 | Exemplaar-id's in Zone2 | Exemplaar-id's in Zone3 | Selectie inschalen |
---|---|---|---|---|
Eerste | 3, 4, 5, 10 | 2, 6, 9, 11 | 1, 7, 8 | |
Inschalen | 3, 4, 5, 10 | 2, 6, 9, 11 | 1, 7, 8 | Kies tussen zone 1 en 2, ook al heeft zone 3 de oudste VIRTUELE machine. Verwijder VM2 uit zone 2 omdat dit de oudste VIRTUELE machine in die zone is. |
Inschalen | 3, 4, 5, 10 | 6, 9, 11 | 1, 7, 8 | Kies Zone 1, ook al heeft zone 3 de oudste VM. Verwijder VM3 uit zone 1 omdat dit de oudste VIRTUELE machine in die zone is. |
Inschalen | 4, 5, 10 | 6, 9, 11 | 1, 7, 8 | Zones zijn evenwichtig. Verwijder VM1 in zone 3 omdat dit de oudste VIRTUELE machine in de schaalset is. |
Inschalen | 4, 5, 10 | 6, 9, 11 | 7, 8 | Kies tussen zone 1 en zone 2. Verwijder VM4 in zone 1 omdat dit de oudste VIRTUELE machine in de twee zones is. |
Inschalen | 5, 10 | 6, 9, 11 | 7, 8 | Kies Zone 2, ook al heeft zone 1 de oudste VIRTUELE machine. Verwijder VM6 in zone 1 omdat dit de oudste VIRTUELE machine in die zone is. |
Inschalen | 5, 10 | 9, 11 | 7, 8 | Zones zijn evenwichtig. Verwijder VM5 in zone 1 omdat dit de oudste VIRTUELE machine in de schaalset is. |
Voor niet-zonegebonden virtuele-machineschaalsets selecteert het beleid de oudste VIRTUELE machine in de schaalset voor verwijdering. Elke beveiligde VM wordt overgeslagen voor verwijdering.
NieuwsteVM-schaalbeleid
Gebeurtenis | Exemplaar-id's in Zone1 | Exemplaar-id's in Zone2 | Exemplaar-id's in Zone3 | Selectie inschalen |
---|---|---|---|---|
Eerste | 3, 4, 5, 10 | 2, 6, 9, 11 | 1, 7, 8 | |
Inschalen | 3, 4, 5, 10 | 2, 6, 9, 11 | 1, 7, 8 | Kies tussen zone 1 en 2. Verwijder VM11 uit zone 2 omdat dit de nieuwste VIRTUELE machine in de twee zones is. |
Inschalen | 3, 4, 5, 10 | 2, 6, 9 | 1, 7, 8 | Kies Zone 1 omdat deze meer VM's heeft dan de andere twee zones. Verwijder VM10 uit zone 1 omdat dit de nieuwste VM in die zone is. |
Inschalen | 3, 4, 5 | 2, 6, 9 | 1, 7, 8 | Zones zijn evenwichtig. Verwijder VM9 in zone 2 omdat dit de nieuwste VIRTUELE machine in de schaalset is. |
Inschalen | 3, 4, 5 | 2, 6 | 1, 7, 8 | Kies tussen zone 1 en zone 3. Verwijder VM8 in zone 3 omdat dit de nieuwste VM in die zone is. |
Inschalen | 3, 4, 5 | 2, 6 | 1, 7 | Kies Zone 1, ook al heeft Zone 3 de nieuwste VM. Verwijder VM5 in zone 1 omdat dit de nieuwste VM in die zone is. |
Inschalen | 3, 4 | 2, 6 | 1, 7 | Zones zijn evenwichtig. Verwijder VM7 in zone 3 omdat dit de nieuwste VIRTUELE machine in de schaalset is. |
Voor niet-zonegebonden virtuele-machineschaalsets selecteert het beleid de nieuwste VM in de schaalset voor verwijdering. Elke beveiligde VM wordt overgeslagen voor verwijdering.
Problemen oplossen
Fout bij het inschakelen van scaleInPolicy Als u een 'BadRequest'-fout krijgt met een foutbericht met de mededeling 'Kan lid 'scaleInPolicy' niet vinden voor het object van het type 'properties', controleert u de API-versie die wordt gebruikt voor virtuele-machineschaalset. API-versie 2019-03-01 of hoger is vereist voor deze functie.
Verkeerde selectie van VM's voor inschalen Raadpleeg de voorbeelden in dit document. Als uw virtuele-machineschaalset een zonegebonden implementatie is, wordt het beleid voor inschalen eerst toegepast op de onevenwichtige zones en vervolgens op de schaalset zodra de zone is verdeeld. Als de volgorde van inschalen niet consistent is met de voorbeelden die hier worden beschreven, voert u een query uit met het virtuele-machineschaalsetteam voor probleemoplossing.
Volgende stappen
Meer informatie over het implementeren van uw toepassing op virtuele-machineschaalsets.