Scalabilità basata sulle previsioni


Puoi configurare la scalabilità automatica per un gruppo di istanze gestite (MIG) per aggiungere o rimuovere automaticamente le istanze di macchine virtuali (VM) in base agli incrementi o alle riduzioni del carico. Tuttavia, se l'inizializzazione dell'applicazione richiede alcuni minuti o più, l'aggiunta di istanze in risposta alle modifiche in tempo reale potrebbe non aumentare la capacità dell'applicazione abbastanza rapidamente. Ad esempio, se si verifica un gran aumento del carico (ad esempio quando gli utenti si svegliano la mattina), alcuni utenti potrebbero riscontrare ritardi durante l'inizializzazione dell'applicazione nelle nuove istanze.

Puoi utilizzare la scalabilità automatica predittiva per migliorare i tempi di risposta delle applicazioni con tempi di inizializzazione lunghi e i cui carichi di lavoro variano in modo prevedibile con cicli giornalieri o settimanali.

Quando attivi la scalabilità automatica predittiva, Compute Engine prevede il carico futuro in base alla cronologia del gruppo di istanze gestite e esegue la scalabilità fuori dal gruppo di istanze gestite in anticipo rispetto al carico previsto, in modo che le nuove istanze siano pronte all'uso quando arriva il carico. Senza la scalabilità automatica predittiva, un gestore della scalabilità automatica può scalare un gruppo solo in modo reattivo, in base alle variazioni del carico osservate in tempo reale. Con la scalabilità automatica predittiva abilitata, lo strumento di scalabilità automatica funziona con i dati in tempo reale e con i dati storici per coprire sia il carico attuale che quello previsto. Per ulteriori informazioni, consulta Come funziona la scalabilità automatica predittiva e Verificare se la scalabilità automatica predittiva è adatta al tuo carico di lavoro.

Prima di iniziare

  • Se vuoi utilizzare gli esempi della riga di comando in questa guida, installa Google Cloud CLI o avvia Cloud Shell.
  • Scopri i concetti fondamentali dell'autoscalabilità.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Per ulteriori informazioni, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Prezzi

La scalabilità automatica predittiva è gratuita. Tuttavia, se attivi la scalabilità automatica predittiva per ottimizzare la disponibilità, paghi le risorse Compute Engine utilizzate dal tuo gruppo di istanze gestite.

Limitazioni

  • La scalabilità automatica predittiva funziona solo con l'utilizzo della CPU come metrica di scalabilità. Le metriche di Cloud Load Balancing o Cloud Monitoring non sono supportate.
  • Compute Engine richiede 3 giorni di cronologia della scalabilità automatica basata sulla CPU prima di poter generare previsioni.
  • Le previsioni si basano su modelli di carico settimanali e giornalieri. Compute Engine non prevede eventi mensili, annuali o una tantum e non prevede modelli di carico inferiori a 10 minuti. Puoi utilizzare la scalabilità automatica basata su pianificazione per richiedere la capacità per carichi una tantum o di altro tipo.

Carichi di lavoro adatti

La scalabilità automatica predittiva funziona al meglio se il carico di lavoro soddisfa i seguenti criteri:

  • L'inizializzazione dell'applicazione richiede molto tempo, ad esempio se configuri un periodo di inizializzazione di più di 2 minuti.
  • Il carico di lavoro varia in modo prevedibile con cicli giornalieri o settimanali.

Se l'inizializzazione del servizio richiede molto tempo, gli utenti potrebbero riscontrare una latenza del servizio dopo un evento di scalabilità, ovvero mentre le nuove VM sono provisionate, ma non ancora in esecuzione. La scalabilità automatica predittiva tiene conto del tempo di inizializzazione della tua applicazione e esegue lo scale out prima degli aumenti di utilizzo previsti, contribuendo ad assicurare che il numero di istanze di pubblicazione disponibili sia sufficiente per l'utilizzo target.

Per visualizzare un'anteprima dell'impatto della scalabilità automatica predittiva sul tuo gruppo, consulta Verificare se la scalabilità automatica predittiva è adatta al tuo carico di lavoro.

Attivazione e disattivazione della scalabilità automatica predittiva

Puoi attivare la scalabilità automatica predittiva quando esegui la scalabilità in base all'utilizzo della CPU. Per saperne di più sulla configurazione della scalabilità automatica basata sulla CPU, consulta Scalabilità in base all'utilizzo della CPU.

Se il tuo gruppo di istanze gestite non ha una cronologia del gestore della scalabilità automatica, possono essere necessari 3 giorni prima che l'algoritmo predittivo influisca sul gestore della scalabilità automatica. Durante questo periodo, il gruppo viene scalato in base solo ai dati in tempo reale. Dopo 3 giorni, il gruppo inizia a scalare utilizzando le previsioni. Man mano che viene raccolto più carico storico, la scalabilità automatica predittiva comprende meglio i modelli di carico e le sue previsioni migliorano. Compute Engine utilizza fino a 3 settimane di cronologia dei carichi del tuo gruppo di istanze gestite per alimentare il modello di machine learning.

Console

  1. Nella console, vai alla pagina Gruppi di istanze.

    Vai a Gruppi di istanze

  2. Nell'elenco, fai clic sul nome di un gruppo di istanze gestite esistente per aprire la pagina di panoramica del gruppo.

  3. Fai clic su Modifica.

  4. Se non esiste una configurazione di scalabilità automatica, in Scalabilità automatica, fai clic su Configura scalabilità automatica.

  5. In Modalità di scalabilità automatica, seleziona On: aggiungi e rimuovi istanze al gruppo per attivare la scalabilità automatica.

  6. Specifica il numero minimo e massimo di istanze che il gestore della scalabilità automatica dovrà creare in questo gruppo.

  7. Se nella sezione Indicatori di scalabilità automatica non esiste ancora una metrica Utilizzo CPU, aggiungine una:

    1. Fai clic su Aggiungi un indicatore.
    2. Nel menu a discesa Tipo di indicatore, seleziona Utilizzo CPU.
    3. Inserisci la metrica Utilizzo CPU target desiderata. Questo valore viene trattato come una percentuale. Ad esempio, per il 75% di utilizzo della CPU, inserisci 75.
    4. In Scalabilità automatica predittiva, seleziona Ottimizza per la disponibilità per attivare la scalabilità automatica predittiva.
      • In alternativa, se vuoi disattivare l'algoritmo predittivo e utilizzare solo il ridimensionamento automatico in tempo reale, seleziona Off.
    5. Fai clic su Fine.
  8. In Periodo di inizializzazione, specifica il tempo necessario per l'inizializzazione della tua applicazione in una nuova istanza. Questa impostazione indica al gestore della scalabilità automatica predittiva di eseguire lo scale out ulteriormente prima del carico previsto, in modo che le applicazioni vengano inizializzate quando arriva il carico.

  9. Fai clic su Salva.

gcloud

Quando imposti o aggiorni il gestore della scalabilità automatica di un gruppo di istanze gestite, includi il --cpu-utilization-predictive-method flag con uno dei seguenti valori:

  • optimize-availability: per attivare l'algoritmo predittivo
  • none (valore predefinito): per disattivare l'algoritmo predittivo

Se la scalabilità automatica basata sulla CPU non è ancora attivata per il gruppo, devi attivarla. Puoi utilizzare il comando set-autoscaling per configurare da zero il criterio di scalabilità automatica di un gruppo. Ad esempio, il comando seguente mostra come configurare la scalabilità automatica con le seguenti impostazioni:

  • Scalabilità automatica predittiva abilitata.
  • Utilizzo CPU target del 75%.
  • Il numero massimo di istanze impostato su 20.
  • Un periodo di inizializzazione (--cool-down-period) impostato su 5 minuti. Questa impostazione indica all'agente di scalabilità automatica predittiva di eseguire lo scale out 5 minuti prima del carico previsto, in modo che le applicazioni vengano inizializzate quando arriva il carico.
gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --cpu-utilization-predictive-method optimize-availability \
  --target-cpu-utilization 0.75 \
  --max-num-replicas 20 \
  --cool-down-period 300

Se la scalabilità automatica basata sulla CPU è già abilitata per il gruppo, utilizza il comando update-autoscaling per attivare l'algoritmo predittivo:

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
  --cpu-utilization-predictive-method=optimize-availability

REST

Quando crei o aggiorni un regolatore automatico, includi il campo predictiveMethod nel corpo della richiesta con uno dei seguenti valori:

  • OPTIMIZE_AVAILABILITY: per attivare l'algoritmo predittivo
  • NONE (valore predefinito): per disattivare l'algoritmo predittivo

Se il gruppo non ha una configurazione di scalabilità automatica esistente, procedi nel seguente modo:

Se il gruppo ha già una configurazione di scalabilità automatica, procedi nel seguente modo:

Se la scalabilità automatica basata sulla CPU non è ancora attivata per il gruppo, devi attivarla.

Ad esempio, la seguente richiesta applica patch a una risorsa di autoscaler esistente per attivare la scalabilità automatica basata sulla CPU con le seguenti impostazioni:

  • Scalabilità automatica predittiva abilitata.
  • Utilizzo CPU target del 75%.
  • Il numero massimo di istanze impostato su 20.
  • Un periodo di inizializzazione (coolDownPeriodSec) impostato su 5 minuti. Questa impostazione indica all'agente di scalabilità automatica predittiva di eseguire lo scale out 5 minuti prima del carico previsto, in modo che le applicazioni vengano inizializzate quando arriva il carico.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers/

{
  "name": "AUTOSCALER_NAME",
  "target": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME",
  "autoscalingPolicy": {
    "cpuUtilization": {
       "utilizationTarget": 0.75,
       "predictiveMethod": "OPTIMIZE_AVAILABILITY"
     },
    "maxNumReplicas": 20,
    "coolDownPeriodSec": 300
  }
}

Verificare se la scalabilità automatica predittiva è attiva

Per visualizzare la configurazione attuale della scalabilità automatica di un gruppo di istanze gestite, consulta Ottenere le proprietà di un gruppo di istanze gestite.

Configurazione della scalabilità automatica predittiva

Per ulteriori informazioni su come configurare l'utilizzo target, il numero minimo e massimo di istanze e il periodo di inizializzazione, consulta Scalabilità in base all'utilizzo della CPU. Quando configuri queste opzioni, il gestore della scalabilità automatica predittiva si adopera per mantenere tutte le istanze al livello di utilizzo target impostato, entro i limiti minimo e massimo del gruppo, come fa un gestore della scalabilità automatica in tempo reale.

Utilizza l'impostazione del periodo di inizializzazione per tenere conto del tempo necessario per l'inizializzazione dell'applicazione. Questa impostazione influisce sul tempo in anticipo rispetto all'aumento del carico previsto in cui il gestore della scalabilità automatica predittiva avvia nuove istanze, in modo che l'applicazione sia pronta all'uso quando si verifica il carico.

Verificare se la scalabilità automatica predittiva è adatta al tuo carico di lavoro

Per verificare se la scalabilità automatica predittiva potrebbe migliorare la disponibilità della tua applicazione, puoi confrontare il rendimento della configurazione attuale della scalabilità automatica basata sulla CPU del gruppo con la scalabilità automatica predittiva. Per fare il confronto, non è necessario attivare la scalabilità automatica predittiva.

Per ulteriori informazioni sui carichi di lavoro adatti alla scalabilità automatica predittiva, consulta Carichi di lavoro adatti.

Controllo degli eventuali sovraccarichi

Il gruppo di istanze gestite con scalabilità automatica è sovraccaricato quando l'utilizzo medio della CPU supera il valore target. Per verificare se la configurazione della scalabilità automatica ha generato VM sovraccaricate durante gli ultimi 7 giorni e per capire se la scalabilità automatica predittiva può ridurre i sovraccarichi, completa i seguenti passaggi:

  1. Nella console, vai alla pagina Gruppi di istanze.

    Vai a Gruppi di istanze

  2. Fai clic su un gruppo di istanze gestite esistente per il quale è configurata la scalabilità automatica basata sulla CPU. Viene aperta la pagina di panoramica del gruppo.

  3. Fai clic su Modifica.

  4. Nella sezione Scalabilità automatica, in Indicatori di scalabilità automatica, espandi la sezione Utilizzo CPU, quindi fai clic su Verifica se la scalabilità automatica predittiva può ottimizzare la tua disponibilità.

  5. In base ai dati degli ultimi 7 giorni, la tabella mostra quante VM sono state utilizzate al giorno e quante VM sono state sovraccaricate al giorno per le seguenti righe:

    • Configurazione attuale della scalabilità automatica: mostra il rendimento del gestore della scalabilità automatica in base alla sua configurazione negli ultimi 7 giorni.
    • Con la scalabilità automatica predittiva impostata su "Ottimizza per la disponibilità": mostra il rendimento del gestore della scalabilità automatica se fosse stata attivata negli ultimi 7 giorni.

Puoi utilizzare il "Numero di VM utilizzate al giorno" come sostituto dei costi. Ad esempio, per ridurre il numero giornaliero di VM sovraccariche, il gestore della scalabilità automatica predittiva potrebbe creare le VM in anticipo ed eseguirle per più tempo, con un conseguente aumento dei costi.

Monitoraggio e simulazione della scalabilità automatica predittiva

Puoi visualizzare le dimensioni storiche del gruppo utilizzando Cloud Monitoring. Il grafico di monitoraggio mostra in che modo la configurazione della scalabilità automatica ha scalato il gruppo nel tempo e anche in che modo la scalabilità automatica predittiva, se abilitata, avrebbe scalato il gruppo.

Per i gruppi con la scalabilità automatica predittiva disattivata, puoi utilizzare questo strumento per simulare la scalabilità automatica predittiva prima di attivarla.

  1. Nella console, vai alla pagina Gruppi di istanze.

    Vai a Gruppi di istanze

  2. Fai clic su un gruppo di istanze gestite esistente per il quale è configurata la scalabilità automatica basata sulla CPU. Viene aperta la pagina di panoramica del gruppo.

  3. Fai clic su Monitoraggio per visualizzare i grafici relativi al gruppo.

  4. Nel primo grafico, fai clic sul titolo e seleziona Scalabilità automatica predittiva. Questa visualizzazione mostra le dimensioni effettive e quelle previste del gruppo.

  5. Puoi selezionare un intervallo di tempo diverso per visualizzare più dati storici o aumentare lo zoom su un periodo in cui la domanda è aumentata per vedere in che modo la scalabilità automatica predittiva influisce sulle dimensioni del gruppo prima del carico previsto.

Come funziona la scalabilità automatica predittiva

Il ridimensionamento automatico predittivo prevede la metrica di ridimensionamento in base alle tendenze storiche della metrica. Le previsioni vengono ricalcolate ogni pochi minuti, il che consente all'autoscaler di adattare rapidamente la previsione alle variazioni molto recenti del carico. Il gestore della scalabilità automatica predittiva richiede almeno 3 giorni di cronologia da cui determinare un pattern di utilizzo del servizio rappresentativo prima di poter fornire previsioni. Compute Engine utilizza fino a 3 settimane di cronologia dei carichi del tuo gruppo di istanze gestite per alimentare il modello di machine learning.

Il gestore della scalabilità automatica predittiva calcola il numero di VM necessarie per raggiungere il tuo obiettivo di utilizzo in base a numerosi fattori, tra cui:

  • Il valore futuro previsto della metrica di scalabilità
  • Il valore corrente della metrica di scalabilità
  • Fiducia nelle tendenze passate, inclusa la variabilità passata della metrica di scalabilità
  • Il periodo di inizializzazione dell'applicazione configurato, noto anche come periodo di inizializzazione

In base a questi fattori, il gestore della scalabilità automatica predittiva esegue lo scaling out del gruppo in anticipo rispetto alla domanda prevista.

Confronto tra il servizio di VM con e senza scalabilità automatica predittiva.

Figura 1. Confronto tra il servizio di VM con e senza scalabilità automatica predittiva.

Nella Figura 1, la linea blu mostra una domanda crescente di VM. La linea nera mostra la risposta del gestore della scalabilità automatica: vengono aggiunte altre VM. Tuttavia, per le applicazioni con tempi di inizializzazione lunghi, la linea grigia indica che le VM aggiunte richiedono un tempo aggiuntivo prima di essere pronte per il servizio, il che può comportare un numero insufficiente di VM in servizio per soddisfare la domanda. Con la scalabilità automatica predittiva abilitata, vengono presi in considerazione l'aumento previsto della domanda e il lungo tempo di inizializzazione dell'applicazione: il gestore della scalabilità automatica risponde aggiungendo le VM in anticipo, in modo da avere un numero sufficiente di VM in servizio. Puoi configurare l'anticipo con cui vengono aggiunte le nuove istanze impostando il periodo di inizializzazione.

Dati sull'utilizzo in tempo reale

L'autoscaling predittivo non può determinare un pattern per tutte le variazioni future dell'utilizzo basato sui dati storici, pertanto funziona perfettamente anche con i dati in tempo reale. Ad esempio, un evento di cronaca imprevisto potrebbe contribuire a un picco di utilizzo che non poteva essere previsto solo in base alla cronologia. Per gestire queste variazioni imprevedibili del carico, il gestore della scalabilità automatica predittiva risponde nel seguente modo:

  • Adatta le sue previsioni: le previsioni vengono ricalcolate costantemente, in pochi minuti, in modo da adeguarsi ai dati più recenti. I tempi esatti degli aggiustamenti ai nuovi pattern dipendono, tra le altre cose, dalla ripetibilità del nuovo pattern e dalla grandezza della differenza tra il nuovo pattern e le previsioni passate.
  • Si basa su dati in tempo reale: il numero consigliato di istanze del gestore della scalabilità automatica, basato sui valori in tempo reale della metrica, è sempre sufficiente per soddisfare l'utilizzo target del gruppo. Se il valore corrente di un indicatore in tempo reale è superiore alla previsione, il valore corrente dell'indicatore ha la precedenza sulla previsione. Di conseguenza, i gruppi di istanze gestite per i quali è stata attivata la scalabilità automatica predittiva hanno sempre una maggiore disponibilità rispetto a quelli per i quali non è stata attivata.

Due grafici mostrano come le previsioni si adattano all'utilizzo effettivo della CPU.

Figura 2. Due grafici mostrano come le previsioni si adattano all'utilizzo effettivo della CPU.

Nella Figura 2, la linea gialla tratteggiata mostra la previsione al momento t1. Tuttavia, l'utilizzo effettivo della CPU, come mostrato dalla linea blu solida, è diverso da quello previsto. Nel grafico a sinistra, l'utilizzo effettivo della CPU è superiore a quello previsto. Nel grafico a destra, l'utilizzo effettivo della CPU è inferiore a quello previsto. La linea tratteggiata blu mostra la previsione aggiustata.

Picchi brevi e imprevedibili

I picchi brevi e imprevedibili vengono coperti in tempo reale. Il gestore della scalabilità automatica crea almeno il numero di istanze necessarie per mantenere l'utilizzo al target configurato, in base al valore effettivo corrente della metrica. Tuttavia, queste istanze non vengono create in anticipo, come mostrato nella figura seguente.

Un picco breve e imprevedibile fa sì che lo scalatore reagisca in tempo reale.

Figura 3. Un picco breve e imprevedibile fa sì che lo scalare automatico reagisca in tempo reale.

Nella figura 3, la linea blu continua mostra l'utilizzo effettivo della CPU. Non è stato possibile prevedere un picco imprevisto di utilizzo della CPU. Poiché il ridimensionamento automatico monitora sempre i dati in tempo reale, aggiunge istanze per far fronte al picco. La linea nera solida illustra l'aggiunta reattiva di VM da parte del gestore della scalabilità automatica in risposta al picco. La linea grigia continua indica il numero di VM di distribuzione. La linea grigia è in ritardo rispetto alla linea nera a causa del tempo di inizializzazione dell'applicazione. In questo scenario, il gruppo è temporaneamente sovraccaricato.

Cali improvvisi

Un altro tipo di variazione imprevedibile dell'utilizzo è un calo improvviso, ad esempio un calo causato da un errore in una parte dello stack dell'applicazione. In questo caso, il numero di istanze segue inizialmente la previsione. Tuttavia, nel tempo, la previsione si adegua all'utilizzo inferiore a quello previsto, con un conseguente ridimensionamento. Le tempistiche esatte di questo aggiustamento dipendono da numerosi fattori, tra cui la frequenza con cui il pattern si è verificato in passato, la durata del calo e la sua entità.

Un calo improvviso fa sì che il gestore della scalabilità automatica predittiva modifichi la sua previsione.

Figura 4. Un calo improvviso fa sì che il gestore della scalabilità automatica predittiva modifichi la sua previsione.

Nella Figura 4, la linea gialla tratteggiata mostra la previsione al momento t1. Tuttavia, l'utilizzo effettivo della CPU, come mostrato dalla linea blu solida, è sceso al di sotto di quanto previsto. La linea blu tratteggiata mostra la previsione aggiornata, che è stata aggiustata automaticamente dopo aver osservato un utilizzo inferiore alle previsioni. Di conseguenza, il gestore della scalabilità automatica rimuove le istanze dopo il periodo di stabilizzazione standard.

Dati storici

Il gestore della scalabilità automatica predittiva richiede almeno 3 giorni di carico storico per iniziare a fare le previsioni. Se hai un nuovo gruppo MIG privo di dati storici, Compute Engine esegue il ridimensionamento del gruppo in modo reattivo utilizzando i dati in tempo reale finché non diventano disponibili dati storici sufficienti. Dopo 3 giorni, man mano che Compute Engine raccoglie ulteriori dati di utilizzo, le previsioni migliorano.

Se aggiorni l'applicazione creando un nuovo gruppo di istanze gestite ed eliminando quello precedente, ad esempio un deployment blu/verde, il nuovo gruppo di istanze gestite ha bisogno di 3 giorni di dati storici sul carico prima che l'autoscaling predittivo possa iniziare a generare nuovamente le previsioni. Se vuoi conservare la cronologia dei caricamenti nei diversi gruppi di istanze gestite (MIG) in modo che le previsioni possano iniziare immediatamente quando crei un nuovo gruppo, contattaci per richiedere le istruzioni per partecipare a una preview privata.

Passaggi successivi