Bästa metoder för autoskalning

Azure Monitor autoskalning gäller endast för Virtual Machine Scale Sets, Cloud Services, App Service - Web Appsoch API Management tjänster.

Begrepp för autoskalning

  • En resurs kan bara ha en autoskalningsinställning
  • En autoskalningsinställning kan ha en eller flera profiler och varje profil kan ha en eller flera regler för automatisk skalning.
  • En autoskalningsinställning skalar instanserna vågrätt, vilket är ut genom att öka antalet instanser och in genom att minska antalet instanser. En autoskalningsinställning har ett max-, minimi- och standardvärde för instanser.
  • Ett autoskalningsjobb läser alltid det associerade måttet som ska skalas av och kontrollerar om det har passerat det konfigurerade tröskelvärdet för utskalning eller inskalning. Du kan visa en lista över mått som autoskalning kan skalas med Azure Monitor vanliga mått för automatisk skalning.
  • Alla tröskelvärden beräknas på instansnivå. Till exempel "skala ut med en instans när den genomsnittliga CPU-80 % när instansantalet är 2", innebär utskalning när den genomsnittliga processorn för alla instanser är större än > 80 %.
  • Alla fel med autoskalning loggas i aktivitetsloggen. Du kan sedan konfigurera en aktivitetsloggavisering så att du kan meddelas via e-post, SMS eller webhooks när det uppstår ett autoskalningsfel.
  • På samma sätt publiceras alla lyckade skalningsåtgärder i aktivitetsloggen. Du kan sedan konfigurera en aktivitetsloggavisering så att du kan meddelas via e-post, SMS eller webhooks när det finns en lyckad autoskalningsåtgärd. Du kan också konfigurera e-post- eller webhook-meddelanden för att få meddelanden om lyckade skalningsåtgärder via fliken Meddelanden i autoskalningsinställningen.

Metodtips för automatisk skalning

Använd följande metodtips när du använder autoskalning.

Se till att de högsta och lägsta värdena är olika och har lämplig marginal mellan sig

Om du har en inställning som har minst 2, max = 2 och det aktuella instansantalet är 2, kan ingen skalningsåtgärd utföras. Ha en lämplig marginal mellan högsta och lägsta antal instanser, som ingår. Autoskalning skalar alltid mellan dessa gränser.

Manuell skalning återställs vid autoskalning med min och max

Om du uppdaterar instansantalet manuellt till ett värde över eller under det högsta, skalar autoskalningsmotorn automatiskt tillbaka till det lägsta (om det är lägre) eller det högsta (om det är högre). Du kan till exempel ange intervallet mellan 3 och 6. Om du har en instans som körs skalar autoskalningsmotorn till tre instanser vid nästa körning. På samma sätt, om du manuellt ställer in skalan på åtta instanser skalar automatisk skalning tillbaka till sex instanser vid nästa körning. Manuell skalning är tillfällig såvida du inte även återställer reglerna för automatisk skalning.

Använd alltid en utskalnings- och inskalningsregelkombination som ökar och minskar

Om du bara använder en del av kombinationen kommer autoskalning endast att vidta åtgärder i en enda riktning (skala ut eller in) tills den når det högsta eller lägsta antalet instanser enligt definitionen i profilen. Detta är inte optimalt, helst vill du att resursen ska skalas upp vid tidpunkter med hög användning för att säkerställa tillgängligheten. På samma sätt vill du att resursen ska skalas ned vid perioder med låg användning, så att du kan uppnå kostnadsbesparingar.

Välj lämplig statistik för ditt diagnostikmått

För diagnostikmått kan du välja mellan Genomsnitt,Minimum, Maximum och Totalsom mått att skala efter. Den vanligaste statistiken är Genomsnitt.

Välj tröskelvärden noga för alla måttyper

Vi rekommenderar att du noggrant väljer olika tröskelvärden för utskalning och inskalning baserat på praktiska situationer.

Vi rekommenderar inte autoskalningsinställningar som exemplen nedan med samma eller liknande tröskelvärden för ut- och under förhållanden:

  • Öka antalet instanser med 1 när antalet trådar > = 600
  • Minska antalet instanser med 1 när antalet trådar < = 600

Nu ska vi titta på ett exempel på vad som kan leda till ett beteende som kan verka förvirrande. Tänk på följande sekvens.

  1. Anta att det finns två instanser att börja med och sedan växer det genomsnittliga antalet trådar per instans till 625.
  2. Autoskalning skalar ut genom att lägga till en tredje instans.
  3. Anta sedan att det genomsnittliga antalet trådar över instansen sjunker till 575.
  4. Innan du skalar ned försöker autoskalning uppskatta det slutliga tillståndet om det skalas in. Till exempel 575 x 3 (antal aktuella instanser) = 1 725 /2 (sista antalet instanser när de skalas ned) = 862,5 trådar. Det innebär att autoskalning måste skalas ut omedelbart igen även efter att den har skalats in, om det genomsnittliga antalet trådar förblir detsamma eller till och med bara faller en liten mängd. Men om den skalas upp igen skulle hela processen upprepas, vilket ledde till en oändlig loop.
  5. För att undvika den här situationen (kallas "flikning") skalas autoskalning inte ned alls. I stället hoppar den över och omvärderar villkoret igen nästa gång tjänstens jobb körs. Det flikande tillståndet kan förvirra många eftersom autoskalning inte verkar fungera när det genomsnittliga antalet trådar var 575.

Uppskattning under en inskalning är avsedd att undvika "klaffande" situationer där inskalning och utskalning kontinuerligt går fram och tillbaka. Tänk på det här beteendet när du väljer samma tröskelvärden för utskalning och inskalning.

Vi rekommenderar att du väljer en lämplig marginal mellan utskalning och tröskelvärden. Tänk dig till exempel följande bättre regelkombination.

  • Öka antalet instanser med 1 när CPU% > = 80
  • Minska antalet instanser med 1 när CPU% < = 60

I det här fallet

  1. Anta att det finns 2 instanser att börja med.
  2. Om den genomsnittliga CPU-procenten mellan instanser går till 80 skalar autoskalning ut och lägger till en tredje instans.
  3. Anta nu att CPU% med tiden sjunker till 60.
  4. Autoskalningsregeln för inskalning beräknar det slutliga tillståndet om det skulle skalas in. Till exempel 60 x 3 (antal aktuella instanser) = 180 /2 (slutligt antal instanser när de skalats ned) = 90. Autoskalning skalas därför inte in eftersom den måste skalas ut igen omedelbart. I stället hoppar den över nedskalningen.
  5. Nästa gång autoskalningen kontrolleras fortsätter processorn att minska till 50. Den beräknar igen – 50 x 3 instanser = 150 /2 instanser = 75, vilket är under tröskelvärdet för utskalning på 80, så det skalas in till 2 instanser.

Anteckning

Om autoskalningsmotorn upptäcker att det kan ske en klaff vid skalning till målantalet instanser försöker den även skala till ett annat antal instanser mellan det aktuella antalet och antalet mål. Om det inte sker inom det här intervallet fortsätter autoskalningen skalningsåtgärden med det nya målet.

Att tänka på vid skalning av tröskelvärden för särskilda mått

För särskilda mått som Storage eller Service Bus för kölängd är tröskelvärdet det genomsnittliga antalet meddelanden som är tillgängliga per aktuellt antal instanser. Välj tröskelvärdet noggrant för det här måttet.

Vi illustrerar det med ett exempel för att se till att du förstår beteendet bättre.

  • Öka antalet instanser med 1 när du Storage antal kömeddelanden > = 50
  • Minska antalet instanser med 1 när du Storage antal kömeddelanden < = 10

Tänk på följande sekvens:

  1. Det finns två instanser av lagringsköer.
  2. Meddelanden fortsätter att komma och när du granskar lagringskön blir det totala antalet 50. Du kan anta att autoskalning ska starta en utskalningsåtgärd. Observera dock att det fortfarande är 50/2 = 25 meddelanden per instans. Därför sker ingen utskalning. För att den första utskalning ska ske ska det totala antalet meddelanden i lagringskön vara 100.
  3. Anta sedan att det totala antalet meddelanden når 100.
  4. En tredje lagringsköinstans läggs till på grund av en utskalningsåtgärd. Nästa utskalningsåtgärd sker inte förrän det totala antalet meddelanden i kön når 150 eftersom 150/3 = 50.
  5. Nu blir antalet meddelanden i kön mindre. Med tre instanser inträffar den första inskalningsåtgärden när det totala antalet meddelanden i alla köer blir 30 eftersom 30/3 = 10 meddelanden per instans, vilket är tröskelvärdet för inskalning.

Att tänka på vid skalning när flera profiler har konfigurerats för autoskalning

I en autoskalningsinställning kan du välja en standardprofil, som alltid tillämpas utan beroende av schema eller tid, eller så kan du välja en återkommande profil eller en profil för en fast period med ett datum- och tidsintervall.

När autoskalningstjänsten bearbetar dem kontrolleras de alltid i följande ordning:

  1. Fast datumprofil
  2. Återkommande profil
  3. Standardprofil ("Alltid")

Om ett profilvillkor uppfylls kontrollerar inte autoskalning nästa profilvillkor under det. Autoskalning bearbetar bara en profil i taget. Det innebär att om du även vill inkludera ett bearbetningsvillkor från en profil på lägre nivå måste du även inkludera dessa regler i den aktuella profilen.

Låt oss ta en genomgång med hjälp av ett exempel:

Bilden nedan visar en autoskalningsinställning med en standardprofil för minsta instanser = 2 och maximalt antal instanser = 10. I det här exemplet konfigureras regler för att skala ut när antalet meddelanden i kön är större än 10 och skala in när antalet meddelanden i kön är mindre än tre. Så nu kan resursen skalas mellan två och tio instanser.

Dessutom finns det en återkommande profil inställd på måndag. Den har angetts för minsta instanser = 3 och maximalt antal instanser = 10. Det innebär att första gången autoskalningen söker efter det här villkoret på måndag. Om instansantalet är två skalar det till det nya minst tre. Så länge autoskalning fortsätter att hitta det här profilvillkoret som matchas (måndag) bearbetar det endast de CPU-baserade utskalnings- och inskalningsregler som konfigurerats för den här profilen. Just nu kontrollerar den inte kölängden. Men om du även vill att villkoret för kölängd ska kontrolleras bör du även inkludera dessa regler från standardprofilen i din måndagsprofil.

När autoskalning växlar tillbaka till standardprofilen kontrollerar den också om de lägsta och högsta villkoren är uppfyllda. Om antalet instanser vid den tidpunkten är 12, skalas det in till 10, vilket är det högsta som tillåts för standardprofilen.

autoscale settings

Att tänka på vid skalning när flera regler har konfigurerats i en profil

Det finns fall där du kan behöva ange flera regler i en profil. Följande regler för autoskalning används av autoskalningsmotorn när flera regler har angetts.

Vid utskalningkörs autoskalning om någon regel uppfylls. Vid inskalningkräver autoskalning att alla regler uppfylls.

Anta att du har följande fyra regler för automatisk skalning:

  • Om CPU < är 30 % skalar du in med 1
  • Om minnet < är 50 % skalar du in med 1
  • Om CPU > är 75 % skalar du ut med 1
  • Om minnet > är 75 % skalar du ut med 1

Sedan inträffar följande:

  • Om CPU är 76 % och minnet är 50 % skalar vi ut.
  • Om CPU är 50 % och minnet är 76 % skalar vi ut.

Å andra sidan, om CPU är 25 % och minnet är 51 % autoskalning inte skalas in. För att kunna skala in måste CPU vara 29 % och minnet 49 %.

Välj alltid ett säkert standardantal instanser

Standardantalet för instanser är viktigt eftersom autoskalning skalar tjänsten till det antalet när mått inte är tillgängliga. Välj därför ett standardantal instanser som är säkert för dina arbetsbelastningar.

Konfigurera aviseringar för autoskalning

Autoskalning publiceras i aktivitetsloggen om något av följande villkor inträffar:

  • Autoskalning utfärdar en skalningsåtgärd.
  • Autoskalningstjänsten slutför en skalningsåtgärd.
  • Autoskalningstjänsten kan inte vidta någon skalningsåtgärd.
  • Mått är inte tillgängliga för autoskalningstjänsten för att fatta ett skalningsbeslut.
  • Mått är tillgängliga (återställning) igen för att fatta ett beslut om skalning.
  • Autoskalning identifierar flikning och avbryter skalningsförsöket. I den här situationen visas Flapping loggtypen . Om du ser det här bör du fundera på om tröskelvärdena är för smala.
  • Autoskalning identifierar flikning men kan fortfarande skalas. I den här situationen visas FlappingOccurred loggtypen . Om du ser det här har autoskalningsmotorn försökt skala (t.ex. från 4 instanser till 2), men har fastställt att detta skulle orsaka att viftas. I stället har autoskalningsmotorn skalats till ett annat antal instanser (t.ex. med 3 instanser i stället för 2), vilket inte längre orsakar att vifta, så den har skalats till det här antalet instanser.

Du kan också använda en aktivitetsloggavisering för att övervaka autoskalningsmotorns hälsotillstånd. Här följer exempel på hur du skapar en aktivitetsloggavisering för att övervaka alla autoskalningsmotoråtgärder i din prenumeration eller för att skapa en aktivitetsloggavisering för att övervaka alla misslyckade in- ochutskalningsåtgärder för din prenumeration.

Förutom att använda aktivitetsloggaviseringar kan du också konfigurera e-post- eller webhook-meddelanden för att få meddelanden om lyckade skalningsåtgärder via fliken Meddelanden i inställningen för autoskalning.

Nästa steg