Esaminare i fattori di scalabilità automatica

Completato

La scalabilità automatica consente di specificare le condizioni in base alle quali il numero di istanze di un'app Web deve essere aumentato e nuovamente ridotto. Una scalabilità automatica efficace garantisce che siano disponibili risorse sufficienti per supportare volumi elevati di richieste nei momenti di picco, gestendo al tempo stesso i costi quando la richiesta si riduce.

È possibile configurare la scalabilità automatica in modo da rilevare quando aumentare o ridurre il numero di istanze in base a una combinazione di fattori, a seconda dell'uso delle risorse. È anche possibile configurare la scalabilità automatica in base a una pianificazione.

In questa unità viene illustrato come specificare i fattori che possono essere usati per la scalabilità automatica di un servizio.

Scalabilità automatica e piano di servizio app

La scalabilità automatica è una funzionalità del piano di servizio app usata dall'app Web. Quando viene aumentato il numero di istanze dell'app Web, Azure avvia nuove istanze dei componenti hardware definiti dal piano di servizio app per l'app.

Per evitare che la scalabilità automatica venga eseguita in modo incontrollato, un piano di servizio app prevede un limite di istanze. I piani con i piani tariffari più costosi hanno un limite superiore. La scalabilità automatica non può creare più istanze di questo limite.

Nota

Non tutti i piani tariffari del piano di servizio app supportano la scalabilità automatica.

Condizioni di scalabilità automatica

È possibile specificare come eseguire la scalabilità automatica creando condizioni di scalabilità automatica. Azure offre due opzioni per la scalabilità automatica:

  • La scalabilità basata su una metrica, ad esempio la lunghezza della coda del disco o il numero di richieste HTTP in attesa di elaborazione.
  • Scalabilità a un numero di istanze specifico in base a una pianificazione. È ad esempio possibile aumentare le istanze a una determinata ora del giorno, in una data specifica o in un particolare giorno della settimana. È anche possibile specificare una data di fine, in cui il sistema torna al numero di istanze iniziale.

La scalabilità a uno specifico numero di istanze consente solo di ampliare il sistema fino a un numero di istanze definito. Se è necessario aumentare il numero di istanze in modo incrementale, è possibile combinare la scalabilità automatica basata su metriche e basata su una pianificazione nella stessa condizione di scalabilità automatica. È pertanto possibile configurare il sistema per l'aumento del numero di istanze se il numero di richieste HTTP supera una soglia, ma solo entro determinati orari della giornata.

È possibile creare più condizioni di scalabilità automatica per gestire diverse metriche e pianificazioni. Azure ridimensiona automaticamente il servizio quando si applica una di queste condizioni. Un piano di servizio app ha anche una condizione predefinita che viene usata se nessuna delle altre condizioni è applicabile. Questa condizione è sempre attiva e non dispone di una pianificazione.

Metriche per le regole di scalabilità automatica

Per la scalabilità automatica in base alle metriche è necessario definire una o più regole di scalabilità automatica. Una regola di scalabilità automatica specifica una metrica da monitorare e come deve rispondere la scalabilità automatica quando la metrica supera una soglia definita. Le metriche che è possibile monitorare per un'app Web sono:

  • Percentuale CPU. Questa metrica è un'indicazione dell'uso della CPU per tutte le istanze. Un valore elevato indica che le istanze stanno diventando dipendenti dalla CPU, cosa che può causare ritardi nell'elaborazione delle richieste client.
  • Percentuale memoria. Questa metrica acquisisce l'occupazione della memoria dell'applicazione in tutte le istanze. Un valore elevato indica che la memoria disponibile potrebbe essere insufficiente. Tale condizione potrebbe causare problemi per una o più istanze.
  • Lunghezza coda disco. Questa metrica è una misura del numero di richieste di I/O in sospeso per tutte le istanze. Un valore elevato indica che possono verificarsi conflitti per il disco.
  • Lunghezza coda HTTP. Questa metrica indica il numero di richieste client in attesa di elaborazione da parte dell'app Web. Se questo numero è elevato, le richieste client potrebbero avere esito negativo con errori HTTP 408 (timeout).
  • Dati in entrata. Questa metrica indica il numero di byte ricevuti per tutte le istanze.
  • Dati in uscita. Questa metrica indica il numero di byte inviati da tutte le istanze.

È anche possibile gestire il ridimensionamento in base alle metriche per altri servizi di Azure. Ad esempio, se l'app Web elabora le richieste ricevute da una coda del bus di servizio, è possibile creare altre istanze dell'app Web se il numero di elementi contenuti in una coda del bus di servizio di Azure supera una lunghezza critica.

Modalità con cui una regola di scalabilità automatica analizza le metriche

La scalabilità automatica funziona analizzando le tendenze dei valori delle metriche nel corso del tempo per tutte le istanze. L'analisi è un processo in più passaggi.

Nel primo passaggio, una regola di scalabilità automatica aggrega i valori recuperati per una metrica per tutte le istanze in un periodo di tempo denominato intervallo di tempo. Ogni metrica dispone di uno specifico intervallo di tempo, ma nella maggior parte dei casi questo periodo è di 1 minuto. Il valore aggregato è noto come aggregazione temporale. Le opzioni disponibili sono Media, Minimo, Massimo, Somma, Ultimo e Conteggio.

Un intervallo di un minuto è un periodo di tempo breve per determinare se eventuali modifiche nella metrica sono di durata sufficiente da rendere utile la scalabilità automatica. Pertanto, una regola di scalabilità automatica esegue un secondo passaggio, che esegue un'ulteriore aggregazione del valore calcolato dall'aggregazione temporale su un periodo più lungo, specificato dall'utente, noto come durata. La durata minima è 5 minuti. Ad esempio, se la durata è impostata su 10 minuti, la regola di scalabilità automatica aggrega i 10 valori calcolati per l'intervallo di tempo.

Il calcolo dell'aggregazione per la durata può essere diverso da quello dell'intervallo di tempo. Ad esempio, se l'aggregazione temporale è Media e la statistica raccolta è Percentuale CPU con un intervallo di tempo di un minuto, ogni minuto viene calcolato l'uso percentuale medio della CPU per tutte le istanze in tale minuto. Se la statistica per l'intervallo di tempo è impostata su Massimo e la durata della regola è impostata su 10 minuti, il massimo dei 10 valori medi per l'utilizzo percentuale della CPU serve a determinare se è stata superata la soglia della regola.

Azioni di scalabilità automatica

Quando una regola di scalabilità automatica rileva che una metrica ha superato una soglia, può eseguire un'azione di scalabilità automatica. Un'azione di scalabilità automatica può essere di aumento del numero di istanze o di riduzione del numero di istanze. Un'azione di aumento aumenta il numero di istanze e un'azione di riduzione riduce il numero di istanze. Un'azione di scalabilità automatica usa un operatore (ad esempio, minore di, maggiore di, uguale a e così via) per determinare come rispondere alla soglia. Le azioni di aumento del numero di istanze in genere usano l'operatore maggiore di per confrontare il valore della metrica con la soglia. Le azioni di riduzione della scalabilità tendono a confrontare il valore della metrica con la soglia usando l'operatore minore di. Un'azione di scalabilità automatica può inoltre impostare il numero di istanze su un livello specifico, anziché incrementare o ridurre il numero disponibile.

Un'azione di scalabilità automatica ha un periodo di disattivazione, espresso in minuti. Durante questo intervallo, la regola di scalabilità non verrà attivata nuovamente. Ciò consente al sistema di stabilizzarsi tra gli eventi di scalabilità automatica. Tenere presente che è necessario tempo per avviare o arrestare le istanze, pertanto le metriche raccolte potrebbero non mostrare modifiche significative per diversi minuti. Il periodo di disattivazione minimo è di cinque minuti.

Associazione delle regole di scalabilità automatica

È consigliabile pianificare la riduzione della scalabilità quando un carico di lavoro diminuisce. È possibile definire coppie di regole di scalabilità automatica nella stessa condizione di scalabilità automatica. Una regola di scalabilità automatica deve indicare come aumentare la scalabilità del sistema quando una metrica supera una soglia superiore. L'altra regola deve definire come ridurre nuovamente le prestazioni del sistema quando la stessa metrica scende sotto una soglia inferiore.

Combinazione delle regole di scalabilità automatica

Una singola condizione di scalabilità automatica può contenere diverse regole di scalabilità automatica (ad esempio, una regola di aumento del numero di istanze e la regola corrispondente di riduzione del numero di istanze). Tuttavia, le regole di scalabilità automatica in una condizione di scalabilità automatica non devono essere direttamente correlate. È possibile definire le quattro regole seguenti nella stessa condizione di scalabilità automatica:

  • Se la lunghezza della coda HTTP è superiore a 10, aumentare il numero di istanze di 1
  • Se l'uso della CPU è superiore al 70%, aumentare il numero di istanze di 1
  • Se la lunghezza della coda HTTP è zero, ridurre il numero di istanze di 1
  • Se l'uso della CPU scende sotto il 50%, ridurre il numero di istanze di 1

Al momento di stabilire se aumentare il numero di istanze, l'azione di scalabilità automatica viene eseguita se qualsiasi delle regole di scale-out è soddisfatta (la lunghezza della coda HTTP è superiore a 10 o l'uso della CPU supera il 70%). Al momento di ridurre il numero di istanze, l'azione di scalabilità automatica viene eseguita solo se tutte le regole di riduzione del numero di istanze sono soddisfatte (la lunghezza della coda HTTP raggiunge lo zero e l'uso della CPU scende sotto il 50%). Se si sceglie di ridurre il numero di istanze solo se una delle regole di riduzione del numero di istanze è soddisfatta, è necessario definire le regole in condizioni di scalabilità automatica distinte.