Använda anpassade inskalningsprinciper med skalningsuppsättningar för virtuella Azure-datorer
Gäller för: ✔️ Virtuella Linux-datorer ✔️ Windows:heavy_check_mark: Uniform Scale Sets
En distribution av en VM-skalningsuppsättning kan skalas ut eller skalas in baserat på en matris med mått, inklusive plattformsbaserade och användardefinierade anpassade mått. En utskalning skapar nya virtuella datorer baserat på skalningsuppsättningsmodellen, men en inskalning påverkar virtuella datorer som körs och som kan ha olika konfigurationer och/eller funktioner när skalningsuppsättningsarbetsbelastningen utvecklas.
Funktionen för inskalningsprincipen ger användarna ett sätt att konfigurera i vilken ordning virtuella datorer skalas in, med hjälp av tre inskalningskonfigurationer:
- Standardvärde
- NewestVM
- OldestVM
Standardprincip för inskalning
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:
- Balansera virtuella datorer mellan tillgänglighetszoner (om skalningsuppsättningen distribueras i zonindelade konfigurationer)
- Balansera virtuella datorer mellan feldomäner (bästa möjliga resultat)
- 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.
Observera att balansering mellan tillgänglighetszoner eller feldomäner inte flyttar 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 distributionen av virtuella datorer balanseras.
NewestVM-inskalningsprincip
Den här principen tar bort den senaste skapade virtuella datorn i skalningsuppsättningen när du har utjämnat virtuella datorer mellan tillgänglighetszoner (för zonindemässiga distributioner). Aktivering av den här principen kräver en konfigurationsändring av VM-skalningsuppsättningsmodellen.
Inskalningsprincip för OldestVM
Den här principen tar bort den äldsta skapade virtuella datorn i skalningsuppsättningen när du har balanserat virtuella datorer mellan tillgänglighetszoner (för zonindemässiga distributioner). Aktivering av den här principen kräver en konfigurationsändring av VM-skalningsuppsättningsmodellen.
Aktivera inskalningsprincip
En inskalningsprincip definieras i VM-skalningsuppsättningsmodellen. Som anges i avsnitten ovan krävs en principdefinition för inskalning när du använder principerna "NewestVM" och "OldestVM". Skalningsuppsättningen för virtuella datorer använder automatiskt inskalningsprincipen "Standard" om det inte finns någon principdefinition för inskalning i skalningsuppsättningsmodellen.
En inskalningsprincip kan definieras för VM-skalningsuppsättningsmodellen på följande sätt:
Azure Portal
Följande steg definierar inskalningsprincipen när du skapar en ny skalningsuppsättning.
- Gå till VM-skalningsuppsättningar.
- Välj + Lägg till för att skapa en ny skalningsuppsättning.
- Gå till fliken Skalning.
- Leta upp avsnittet Inskalningsprincip.
- Välj en inskalningsprincip i listrutan.
- 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
Skapa en resursgrupp och skapa sedan en ny skalningsuppsättning med inskalningsprincipuppsättningen OldestVM.
New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "<VMSS location>"
New-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Location "<VMSS location>" `
-VMScaleSetName "myScaleSet" `
-ScaleInPolicy “OldestVM”
Azure CLI 2.0
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 en inskalningsprincip som OldestVM.
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
Använda mall
Lägg till följande under "egenskaper" i mallen:
"scaleInPolicy": {
"rules": ["OldestVM"]
}
Blocken ovan 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 inskalningsprincip som anges ovan för att avgöra vilken virtuell dator som ska skalas in. I det här fallet väljer skalningsuppsättningen den äldsta virtuella datorn i zonen som ska tas bort i en obalanserad zon.
För vm-skalningsuppsättning som inte är zonindead väljer principen den äldsta virtuella datorn i skalningsuppsättningen för borttagning.
Samma process gäller när du använder "NewestVM" i ovanstående inskalningsprincip.
Ändra inskalningsprinciper
När du ändrar inskalningsprincipen följer samma process som när du tillämpar inskalningsprincipen. Om du till exempel vill ändra principen från "OldestVM" till "NewestVM" i exemplet ovan kan du göra det genom att:
Azure Portal
Du kan ändra inskalningsprincipen för en befintlig skalningsuppsättning via Azure Portal.
- I en befintlig VM-skalningsuppsättning väljer du Skalning på menyn till vänster.
- Välj fliken Inskalningsprincip.
- Välj en inskalningsprincip i listrutan.
- 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 2.0
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
I mallen, under "properties" (egenskaper) ä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
Skalningsuppsättningar för virtuella datorer har två typer av instansskydd:
- Skydda mot inskalning
- Skydda mot skalningsuppsättningsåtgärder
En skyddad virtuell dator tas inte bort via 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 tas bort manuellt av användaren när som helst, oavsett vilken inskalningsprincip som aktiverats på skalningsuppsättningen.
Användningsexempel
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:erna antas vara de senaste virtuella datorerna i skalningsuppsättningen och de virtuella datorerna med de minsta instans-ID:erna antas vara de äldsta virtuella datorerna i skalningsuppsättningen.
Inskalningsprincip för OldestVM
| Händelse | Instans-ID:er i Zone1 | Instans-ID:er i Zone2 | Instans-ID:er i Zon3 | Val av inskalning |
|---|---|---|---|---|
| Inledande | 3, 4, 5, 10 | 2, 6, 9, 11 | 1, 7, 8 | |
| Skala in | 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. |
| Skala in | 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. |
| Skala in | 4, 5, 10 | 6, 9, 11 | 1, 7, 8 | Zoner balanseras. Ta bort VM1 Zon 3 eftersom det är den äldsta virtuella datorn i skalningsuppsättningen. |
| Skala in | 4, 5, 10 | 6, 9, 11 | 7, 8 | Välj mellan Zon 1 och Zon 2. Ta bort VM4 Zon 1 eftersom det är den äldsta virtuella datorn i de två zonerna. |
| Skala in | 5, 10 | 6, 9, 11 | 7, 8 | Välj Zon 2 även om Zon 1 har den äldsta virtuella datorn. Ta bort VM6 Zon 1 eftersom det är den äldsta virtuella datorn i den zonen. |
| Skala in | 5, 10 | 9, 11 | 7, 8 | Zoner balanseras. Ta bort VM5 Zon 1 eftersom det är den äldsta virtuella datorn i skalningsuppsättningen. |
För icke-zonindeade VM-skalningsuppsättningar 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:er i Zone1 | Instans-ID:er i Zone2 | Instans-ID:er i Zone3 | Val av inskalning |
|---|---|---|---|---|
| Inledande | 3, 4, 5, 10 | 2, 6, 9, 11 | 1, 7, 8 | |
| Skala in | 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. |
| Skala in | 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 Zon 1 eftersom det är den senaste virtuella datorn i den zonen. |
| Skala in | 3, 4, 5 | 2, 6, 9 | 1, 7, 8 | Zoner balanseras. Ta bort VM9 Zon 2 eftersom det är den senaste virtuella datorn i skalningsuppsättningen. |
| Skala in | 3, 4, 5 | 2, 6 | 1, 7, 8 | Välj mellan Zon 1 och Zon 3. Ta bort VM8 Zon 3 eftersom det är den senaste virtuella datorn i den zonen. |
| Skala in | 3, 4, 5 | 2, 6 | 1, 7 | Välj Zon 1 även om Zon 3 har den senaste virtuella datorn. Ta bort VM5 Zon 1 eftersom det är den senaste virtuella datorn i den zonen. |
| Skala in | 3, 4 | 2, 6 | 1, 7 | Zoner balanseras. Ta bort VM7 Zon 3 eftersom det är den senaste virtuella datorn i skalningsuppsättningen. |
För icke-zonindeade VM-skalningsuppsättningar väljer principen den senaste virtuella datorn i skalningsuppsättningen för borttagning. Alla "skyddade" virtuella datorer hoppas över för borttagning.
Felsöka
Det gick inte att aktivera scaleInPolicy Om du får felet "BadRequest" med felmeddelandet "Det gick inte att hitta medlemmen "scaleInPolicy" för objektet av typen "properties" kontrollerar du den API-version som används för VM-skalningsuppsättningen. API-version 2019-03-01 eller senare krävs för den här funktionen.
Fel val av virtuella datorer för inskalning Se exemplen ovan. Om din VM-skalningsuppsättning är en zonindelade distribution tillämpas inskalningsprincipen först på de obalanserade zonerna och sedan över skalningsuppsättningen när den är zonbalanserad. Om inskalningen inte stämmer överens med exemplen ovan kan du skapa 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.