Procedure consigliate per la scalabilità automaticaBest practices for Autoscale

Questo articolo illustra le procedure consigliate per applicare la scalabilità automatica in Azure.This article teaches best practices to autoscale in Azure. Il ridimensionamento automatico di Monitoraggio di Azure si applica solo a set di scalabilità di macchine virtuali, Servizi cloud e app Web del servizio app.Azure Monitor autoscale applies only to Virtual Machine Scale Sets, Cloud Services, and App Service - Web Apps. Altri servizi Azure usano metodi di ridimensionamento diversi.Other Azure services use different scaling methods.

Concetti di scalabilità automaticaAutoscale concepts

  • Una risorsa può avere una sola impostazione di scalabilità automatica.A resource can have only one autoscale setting
  • Un'impostazione di scalabilità automatica può avere uno o più profili e ogni profilo può avere una o più regole di scalabilità automatica.An autoscale setting can have one or more profiles and each profile can have one or more autoscale rules.
  • Un'impostazione di scalabilità automatica scala le istanze orizzontalmente, ovvero aumenta e riduce il numero delle istanze.An autoscale setting scales instances horizontally, which is out by increasing the instances and in by decreasing the number of instances. Un'impostazione di scalabilità automatica ha un valore massimo, uno minimo e uno predefinito di istanze.An autoscale setting has a maximum, minimum, and default value of instances.
  • Un processo di scalabilità automatica legge sempre la metrica associata alla scala controllando se ha superato la soglia configurata per l'aumento o la riduzione del numero di istanze.An autoscale job always reads the associated metric to scale by, checking if it has crossed the configured threshold for scale-out or scale-in. Per un elenco delle metriche in base alle quali può essere applicata la scalabilità automatica, vedere Metriche comuni per la scalabilità automatica di Monitoraggio di Azure.You can view a list of metrics that autoscale can scale by at Azure Monitor autoscaling common metrics.
  • Tutte le soglie vengono calcolate a livello di istanza.All thresholds are calculated at an instance level. Ad esempio, "aumentare il numero di istanze di 1 quando la media CPU > 80% quando il conteggio delle istanze è 2", significa aumentare il numero di istanze quando la media CPU in tutte le istanze è superiore all'80%.For example, "scale out by 1 instance when average CPU > 80% when instance count is 2", means scale-out when the average CPU across all instances is greater than 80%.
  • Tutti gli errori di scalabilità automatica vengono registrati nel log attività.All autoscale failures are logged to the Activity Log. È quindi possibile configurare un avviso di log attività in modo da ricevere una notifica tramite posta elettronica, SMS, webhook e così via, ogni volta che si verifica un errore di scalabilità automatica.You can then configure an activity log alert so that you can be notified via email, SMS, webhook, etc. whenever there is an autoscale failure.
  • Analogamente, tutte le azioni di scalabilità riuscite vengono registrate nel log attività.Similarly, all successful scale actions are posted to the Activity Log. È quindi possibile configurare un avviso di log attività in modo da ricevere una notifica tramite posta elettronica, SMS, webhook e così via per ogni azione di scalabilità automatica riuscita.You can then configure an activity log alert so that you can be notified via email, SMS, webhooks, etc. whenever there is a successful autoscale action. È inoltre possibile configurare le notifiche tramite posta elettronica o webhook per ricevere una notifica delle azioni di scalabilità riuscite tramite la scheda delle notifiche dell'impostazione di scalabilità automatica.You can also configure email or webhook notifications to get notified for successful scale actions via the notifications tab on the autoscale setting.

Procedure consigliate per la scalabilità automaticaAutoscale best practices

Usare le procedure consigliate seguenti quando si usa la scalabilità automatica.Use the following best practices as you use autoscale.

Assicurarsi che i valori massimo e minimo siano diversi e che tra di essi ci sia un margine adeguatoEnsure the maximum and minimum values are different and have an adequate margin between them

Se il valore minimo di un'impostazione è 2 e il valore massimo è 2 e il conteggio di istanze correnti è 2, non può verificarsi alcuna azione di scalabilità.If you have a setting that has minimum=2, maximum=2 and the current instance count is 2, no scale action can occur. Mantenere un margine adeguato tra i conteggi massimo e minimo delle istanze, che sono valori inclusivi.Keep an adequate margin between the maximum and minimum instance counts, which are inclusive. La scalabilità automatica viene sempre applicata entro questi limiti.Autoscale always scales between these limits.

La scalabilità manuale viene reimpostata dai valori minimo e massimo della scalabilità automaticaManual scaling is reset by autoscale min and max

Se si aggiorna manualmente il conteggio delle istanze impostandolo su un valore al di sopra o al di sotto di quello massimo, il motore di scalabilità automatica utilizza automaticamente il valore minimo (se al di sotto) o il valore massimo (se al di sopra).If you manually update the instance count to a value above or below the maximum, the autoscale engine automatically scales back to the minimum (if below) or the maximum (if above). Ad esempio, se l'utente imposta l'intervallo tra i valori e 3 e 6,For example, you set the range between 3 and 6. in presenza di un'istanza in esecuzione, il motore di scalabilità automatica esegue il ridimensionamento a 3 istanze alla successiva esecuzione.If you have one running instance, the autoscale engine scales to 3 instances on its next run. Analogamente, se si imposta manualmente la scala su 8 istanze, nell'esecuzione successiva la scalabilità automatica rieseguirà il ridimensionamento a 6 istanze.Likewise, if you manually set the scale to 8 instances, on the next run autoscale will scale it back to 6 instances on its next run. La scalabilità manuale è molto temporanea, a meno che non si reimpostino anche le regole di scalabilità automatica.Manual scaling is very temporary unless you reset the autoscale rules as well.

Usare sempre una combinazione di regole di aumento e di riduzione del numero di istanzeAlways use a scale-out and scale-in rule combination that performs an increase and decrease

Se si usa solo una parte della combinazione, la scalabilità automatica viene applicata solo per aumentare o ridurre il numero di istanze fino a raggiungere il valore massimo o minimo.If you use only one part of the combination, autoscale scale-in that single out, or in, until the maximum, or minimum, is reached.

Non passare dal portale di Azure al portale di Azure classico e viceversa quando si gestisce la scalabilità automaticaDo not switch between the Azure portal and the Azure classic portal when managing Autoscale

Per i servizi cloud e i servizi app (App Web), usare il portale di Azure (portal.azure.com) per creare e gestire le impostazioni di scalabilità automatica.For Cloud Services and App Services (Web Apps), use the Azure portal (portal.azure.com) to create and manage autoscale settings. Per i set di scalabilità di macchine virtuali, usare PowerShell, l'interfaccia della riga di comando o l'API REST per creare e gestire l'impostazione di scalabilità automatica.For Virtual Machine Scale Sets use PowerShell, CLI or REST API to create and manage autoscale setting. Non passare dal portale di Azure classico (manage.windowsazure.com) al portale di Azure (portal.azure.com) e viceversa quando si gestiscono le configurazioni di scalabilità automatica.Do not switch between the Azure classic portal (manage.windowsazure.com) and the Azure portal (portal.azure.com) when managing autoscale configurations. Il portale di Azure classico e il back-end sottostante presentano delle limitazioni.The Azure classic portal and its underlying backend has limitations. Passare al portale di Azure per gestire la scalabilità automatica con un'interfaccia utente grafica.Move to the Azure portal to manage autoscale using a graphical user interface. Le opzioni prevedono l'uso di PowerShell, dell'interfaccia della riga di comando o dell'API REST (tramite Esplora risorse di Azure) per la scalabilità automatica.The options are to use the autoscale PowerShell, CLI or REST API (via Azure Resource Explorer).

Scegliere la statistica appropriata per la metrica di diagnosticaChoose the appropriate statistic for your diagnostics metric

Per le metriche di diagnostica, è possibile scegliere tra Medio, Minimo, Massimo e Totale come metrica per il ridimensionamento.For diagnostics metrics, you can choose among Average, Minimum, Maximum and Total as a metric to scale by. La statistica più comune è Medio.The most common statistic is Average.

Scegliere attentamente le soglie per tutti i tipi di metricheChoose the thresholds carefully for all metric types

È consigliabile scegliere con attenzione soglie diverse per aumentare e ridurre il numero di istanze a seconda delle situazioni concrete.We recommend carefully choosing different thresholds for scale-out and scale-in based on practical situations.

Non sono consigliate impostazioni di scalabilità automatica come quelle degli esempi seguenti con valori di soglia uguali o molto simili per le condizioni di aumento o di riduzione del numero di istanze:We do not recommend autoscale settings like the examples below with the same or very similar threshold values for out and in conditions:

  • Aumentare le istanze di 1 quando il conteggio dei thread è <= 600Increase instances by 1 count when Thread Count <= 600
  • Ridurre le istanze di 1 quando il conteggio dei thread è >= 600Decrease instances by 1 count when Thread Count >= 600

Verrà ora esaminato un esempio di come si può arrivare a un comportamento che può sembrare poco chiaro.Let's look at an example of what can lead to a behavior that may seem confusing. Considerare la sequenza indicata di seguito.Consider the following sequence.

  1. Si supponga di iniziare con 2 istanze e che poi il numero medio di thread per ogni istanza cresca fino a 625.Assume there are 2 instances to begin with and then the average number of threads per instance grows to 625.
  2. Il numero di istanze viene aumentato automaticamente aggiungendo una terza istanza.Autoscale scales out adding a 3rd instance.
  3. Si supponga ora che il conteggio medio dei thread nell'istanza scenda a 575.Next, assume that the average thread count across instance falls to 575.
  4. Prima di ridurre le prestazioni, la scalabilità automatica cerca di stimare quale sarà lo stato finale in caso di riduzione del numero di istanze.Before scaling down, autoscale tries to estimate what the final state will be if it scaled in. Ad esempio, 575 x 3 (conteggio corrente delle istanze) = 1.725 / 2 (numero finale di istanze dopo la riduzione delle prestazioni) = 862,5 thread.For example, 575 x 3 (current instance count) = 1,725 / 2 (final number of instances when scaled down) = 862.5 threads. La scalabilità automatica dovrà quindi immediatamente aumentare di nuovo il numero di istanze anche dopo averlo ridotto, se il conteggio medio dei thread rimane invariato o scende anche solo di poco.This means autoscale would have to immediately scale-out again even after it scaled in, if the average thread count remains the same or even falls only a small amount. Se, tuttavia, aumentasse di nuovo le prestazioni, l'intero processo si ripeterebbe, generando un loop infinito.However, if it scaled up again, the whole process would repeat, leading to an infinite loop.
  5. Per evitare questa situazione (definita "instabile"), la scalabilità automatica non riduce affatto le prestazioni,To avoid this situation (termed "flapping"), autoscale does not scale down at all. ma ignora la condizione e la valuta nuovamente la volta successiva che il processo del servizio viene eseguito.Instead, it skips and reevaluates the condition again the next time the service's job executes. Questo potrebbe generare confusione perché sembra che la scalabilità automatica non funzioni quando il conteggio medio dei thread è 575.This could confuse many people because autoscale wouldn't appear to work when the average thread count was 575.

La stima durante la riduzione è necessaria per evitare situazioni di instabilità, in cui vengono eseguite continuamente azioni di riduzione e aumento del numero di istanze.Estimation during a scale-in is intended to avoid "flapping" situations, where scale-in and scale-out actions continually go back and forth. Tenere presente questo comportamento quando si scelgono le stesse soglie per l'aumento e la riduzione del numero di istanze.Keep this behavior in mind when you choose the same thresholds for scale-out and in.

È consigliabile scegliere un margine adeguato tra le soglie di aumento e di riduzione del numero di istanze.We recommend choosing an adequate margin between the scale-out and in thresholds. Ad esempio, considerare la combinazione di regole seguente, che è migliore.As an example, consider the following better rule combination.

  • Aumentare le istanze di 1 quando la percentuale di CPU è >= 80Increase instances by 1 count when CPU% >= 80
  • Ridurre le istanze di 1 quando la percentuale di CPU è <= 60Decrease instances by 1 count when CPU% <= 60

In questo casoIn this case

  1. Si supponga di iniziare con 2 istanze.Assume there are 2 instances to start with.
  2. Se la % di CPU media nelle istanze arriva a 80, la scalabilità automatica aumenta il numero di istanze aggiungendone una terza.If the average CPU% across instances goes to 80, autoscale scales out adding a third instance.
  3. Si supponga che nel corso del tempo la percentuale di CPU scenda a 60.Now assume that over time the CPU% falls to 60.
  4. La regola di riduzione del numero di istanze della scalabilità automatica valuta lo stato finale se venisse applicata la riduzione del numero di istanze.Autoscale's scale-in rule estimates the final state if it were to scale-in. Ad esempio, 60 x 3 (conteggio corrente delle istanze) = 180 / 2 (numero finale di istanze dopo la riduzione delle prestazioni) = 90.For example, 60 x 3 (current instance count) = 180 / 2 (final number of instances when scaled down) = 90. La scalabilità automatica quindi non riduce il numero di istanze perché dovrebbe aumentarlo di nuovo immediatamente.So autoscale does not scale-in because it would have to scale-out again immediately. Al contrario, evita di ridurre le prestazioni.Instead, it skips scaling down.
  5. Al successivo controllo, la percentuale di CPU continua a scendere fino a 50.The next time autoscale checks, the CPU continues to fall to 50. Viene quindi eseguita una nuova stima: 50 x 3 istanze = 150 / 2 istanze = 75, che è al di sotto della soglia di aumento del numero di istanze pari a 80, quindi il numero di istanze viene correttamente ridotto a 2.It estimates again - 50 x 3 instance = 150 / 2 instances = 75, which is below the scale-out threshold of 80, so it scales in successfully to 2 instances.

Considerazioni sul ridimensionamento dei valori di soglia per le metriche specialiConsiderations for scaling threshold values for special metrics

Per le metriche speciali, ad esempio la metrica di archiviazione o la metrica di lunghezza della coda del bus di servizio, la soglia è il numero medio di messaggi disponibile per il numero corrente di istanze.For special metrics such as Storage or Service Bus Queue length metric, the threshold is the average number of messages available per current number of instances. Scegliere con attenzione il valore di soglia per questa metrica.Carefully choose the threshold value for this metric.

Per far comprendere meglio il comportamento, verrà illustrato con esempio.Let's illustrate it with an example to ensure you understand the behavior better.

  • Aumentare le istanze di 1 quando il conteggio dei messaggi della coda di archiviazione è >= 50Increase instances by 1 count when Storage Queue message count >= 50
  • Ridurre le istanze di 1 quando il conteggio dei messaggi della coda di archiviazione è <= 10Decrease instances by 1 count when Storage Queue message count <= 10

Considerare la sequenza seguente:Consider the following sequence:

  1. Esistono 2 istanze di coda di archiviazione.There are 2 storage queue instances.
  2. Continuano ad arrivare messaggi e, quando si controlla la coda di archiviazione, il conteggio totale è pari a 50.Messages keep coming and when you review the storage queue, the total count reads 50. Si potrebbe pensare che la scalabilità automatica debba avviare un'azione di aumento del numero di istanze.You might assume that autoscale should start a scale-out action. Si noti tuttavia che si tratta comunque di 50/2 = 25 messaggi per ogni istanza.However, note that it is still 50/2 = 25 messages per instance. L'aumento del numero di istanze non viene quindi eseguito.So, scale-out does not occur. Perché venga eseguito il primo aumento del numero di istanze, il conteggio totale dei messaggi nella coda di archiviazione deve essere pari a 100.For the first scale-out to happen, the total message count in the storage queue should be 100.
  3. Si supponga ora che il conteggio totale dei messaggi raggiunga i 100.Next, assume that the total message count reaches 100.
  4. Viene aggiunta una terza istanza di coda di archiviazione in seguito a un'azione di aumento del numero di istanze.A 3rd storage queue instance is added due to a scale-out action. L'azione successiva di aumento del numero di istanze verrà eseguita solo dopo che il conteggio totale dei messaggi nella coda avrà raggiunto il numero di 150, poiché 150/3 = 50.The next scale-out action will not happen until the total message count in the queue reaches 150 because 150/3 = 50.
  5. Ora il numero di messaggi nella coda si riduce.Now the number of messages in the queue gets smaller. Con 3 istanze, la prima azione di riduzione del numero di istanze viene eseguita quando i messaggi totali in tutte le code raggiungono il numero di 30, ovvero 30/3 = 10 messaggi per istanza, che corrisponde alla soglia di riduzione del numero di istanze.With 3 instances, the first scale-in action happens when the total messages in all queues add up to 30 because 30/3 = 10 messages per instance, which is the scale-in threshold.

Considerazioni sul ridimensionamento quando vengono configurati più profili in un'impostazione di scalabilità automaticaConsiderations for scaling when multiple profiles are configured in an autoscale setting

In un'impostazione di scalabilità automatica è possibile scegliere un profilo predefinito, che viene sempre applicato indipendentemente da qualsiasi pianificazione o orario, oppure è possibile scegliere un profilo ricorrente o un profilo per un periodo fisso con un intervallo di data e ora.In an autoscale setting, you can choose a default profile, which is always applied without any dependency on schedule or time, or you can choose a recurring profile or a profile for a fixed period with a date and time range.

Quando il servizio di scalabilità automatica elabora questi profili, li controlla sempre nell'ordine seguente:When autoscale service processes them, it always checks in the following order:

  1. Profilo con data fissaFixed Date profile
  2. Profilo ricorrenteRecurring profile
  3. Profilo predefinito ("sempre")Default ("Always") profile

Se la condizione di un profilo viene soddisfatta, la scalabilità automatica non controlla la condizione del profilo successivo.If a profile condition is met, autoscale does not check the next profile condition below it. La scalabilità automatica elabora solo un profilo alla volta.Autoscale only processes one profile at a time. Quindi, per includere anche una condizione di elaborazione da un profilo di livello inferiore, è necessario includere anche tali regole nel profilo corrente.This means if you want to also include a processing condition from a lower-tier profile, you must include those rules as well in the current profile.

Per spiegarlo, verrà usato un esempio:Let's review this using an example:

L'immagine seguente illustra un'impostazione di scalabilità automatica con un profilo predefinito con un numero minimo di istanze = 2 e un numero massimo = 10.The image below shows an autoscale setting with a default profile of minimum instances = 2 and maximum instances = 10. In questo esempio, le regole vengono configurate per aumentare il numero di istanze quando il conteggio dei messaggi nella coda è maggiore di 10 e per ridurlo quando il conteggio dei messaggi nella coda è minore di 3.In this example, rules are configured to scale-out when the message count in the queue is greater than 10 and scale-in when the message count in the queue is less than 3. Ora la risorsa può quindi essere ridimensionata tra le 2 e le 10 istanze.So now the resource can scale between 2 and 10 instances.

È anche stato impostato un profilo ricorrente per il lunedì.In addition, there is a recurring profile set for Monday. È stato impostato per un numero minimo di istanze = 3 e un numero massimo di istanze = 10.It is set for minimum instances = 3 and maximum instances = 10. Quindi il lunedì, la prima volta che la scalabilità automatica controlla questa condizione, se il conteggio delle istanze è 2, lo ridimensiona al nuovo valore minimo pari a 3.This means on Monday, the first time autoscale checks for this condition, if the instance count is 2, it scales to the new minimum of 3. Finché la scalabilità automatica continua a trovare una corrispondenza per la condizione di questo profilo (lunedì), elabora sole le regole di aumento/riduzione del numero di istanze basate sulla CPU configurate per questo profilo.As long as autoscale continues to find this profile condition matched (Monday), it only processes the CPU-based scale-out/in rules configured for this profile. Al momento non controlla la lunghezza della coda.At this time, it does not check for the queue length. Se, tuttavia, si vuole controllare anche la condizione della lunghezza della coda, è necessario includere anche le regole del profilo predefinito nel profilo del lunedì.However, if you also want the queue length condition to be checked, you should include those rules from the default profile as well in your Monday profile.

Allo stesso modo, quando la scalabilità automatica torna al profilo predefinito, per prima cosa controlla se sono soddisfatte le condizioni minima e massima.Similarly, when autoscale switches back to the default profile, it first checks if the minimum and maximum conditions are met. Se al momento il numero di istanze è 12, ne riduce il numero a 10, il massimo consentito per il profilo predefinito.If the number of instances at the time is 12, it scales in to 10, the maximum allowed for the default profile.

Impostazioni di scalabilità automatica

Considerazioni sul ridimensionamento quando vengono configurate più regole in un profiloConsiderations for scaling when multiple rules are configured in a profile

In alcuni casi potrebbe essere necessario impostare più regole in un profilo.There are cases where you may have to set multiple rules in a profile. Il set di regole di scalabilità automatica seguente viene usato dai servizi quando vengono impostate più regole.The following set of autoscale rules are used by services use when multiple rules are set.

In caso di aumento del numero di istanze, la scalabilità automatica viene eseguita se risulta soddisfatta una regola qualsiasi.On scale out, autoscale runs if any rule is met. In caso di riduzione del numero di istanze, la scalabilità automatica richiede che tutte le regole siano soddisfatte.On scale-in, autoscale require all rules to be met.

Per illustrare questo concetto, si supponga di avere le 4 regole di scalabilità automatica seguenti:To illustrate, assume that you have the following 4 autoscale rules:

  • Se la CPU è < 30%, ridurre il numero di istanze di 1If CPU < 30 %, scale-in by 1
  • Se la memoria è < 50%, ridurre il numero di istanze di 1If Memory < 50%, scale-in by 1
  • Se la CPU è > 75%, aumentare il numero di istanze di 1If CPU > 75%, scale-out by 1
  • Se la memoria è > 75%, aumentare il numero di istanze di 1If Memory > 75%, scale-out by 1

Si verifica quindi quanto segue:Then the follow occurs:

  • Se la CPU è pari al 76% e la memoria è pari al 50%, il numero di istanze viene aumentato.If CPU is 76% and Memory is 50%, we scale-out.
  • Se la CPU è pari al 50% e la memoria è pari al 76%, il numero di istanze viene aumentato.If CPU is 50% and Memory is 76% we scale-out.

Ma, se la CPU è pari al 25% e la memoria è pari al 51%, la scalabilità automatica non riduce il numero di istanze.On the other hand, if CPU is 25% and memory is 51% autoscale does not scale-in. Per ridurre il numero di istanze, la CPU deve essere al 29% e la memoria al 49%.In order to scale-in, CPU must be 29% and Memory 49%.

Selezionare sempre un conteggio di istanze predefinito sicuroAlways select a safe default instance count

Il conteggio predefinito delle istanze è importante perché è in base a tale conteggio che la scalabilità automatica ridimensiona il servizio quando le metriche non sono disponibili.The default instance count is important autoscale scales your service to that count when metrics are not available. Selezionare quindi un conteggio di istanze predefinito sicuro per i carichi di lavoro.Therefore, select a default instance count that's safe for your workloads.

Configurare le notifiche relative alla scalabilità automaticaConfigure autoscale notifications

La scalabilità automatica eseguirà la registrazione sul log attività se si verifica una delle condizioni seguenti:Autoscale will post to the Activity Log if any of the following conditions occur:

  • La scalabilità automatica esegue un'operazione di scalabilitàAutoscale issues a scale operation
  • Il servizio di scalabilità automatica esegue correttamente un'azione di scalabilitàAutoscale service successfully completes a scale action
  • Il servizio di scalabilità automatica non riesce a eseguire un'azione di scalabilità.Autoscale service fails to take a scale action.
  • Non sono disponibili metriche che consentono al servizio di scalabilità automatica di prendere una decisione sulla scalabilità.Metrics are not available for autoscale service to make a scale decision.
  • Sono di nuovo disponibili metriche (ripristino) che consentono di prendere una decisione sulla scalabilità.Metrics are available (recovery) again to make a scale decision.

Per monitorare l'integrità del motore di scalabilità automatica si può anche usare un avviso di log attività.You can also use an Activity Log alert to monitor the health of the autoscale engine. Di seguito sono riportati esempi di come creare un avviso di log attività per monitorare tutte le operazioni del motore di scalabilità automatica per la sottoscrizione e per creare un avviso di log attività per monitorare tutte le operazioni di scalabilità automatica in riduzione e in aumento non riuscite per la sottoscrizione.Here are examples to create an Activity Log Alert to monitor all autoscale engine operations on your subscription or to create an Activity Log Alert to monitor all failed autoscale scale in/scale out operations on your subscription.

Oltre a usare gli avvisi di log attività, è possibile configurare le notifiche tramite posta elettronica o webhook per ricevere una notifica delle azioni di scalabilità riuscite tramite la scheda delle notifiche dell'impostazione di scalabilità automatica.In addition to using activity log alerts, you can also configure email or webhook notifications to get notified for successful scale actions via the notifications tab on the autoscale setting.

Passaggi successiviNext Steps