Identificare i fattori di scalabilità automatica

Completato

La scalabilità automatica consente di specificare le condizioni in cui un'applicazione web deve essere scalata verso l'esterno e poi ridimensionata verso l'interno. La scalabilità automatica efficace garantisce la disponibilità di risorse sufficienti per gestire grandi volumi di richieste nei momenti di picco, gestendo al tempo stesso i costi quando la domanda scende.

È possibile configurare la scalabilità automatica per rilevare quando aumentare e ridurre le prestazioni in base a una combinazione di fattori, in base all'utilizzo delle risorse. È anche possibile configurare la scalabilità automatica in base a una pianificazione.

In questa unità si apprenderà come specificare i fattori che possono essere usati per ridimensionare automaticamente un servizio.

Scalabilità automatica e piano di servizio app

La scalabilità automatica è una funzionalità del piano di servizio app usato dall'app Web. Quando l'app web viene ridimensionata, Azure avvia nuove istanze dell'hardware definito dall'App Service Plan per l'app.

Per evitare la scalabilità automatica indesiderata, un piano del servizio app ha un limite di istanze. I piani in piani tariffari più costosi hanno un limite superiore. La scalabilità automatica non può creare più istanze rispetto a questo limite.

Nota

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

Condizioni di scalabilità automatica

Per indicare come eseguire la scalabilità automatica, creando condizioni di scalabilità automatica. Azure offre due opzioni per la scalabilità automatica:

  • Ridimensionare in base a una metrica, ad esempio la lunghezza della coda del disco o il numero di richieste HTTP in attesa dell'elaborazione.
  • Ridimensionare a un numero specifico di istanze secondo un programma. Ad esempio, è possibile scalare in una determinata ora del giorno o in un giorno specifico o data della settimana. È anche possibile specificare una data di fine e il sistema viene ridimensionato di nuovo in questo momento.

Il ridimensionamento a un numero specifico di istanze consente solo di scalare fino a un determinato numero di istanze. Se è necessario scalare orizzontalmente in modo incrementale, è possibile combinare l’autoscala basata su metriche e su pianificazioni nella stessa condizione di autoscala. Pertanto, è possibile impostare il sistema per espandere se il numero di richieste HTTP supera una soglia, ma solo tra determinate ore del giorno.

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

Metriche per le regole di scalabilità automatica

La scalabilità automatica per metrica richiede la definizione di una o più regole di scalabilità automatica. Una regola di scalabilità automatica specifica una metrica da monitorare e la modalità di risposta della scalabilità automatica quando questa metrica supera una soglia definita. Le metriche che è possibile monitorare per un'app Web sono:

  • Percentuale CPU. Questa metrica indica l'utilizzo della CPU in tutte le istanze. Un valore elevato indica che le istanze stanno diventando associate alla CPU, causando ritardi nell'elaborazione delle richieste client.
  • percentuale di memoria. Questa metrica acquisisce l'occupazione della memoria dell'applicazione in tutte le istanze. Un valore elevato indica che la memoria libera potrebbe essere insufficiente e potrebbe causare l'esito negativo di una o più istanze.
  • lunghezza della coda del disco. Questa metrica è una misura del numero di richieste di I/O in sospeso in tutte le istanze. Un valore elevato indica che potrebbe verificarsi una contesa del disco.
  • lunghezza coda HTTP. Questa metrica mostra il numero di richieste client in attesa di elaborazione da parte dell'app Web. Se questo numero è elevato, le richieste dei client potrebbero non riuscire con errori HTTP 408 (timeout).
  • Dati in. Questa metrica è il numero di byte ricevuti in tutte le istanze.
  • Data Out. Questa metrica è il numero di byte inviati da tutte le istanze.

È anche possibile ridimensionare 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, potrebbe essere necessario attivare più istanze di un'app Web se il numero di elementi contenuti in una coda del bus di servizio di Azure supera una lunghezza critica.

Come una regola di scalabilità automatica analizza le metriche

La scalabilità automatica funziona analizzando le tendenze nei valori delle metriche nel tempo in 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 noto come intervallo di tempo . Ogni metrica ha un proprio intervallo di tempo intrinseco, ma nella maggior parte dei casi questo periodo è di 1 minuto. Il valore aggregato è noto come aggregazione temporale . Le opzioni disponibili sono Average, Minimum, Maximum, Sum, Laste Count.

Un intervallo di un minuto è un breve intervallo in cui determinare se qualsiasi modifica nella metrica è sufficientemente durevole per rendere la scalabilità automatica utile. Una regola di scalabilità automatica esegue quindi un secondo passaggio che esegue un'ulteriore aggregazione del valore calcolato dall'aggregazione temporale in un periodo più lungo specificato dall'utente, noto come durata . La durata minima è di 5 minuti. Se la durata è impostata su 10 minuti, ad esempio, la regola di scalabilità automatica aggrega i 10 valori calcolati per l'intervallo di tempo .

Il calcolo delle aggregazioni per l'durata può essere diverso dal intervallo di tempo. Ad esempio, se l'aggregazione tempo è media e la statistica raccolta è percentuale cpu in un minuto intervallo di tempo, ogni minuto viene calcolato l'utilizzo medio della percentuale di CPU in tutte le istanze per tale minuto. Se la statistica intervallo di tempo è impostata su Massimoe la durata della regola è impostata su 10 minuti, il massimo dei 10 valori medi per l'utilizzo della percentuale della CPU consiste nel determinare se la soglia della regola è stata superata.

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 scalare verso l'esterno o scalare verso l'interno. Un'azione di scalabilità espansiva aumenta il numero di istanze, mentre un'azione di scalabilità riduttiva diminuisce il numero di istanze. Un'azione di scalabilità automatica usa un operatore ( ad esempio minore di, maggiore di, uguale ae così via) per determinare come reagire alla soglia. Le azioni di scalabilità orizzontale usano in genere l'operatore 'maggiore di' a per confrontare il valore della metrica con la soglia. Le azioni di ridimensionamento tendono a confrontare il valore della metrica con la soglia utilizzando l'operatore minore di. Un'azione di scalabilità automatica può anche impostare il numero di istanze su un livello specifico, anziché incrementare o decrementare il numero disponibile.

Un'azione di scalabilità automatica ha un periodo di raffreddamento, specificato in minuti. Durante questo intervallo, la regola di scalabilità non verrà attivata di nuovo. Ciò consente al sistema di stabilizzarsi tra gli eventi di scalabilità automatica. Tenere presente che l'avvio o l'arresto delle istanze richiede tempo e pertanto le metriche raccolte potrebbero non mostrare modifiche significative per alcuni minuti. Il periodo minimo di raffreddamento è di cinque minuti.

Associazione di regole di scalabilità automatica

È consigliabile pianificare il ridimensionamento quando un carico di lavoro diminuisce. Valutare la possibilità di definire regole di scalabilità automatica in coppie nella stessa condizione di scalabilità automatica. Una regola di scala automatica deve indicare come scalare il sistema quando una metrica supera una soglia massima. Altre regole devono quindi definire come ridimensionare nuovamente il sistema quando la stessa metrica scende al di sotto di 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 scaling-out e la corrispondente regola di scaling-in. 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 supera 10, aumentare il numero di istanze di 1
  • Se l'utilizzo della CPU supera 70%, aumentare il numero di istanze di 1
  • Se la lunghezza della coda HTTP è zero, ridurre di 1
  • Se l'utilizzo della CPU scende al di sotto di 50%, ridurre di 1

Quando si determina se scalare, l'azione di scalabilità automatica viene eseguita se una delle regole di scalabilità orizzontale è soddisfatta (la lunghezza della coda HTTP supera 10 oppure l'utilizzo della CPU supera 70%). Quando si esegue il ridimensionamento, l'azione di scalabilità automatica viene eseguita solo se vengono soddisfatte tutte le delle regole di scalabilità (la lunghezza della coda HTTP scende a zero e l'utilizzo della CPU scende al di sotto di 50%). Se è necessario aumentare le prestazioni se vengono soddisfatte solo una delle regole di scalabilità orizzontale, è necessario definire le regole in condizioni di scalabilità automatica separate.