Aangepaste beleidsregels voor inschalen gebruiken met Azure Virtual Machine Scale Sets

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 inschalen van beleid biedt gebruikers een manier om de volgorde te configureren waarin virtuele machines worden ingeschaald, door middel van drie inschaalconfiguraties:

  1. Standaard
  2. Nieuwste VM
  3. Oudste VM

Belangrijk

Flexibele indeling voor Virtual Machine Scale Sets biedt momenteel geen ondersteuning voor inschaalbeleid.

Standaardbeleid voor inschalen

Virtuele-machineschaalset past dit beleid standaard toe om te bepalen welke exemplaren worden ingeschaald. Met het standaardbeleid worden VM's geselecteerd voor inschalen in de volgende volgorde:

  1. Virtuele machines verdelen over beschikbaarheidszones (als de schaalset is geïmplementeerd in een zonegebonden configuratie)
  2. Virtuele machines verdelen over foutdomeinen (best effort)
  3. Virtuele machine met de hoogste exemplaar-id verwijderen

Gebruikers hoeven geen inschaalbeleid op te geven als ze alleen willen dat de standaardvolgorde wordt gevolgd.

Houd er rekening mee dat het verdelen over beschikbaarheidszones of foutdomeinen geen exemplaren verplaatst tussen beschikbaarheidszones of foutdomeinen. De verdeling wordt bereikt door virtuele machines te verwijderen uit de onevenwichtige beschikbaarheidszones of foutdomeinen totdat de distributie van virtuele machines in evenwicht is.

NewestVM scale-in policy

Met dit beleid wordt de nieuwste virtuele machine in de schaalset verwijderd, na het verdelen van VM's over beschikbaarheidszones (voor zonegebonden implementaties). Voor het inschakelen van dit beleid is een configuratiewijziging vereist in het model van de virtuele-machineschaalset.

Oudste VM-inschaalbeleid

Met dit beleid wordt de oudste gemaakte virtuele machine in de schaalset verwijderd, na het verdelen van VM's over beschikbaarheidszones (voor zonegebonden implementaties). Voor het inschakelen van dit beleid is een configuratiewijziging vereist in het model van de virtuele-machineschaalset.

Inschaalbeleid inschakelen

Een inschaalbeleid wordt 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-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 voor het model van de virtuele-machineschaalset:

Azure Portal

Met de volgende stappen wordt het inschaalbeleid gedefinieerd bij het maken van een nieuwe schaalset.

  1. Ga naar Virtual Machine Scale Sets.
  2. Selecteer + Toevoegen om een nieuwe schaalset te maken.
  3. Ga naar het tabblad Schalen .
  4. Zoek de sectie Beleid voor inschalen .
  5. Selecteer een inschaalbeleid in de vervolgkeuzelijst.
  6. 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 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 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 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> \
  --orchestration-mode flexible \
  --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 VM in een schaalset met zoneverdeling verwijdert wanneer een inschaling wordt geactiveerd (via automatisch schalen of handmatig verwijderen).

Wanneer een virtuele-machineschaalset niet zone-gebalanceerd is, verwijdert de schaalset eerst VM's in de onevenwichtige zone(s). Binnen de onevenwichtige zones gebruikt de schaalset het hierboven 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 VM in de schaalset voor verwijdering.

Hetzelfde proces is van toepassing wanneer u 'NieuwsteVM' gebruikt in het bovenstaande inschaalbeleid.

Beleid voor inschalen wijzigen

Het wijzigen van het inschaalbeleid volgt hetzelfde proces als het toepassen van het inschaalbeleid. Als u bijvoorbeeld in het bovenstaande voorbeeld 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.

  1. Selecteer in een bestaande virtuele-machineschaalset Schalen in het menu aan de linkerkant.
  2. Selecteer het tabblad Beleid voor inschalen .
  3. Selecteer een inschaalbeleid in de vervolgkeuzelijst.
  4. Selecteer Opslaan wanneer u klaar bent.

API gebruiken

Voer een PUT uit op de virtuele-machineschaalset met 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

Het inschaalbeleid van een bestaande schaalset bijwerken:

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 uw sjabloon onder 'eigenschappen' de sjabloon zoals hieronder en implementeer opnieuw:

"scaleInPolicy": {  
      "rules": ["NewestVM"]  
} 

Hetzelfde proces is van toepassing als u besluit 'NewestVM' te wijzigen in 'Default' of 'OldestVM'

Exemplaarbeveiliging en inschaalbeleid

Virtual Machine Scale Sets twee typen exemplaarbeveiliging bieden:

  1. Beveiligen tegen inschalen
  2. 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 overwogen om in te schalen, 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 inschaalbeleid dat is ingeschakeld voor de schaalset.

Gebruiksvoorbeelden

De onderstaande voorbeelden laten zien hoe een virtuele-machineschaalset VM's selecteert die moeten worden verwijderd wanneer een inschaalgebeurtenis wordt geactiveerd. Virtuele machines met de hoogste exemplaar-id's worden verondersteld de nieuwste VM's in de schaalset te zijn en de VM's met de kleinste exemplaar-id's worden verondersteld de oudste VM's in de schaalset te zijn.

Oudste VM-inschaalbeleid

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 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, ook al heeft zone 3 de oudste VM. 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, ook al heeft zone 1 de oudste VM. 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-zonegebonden Virtual Machine Scale Sets selecteert het beleid de oudste VM in de schaalset die moet worden verwijderd. Elke 'beveiligde' VM wordt overgeslagen voor verwijdering.

NewestVM scale-in policy

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 VM 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 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, 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 VM in de schaalset is.

Voor niet-zonegebonden Virtual Machine Scale Sets selecteert het beleid de nieuwste VM in de schaalset voor verwijdering. Elke 'beveiligde' VM wordt overgeslagen voor verwijdering.

Problemen oplossen

  1. Kan scaleInPolicy niet inschakelen Als u de fout 'BadRequest' krijgt met het foutbericht 'Kan lid 'scaleInPolicy' niet vinden op object van het type 'properties', controleert u de API-versie die wordt gebruikt voor de virtuele-machineschaalset. API-versie 2019-03-01 of hoger is vereist voor deze functie.

  2. Verkeerde selectie van VM's voor inschalen Raadpleeg de bovenstaande voorbeelden. Als uw virtuele-machineschaalset een zonegebonden implementatie is, wordt het inschaalbeleid eerst toegepast op de onevenwichtige zones en vervolgens op de schaalset zodra deze zone-gebalanceerd is. Als de volgorde van inschalen niet consistent is met de bovenstaande voorbeelden, dient u een query in bij het team van de virtuele-machineschaalset voor probleemoplossing.

Volgende stappen

Meer informatie over het implementeren van uw toepassing op Virtual Machine Scale Sets.