Dela via


Använda anpassade inskalningsprinciper med Azure VM-skalningsuppsättningar

En vm-skalningsuppsättningsdistribution kan skalas ut eller skalas in baserat på en matris med mått, inklusive plattforms- och användardefinierade anpassade mått. Vid en utskalning skapas nya virtuella datorer utifrån skalningsuppsättningsmodellen. Vid en inskalning påverkas de virtuella datorer som redan körs, och dessa kan ha olika konfigurationer och/eller funktioner beroende på hur skalningsuppsättningens arbetsbelastning utvecklas.

Funktionen för inskalningsprinciper ger användarna ett sätt att konfigurera i vilken ordning de virtuella datorerna skalars in genom tre inskalningskonfigurationer:

  1. Standardvärde
  2. Nyaste virtuella dator
  3. Äldsta virtuella dator

Standardprincip för inskalning

Flexibel orkestrering

Som standard tillämpar VM-skalningsuppsättningen den här principen för att avgöra vilka instanser som ska skalas in. Med standardprincipen väljs virtuella datorer för inskalning i följande ordning:

  1. Balansera virtuella datorer mellan tillgänglighetszoner (om skalningsuppsättningen distribueras i zonindelad konfiguration)
  2. Balansera virtuella datorer mellan feldomäner (bästa arbete)
  3. Ta bort virtuell dator med det högsta instans-ID:t

Användarna behöver inte ange någon inskalningsprincip om de bara vill att standardordningen ska följas.

Enhetlig orkestrering

Som standard tillämpar VM-skalningsuppsättningen den här principen för att avgöra vilka instanser som ska skalas in. Med standardprincipen väljs virtuella datorer för inskalning i följande ordning:

  1. Balansera virtuella datorer mellan tillgänglighetszoner (om skalningsuppsättningen distribueras i zonindelad konfiguration)
  2. Balansera virtuella datorer mellan feldomäner (bästa arbete)
  3. Ta bort virtuell dator med det högsta instans-ID:t

Användarna behöver inte ange någon inskalningsprincip om de bara vill att standardordningen ska följas.

Utjämning mellan tillgänglighetszoner eller feldomäner flyttar inte instanser mellan tillgänglighetszoner eller feldomäner. Utjämningen uppnås genom borttagning av virtuella datorer från de obalanserade tillgänglighetszonerna eller feldomänerna tills fördelningen av virtuella datorer balanseras.

NewestVM-inskalningsprincip

Den här principen tar bort den nyaste eller senast skapade virtuella datorn i skalningsuppsättningen efter att virtuella datorer har balanserats mellan tillgänglighetszoner (för zonindelade distributioner). För att aktivera den här principen krävs en konfigurationsändring av vm-skalningsuppsättningsmodellen.

OldestVM-inskalningsprincip

Den här principen tar bort den äldsta skapade virtuella datorn i skalningsuppsättningen efter att virtuella datorer har balanserats mellan tillgänglighetszoner (för zonindelade distributioner). För att aktivera den här principen krävs en konfigurationsändring av vm-skalningsuppsättningsmodellen.

Aktivera inskalningsprincip

En inskalningsprincip definieras i vm-skalningsuppsättningsmodellen. Som nämnts i föregående avsnitt behövs en principdefinition för inskalning när du använder principerna "NewestVM" och "OldestVM". Vm-skalningsuppsättningen använder automatiskt skalningsprincipen "Standard" om det inte finns någon principdefinition för skalningsuppsättningen som finns på skalningsuppsättningsmodellen.

En inskalningsprincip kan definieras på vm-skalningsuppsättningsmodellen på följande sätt:

Azure Portal

Följande steg definierar inskalningsprincipen när du skapar en ny skalningsuppsättning.

  1. Gå till Vm-skalningsuppsättningar.
  2. Välj + Lägg till för att skapa en ny skalningsuppsättning.
  3. Gå till fliken Skalning .
  4. Leta upp avsnittet Skalningsprincip.
  5. Välj en inskalningsprincip i listrutan.
  6. När du är klar med att skapa den nya skalningsuppsättningen väljer du knappen Granska + skapa .

Med API:et

Kör en PUT på VM-skalningsuppsättningen med 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

Viktigt!

Från och med november 2023 kommer VM-skalningsuppsättningar som skapats med PowerShell och Azure CLI som standard att vara flexibla orkestreringsläge om inget orkestreringsläge har angetts. Mer information om den här ändringen och vilka åtgärder du bör vidta finns i Icke-bakåtkompatibla ändringar för VMSS PowerShell/CLI-kunder – Microsoft Community Hub

Skapa en resursgrupp och skapa sedan en ny skalningsuppsättning med inskalningsprincip som OldestVM.

New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "<VMSS location>"
New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "<VMSS location>" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -ScaleInPolicy “OldestVM”

Azure CLI

Viktigt!

Från och med november 2023 kommer VM-skalningsuppsättningar som skapats med PowerShell och Azure CLI som standard att vara flexibla orkestreringsläge om inget orkestreringsläge har angetts. Mer information om den här ändringen och vilka åtgärder du bör vidta finns i Icke-bakåtkompatibla ändringar för VMSS PowerShell/CLI-kunder – Microsoft Community Hub

I följande exempel läggs en inskalningsprincip till när en ny skalningsuppsättning skapas. Skapa först en resursgrupp och skapa sedan en ny skalningsuppsättning med inskalningsprincip som OldestVM.

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

Använda mall

Lägg till egenskapen under "egenskaper" i mallen scaleInPolicy :

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

Dessa kodblock anger att vm-skalningsuppsättningen tar bort den äldsta virtuella datorn i en zonbalanserad skalningsuppsättning när en inskalning utlöses (via autoskalning eller manuell borttagning).

När en vm-skalningsuppsättning inte är zonbalanserad tar skalningsuppsättningen först bort virtuella datorer i de obalanserade zonerna. I de obalanserade zonerna använder skalningsuppsättningen den angivna inskalningsprincipen för att avgöra vilken virtuell dator som ska skalas in. I det här fallet inom en obalanserad zon väljer skalningsuppsättningen den äldsta virtuella datorn i den zonen som ska tas bort.

För skalningsuppsättningar för virtuella datorer som inte är zonindelade väljer principen den äldsta virtuella datorn i skalningsuppsättningen för borttagning.

Samma process gäller när du använder inskalningsprincipen "NewestVM".

Ändra inskalningsprinciper

Att ändra inskalningsprincipen följer samma process som att tillämpa inskalningsprincipen. Om du till exempel vill ändra principen från "OldestVM" till "NewestVM" kan du göra det genom att:

Azure Portal

Du kan ändra inskalningsprincipen för en befintlig skalningsuppsättning via Azure-portalen.

  1. I en befintlig VM-skalningsuppsättning väljer du Skalning på menyn till vänster.
  2. Välj fliken Inskalningsprincip .
  3. Välj en inskalningsprincip i listrutan.
  4. När du är klar väljer du Spara.

Med API:et

Kör en PUT på VM-skalningsuppsättningen med 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

Uppdatera inskalningsprincipen för en befintlig skalningsuppsättning:

Update-AzVmss `
 -ResourceGroupName "myResourceGroup" `
 -VMScaleSetName "myScaleSet" `
 -ScaleInPolicy “OldestVM”

Azure CLI

Följande är ett exempel på hur du uppdaterar inskalningsprincipen för en befintlig skalningsuppsättning:

az vmss update \  
  --resource-group <myResourceGroup> \
  --name <myVMScaleSet> \
  --scale-in-policy OldestVM

Använda mall

Under "egenskaper" i mallen ändrar du mallen enligt nedan och distribuerar om:

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

Samma process gäller om du bestämmer dig för att ändra "NewestVM" till "Default" eller "OldestVM"

Instansskydd och inskalningsprincip

Vm-skalningsuppsättningar ger två typer av instansskydd:

  1. Skydda mot inskalning
  2. Skydda mot skalningsuppsättningsåtgärder

En skyddad virtuell dator tas inte bort genom en inskalningsåtgärd, oavsett vilken inskalningsprincip som tillämpas. Om till exempel VM_0 (den äldsta virtuella datorn i skalningsuppsättningen) skyddas från inskalning och skalningsuppsättningen har skalningsprincipen "OldestVM" aktiverad, kommer VM_0 inte att övervägas för att skalas in, även om det är den äldsta virtuella datorn i skalningsuppsättningen.

En skyddad virtuell dator kan när som helst tas bort manuellt av användaren, oavsett vilken inskalningsprincip som är aktiverad i skalningsuppsättningen.

Exempel på användning

Exemplen nedan visar hur en VM-skalningsuppsättning väljer virtuella datorer som ska tas bort när en inskalningshändelse utlöses. Virtuella datorer med de högsta instans-ID:n antas vara de nyaste virtuella datorerna i skalningsuppsättningen och de virtuella datorerna med de minsta instans-ID:n antas vara de äldsta virtuella datorerna i skalningsuppsättningen.

OldestVM-inskalningsprincip

Händelse Instans-ID:t i Zon1 Instans-ID:t i Zone2 Instans-ID:t i Zon3 Skalningsmarkering
Initial 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8
Inskalning 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8 Välj mellan zon 1 och 2, även om zon 3 har den äldsta virtuella datorn. Ta bort VM2 från zon 2 eftersom det är den äldsta virtuella datorn i den zonen.
Inskalning 3, 4, 5, 10 6, 9, 11 1, 7, 8 Välj Zon 1 även om zon 3 har den äldsta virtuella datorn. Ta bort VM3 från zon 1 eftersom det är den äldsta virtuella datorn i den zonen.
Inskalning 4, 5, 10 6, 9, 11 1, 7, 8 Zoner är balanserade. Ta bort VM1 i zon 3 eftersom det är den äldsta virtuella datorn i skalningsuppsättningen.
Inskalning 4, 5, 10 6, 9, 11 7, 8 Välj mellan Zon 1 och Zon 2. Ta bort VM4 i zon 1 eftersom det är den äldsta virtuella datorn i de två zonerna.
Inskalning 5, 10 6, 9, 11 7, 8 Välj Zon 2 även om zon 1 har den äldsta virtuella datorn. Ta bort VM6 i zon 1 eftersom det är den äldsta virtuella datorn i den zonen.
Inskalning 5, 10 9, 11 7, 8 Zoner är balanserade. Ta bort VM5 i zon 1 eftersom det är den äldsta virtuella datorn i skalningsuppsättningen.

För skalningsuppsättningar för virtuella datorer som inte är zonindelade väljer principen den äldsta virtuella datorn i skalningsuppsättningen för borttagning. Alla "skyddade" virtuella datorer hoppas över för borttagning.

NewestVM-inskalningsprincip

Händelse Instans-ID:t i Zon1 Instans-ID:t i Zone2 Instans-ID:t i Zon3 Skalningsmarkering
Initial 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8
Inskalning 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8 Välj mellan zon 1 och 2. Ta bort VM11 från zon 2 eftersom det är den senaste virtuella datorn i de två zonerna.
Inskalning 3, 4, 5, 10 2, 6, 9 1, 7, 8 Välj Zon 1 eftersom den har fler virtuella datorer än de andra två zonerna. Ta bort VM10 från zon 1 eftersom det är den senaste virtuella datorn i den zonen.
Inskalning 3, 4, 5 2, 6, 9 1, 7, 8 Zoner är balanserade. Ta bort VM9 i zon 2 eftersom det är den nyaste virtuella datorn i skalningsuppsättningen.
Inskalning 3, 4, 5 2, 6 1, 7, 8 Välj mellan zon 1 och zon 3. Ta bort VM8 i zon 3 eftersom det är den nyaste virtuella datorn i den zonen.
Inskalning 3, 4, 5 2, 6 1, 7 Välj Zon 1 även om zon 3 har den senaste virtuella datorn. Ta bort VM5 i zon 1 eftersom det är den nyaste virtuella datorn i den zonen.
Inskalning 3, 4 2, 6 1, 7 Zoner är balanserade. Ta bort VM7 i zon 3 eftersom det är den nyaste virtuella datorn i skalningsuppsättningen.

För skalningsuppsättningar för virtuella datorer som inte är zonindelade väljer principen den nyaste virtuella datorn i skalningsuppsättningen för borttagning. Alla "skyddade" virtuella datorer hoppas över för borttagning.

Felsöka

  1. Det gick inte att aktivera scaleInPolicy Om du får ett "BadRequest"-fel med ett felmeddelande om att "Det gick inte att hitta medlemmen 'scaleInPolicy' på objektet av typen "egenskaper" kontrollerar du API-versionen som används för Vm-skalningsuppsättning. API-version 2019-03-01 eller senare krävs för den här funktionen.

  2. Fel val av virtuella datorer för inskalning Se exemplen i det här dokumentet. Om vm-skalningsuppsättningen är en zonindelad distribution tillämpas inskalningsprincipen först på de obalanserade zonerna och sedan över skalningsuppsättningen när den är zonbalanserad. Om ordningen för inskalning inte överensstämmer med exemplen som beskrivs här skapar du en fråga med vm-skalningsuppsättningsteamet för felsökning.

Nästa steg

Lär dig hur du distribuerar ditt program på VM-skalningsuppsättningar.