Aangepast inschaalbeleid gebruiken met virtuele-machineschaalsets van Azure
Van toepassing op: ✔️ Linux-VM's ✔️ Windows VM's ✔️ Uniforme schaalsets
Een implementatie van een virtuele-machineschaalset kan worden uitgebreid of inschalen op basis van een matrix van metrische gegevens, waaronder door het platform en de gebruiker gedefinieerde aangepaste metrische gegevens. Bij uitschalen worden nieuwe virtuele machines gemaakt op basis van het schaalsetmodel, maar een inschaaling is van invloed op het uitvoeren van virtuele machines die mogelijk verschillende configuraties en/of functies hebben naarmate de workload van de schaalset zich verder ontwikkelt.
De functie voor inschalen van beleid biedt gebruikers een manier om de volgorde te configureren waarin virtuele machines worden inschalen, via drie inschaalconfiguraties:
- Standaard
- Nieuwste VM
- Oudste VM
Standaardbeleid voor inschalen
Standaard past de virtuele-machineschaalset dit beleid toe om te bepalen in welke instantie(en) wordt/worden geschaald. Met het standaardbeleid worden VM's in de volgende volgorde geselecteerd voor inschalen:
- Virtuele machines over beschikbaarheidszones verdelen (als de schaalset is geïmplementeerd in zonelijke configuratie)
- Virtuele machines over foutdomeinen in balans brengen (best effort)
- Virtuele machine met de hoogste exemplaar-id verwijderen
Gebruikers hoeven geen inschaalbeleid op te geven als ze alleen de standaardvolgorde willen volgen.
Houd er rekening mee dat het verdelen over beschikbaarheidszones of foutdomeinen 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 distributie van virtuele machines evenwichtig wordt.
Inschaalbeleid voor nieuwsteVM
Met dit beleid wordt de nieuwste gemaakte virtuele machine in de schaalset verwijderd, nadat de VM's zijn verdeeld over beschikbaarheidszones (voor zonelijke implementaties). Voor het inschakelen van dit beleid is een configuratiewijziging van het virtuele-machineschaalsetmodel vereist.
OudsteVM-inschaalbeleid
Met dit beleid wordt de oudste gemaakte virtuele machine in de schaalset verwijderd, na het verdelen van VM's over beschikbaarheidszones (voor zonelijke implementaties). Voor het inschakelen van dit beleid is een configuratiewijziging van het virtuele-machineschaalsetmodel vereist.
Inschaalbeleid inschakelen
Er wordt een inschaalbeleid gedefinieerd in het model van de virtuele-machineschaalset. Zoals vermeld in de bovenstaande secties, is een inschaalbeleidsdefinitie nodig wanneer u de beleidsregels 'NieuwsteVM' en 'OudsteVM' gebruikt. Virtuele-machineschaalsets maken automatisch gebruik van het inschaalbeleid Standaard als er geen inschaalbeleidsdefinitie is gevonden in het schaalsetmodel.
Een inschaalbeleid kan op de volgende manieren worden gedefinieerd voor het virtuele-machineschaalsetmodel:
Azure Portal
Met de volgende stappen definieert u het inschaalbeleid 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 van beleid.
- Selecteer een inschaalbeleid in de vervolgkeuzekeuze.
- 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
Maak een resourcegroep en maak vervolgens een nieuwe schaalset met inschaalbeleid ingesteld als OudsteVM.
New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "<VMSS location>"
New-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Location "<VMSS location>" `
-VMScaleSetName "myScaleSet" `
-ScaleInPolicy “OldestVM”
Azure CLI 2.0
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 inschaalbeleid als OudsteVM.
az group create --name <myResourceGroup> --location <VMSSLocation>
az vmss create \
--resource-group <myResourceGroup> \
--name <myVMScaleSet> \
--image UbuntuLTS \
--admin-username <azureuser> \
--generate-ssh-keys \
--scale-in-policy OldestVM
Sjabloon gebruiken
Voeg in uw sjabloon onder 'eigenschappen' het volgende toe:
"scaleInPolicy": {
"rules": ["OldestVM"]
}
De bovenstaande blokken geven aan dat de virtuele-machineschaalset de oudste virtuele machine in een schaalset met zone-evenwichtig niveau verwijdert wanneer een inschaalactie wordt geactiveerd (via automatisch schalen of handmatig verwijderen).
Wanneer een virtuele-machineschaalset niet in balans is met de zone, verwijdert de schaalset eerst VM's in de niet-gebalanceerde zone(s). Binnen de zones met onevenwichtige verschillen gebruikt de schaalset het hierboven opgegeven inschaalbeleid om te bepalen in welke VM moet worden geschaald. In dit geval selecteert de schaalset binnen een zone met onevenwichtigheid de oudste VM in die zone die moet worden verwijderd.
Voor een niet-zonale virtuele-machineschaalset selecteert het beleid de oudste VM in de schaalset voor verwijdering.
Hetzelfde proces is van toepassing wanneer u 'NieuwsteVM' gebruikt in het bovenstaande inschaalbeleid.
Inschaalbeleid wijzigen
Het wijzigen van het inschaalbeleid volgt hetzelfde proces als het toepassen van het inschaalbeleid. Als u in het bovenstaande voorbeeld 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 de Azure Portal.
- In een bestaande virtuele-machineschaalset selecteert u Schalen in het menu aan de linkerkant.
- Selecteer het tabblad Beleid voor inschalen.
- Selecteer een inschaalbeleid in de vervolgkeuzekeuze.
- Selecteer Opslaan wanneer 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 inschaalbeleid van een bestaande schaalset bij:
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet" `
-ScaleInPolicy “OldestVM”
Azure CLI 2.0
Hier volgt een voorbeeld voor het bijwerken van het inschaalbeleid van een bestaande schaalset:
az vmss update \
--resource-group <myResourceGroup> \
--name <myVMScaleSet> \
--scale-in-policy OldestVM
Sjabloon gebruiken
Wijzig in de sjabloon onder 'eigenschappen' de sjabloon zoals hieronder en herdeploy:
"scaleInPolicy": {
"rules": ["NewestVM"]
}
Hetzelfde proces is van toepassing als u besluit 'NieuwsteVM' te wijzigen in 'Standaard' of 'OudsteVM'
Instantiebeveiliging en beleid voor 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 inschaalbeleid. Als VM_0 (oudste VM in de schaalset) bijvoorbeeld is beveiligd tegen inschalen en voor de schaalset het inschaalbeleid 'OldestVM' is ingeschakeld, wordt VM_0 niet in aanmerking genomen voor inschalen, ook al is dit de oudste VM in de schaalset.
Een beveiligde virtuele machine kan op elk moment handmatig door de gebruiker worden verwijderd, ongeacht het inschaalbeleid dat is ingeschakeld op de schaalset.
Gebruiksvoorbeelden
De onderstaande voorbeelden laten zien hoe een virtuele-machineschaalset VM's selecteert die moeten worden verwijderd wanneer een inschaalgebeurtenis wordt geactiveerd. Van virtuele machines met de hoogste instantie-ID's wordt aangenomen dat ze de nieuwste VM's in de schaalset zijn en wordt ervan uitgegaan dat de VM's met de kleinste exemplaar-ID's de oudste VM's in de schaalset zijn.
OudsteVM-inschaalbeleid
| Gebeurtenis | Instantie-ID's in Zone1 | Instantie-ID's in Zone2 | Instantie-ID's in Zone3 | Selectie van 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 Zone 3 de oudste VM. Verwijder VM2 uit Zone 2 omdat dit de oudste VM in die zone is. |
| Inschalen | 3, 4, 5, 10 | 6, 9, 11 | 1, 7, 8 | Kies Zone 1 hoewel Zone 3 de oudste VM heeft. Verwijder VM3 uit Zone 1 omdat dit de oudste VM 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 VM 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 VM in de twee zones is. |
| Inschalen | 5, 10 | 6, 9, 11 | 7, 8 | Kies Zone 2 hoewel Zone 1 de oudste VM heeft. Verwijder VM6 in Zone 1 omdat dit de oudste VM in die zone is. |
| Inschalen | 5, 10 | 9, 11 | 7, 8 | Zones zijn evenwichtig. Verwijder VM5 in Zone 1 omdat dit de oudste VM in de schaalset is. |
Voor niet-zonale virtuele-machineschaalsets selecteert het beleid de oudste VM in de schaalset voor verwijdering. Elke 'beveiligde' VM wordt overgeslagen voor verwijdering.
Inschaalbeleid voor NewestVM
| Gebeurtenis | Exemplaar-ID's in Zone1 | Exemplaar-ID's in Zone2 | Exemplaar-ID's in Zone3 | Selectie van 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 VM in de twee zones is. |
| Inschalen | 3, 4, 5, 10 | 2, 6, 9 | 1, 7, 8 | Kies Zone 1 omdat het 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 VM 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 ondanks dat Zone 3 de nieuwste VM heeft. 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 VM in de schaalset is. |
Voor niet-zonale virtuele-machineschaalsets selecteert het beleid de nieuwste VM in de schaalset voor verwijdering. Elke 'beveiligde' VM wordt overgeslagen voor verwijdering.
Problemen oplossen
Kan scaleInPolicy niet inschakelen Als er een foutmelding 'BadRequest' wordt weergegeven met het foutbericht 'Kan geen lid 'scaleInPolicy' vinden op object van het type 'eigenschappen', controleert u de API-versie die wordt gebruikt voor de virtuele-machineschaalset. API-versie 2019-03-01 of hoger is vereist voor deze functie.
Verkeerde selectie van VM's voor inschalen Raadpleeg de bovenstaande voorbeelden. Als uw virtuele-machineschaalset een zonelijke implementatie is, wordt het inschaalbeleid eerst toegepast op de uit balans gebrachte zones en vervolgens in de schaalset zodra het zone-evenwichtig is. Als de volgorde van inschalen niet consistent is met de bovenstaande voorbeelden, moet u een query bij het team voor virtuele-machineschaalsets maken om problemen op te lossen.
Volgende stappen
Meer informatie over het implementeren van uw toepassing op virtuele-machineschaalsets.