Scalabilità basata sulle previsioni

Puoi configurare la scalabilità automatica per un gruppo di istanze gestite in modo da 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 a modifiche in tempo reale potrebbe non aumentare la capacità dell'applicazione in modo abbastanza rapido. Ad esempio, se si verifica un notevole aumento del carico (ad esempio al primo risveglio degli utenti la mattina), alcuni utenti potrebbero riscontrare ritardi durante l'inizializzazione dell'applicazione in nuove istanze.

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

Quando abiliti la scalabilità automatica predittiva, Compute Engine prevede il carico futuro in base alla cronologia del gruppo di istanze gestite e fa lo scale out del gruppo di istanze gestite in anticipo rispetto al carico previsto, in modo che le nuove istanze siano pronte per essere gestite all'arrivo del carico. Senza la scalabilità automatica predittiva, un gestore della scalabilità automatica può scalare un gruppo solo in modo reattivo, in base alle modifiche osservate nel carico in tempo reale. Se la scalabilità automatica predittiva è abilitata, il gestore della scalabilità automatica lavora con dati in tempo reale e con dati storici per coprire sia il carico attuale che quello previsto. Per maggiori 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 di riga di comando di questa guida, installa Google Cloud CLI o avvia Cloud Shell.
  • Scopri i nozioni di base del gestore della scalabilità automatica.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.

    Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:

    Console

    Quando utilizzi la console Google Cloud per accedere ai servizi e alle API di Google Cloud, non devi configurare l'autenticazione.

    gcloud

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    2. Imposta una regione e una zona predefinite.

    REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.

      Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init

Prezzi

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

Limitazioni

  • La scalabilità automatica predittiva funziona solo se l'utilizzo della CPU è la 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 pattern di caricamento settimanali e giornalieri. Compute Engine non prevede eventi mensili, annuali o una tantum e non prevede pattern di carico inferiori a 10 minuti. Puoi utilizzare la scalabilità automatica basata sulla pianificazione per richiedere capacità per pattern di caricamento 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 superiore a due 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 scale out, ovvero quando viene eseguito il provisioning delle nuove VM, ma non ancora pubblicate. La scalabilità automatica predittiva tiene conto dei tempi di inizializzazione dell'applicazione e fa lo scale out prima dell'aumento dell'utilizzo previsto, contribuendo a garantire che il numero di istanze di pubblicazione disponibili sia sufficiente per l'utilizzo di destinazione.

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

Abilitazione e disabilitazione della scalabilità automatica predittiva

Puoi abilitare la scalabilità automatica predittiva durante la scalabilità in base all'utilizzo della CPU. Per saperne di più sulla configurazione della scalabilità automatica basata su CPU, consulta Scalabilità basata sull'utilizzo della CPU.

Se il gruppo di istanze gestite non ha una cronologia del gestore della scalabilità automatica, potrebbero essere necessari 3 giorni prima che l'algoritmo predittivo abbia effetto sul gestore della scalabilità automatica. Durante questo periodo, il gruppo scala in base solo ai dati in tempo reale. Dopo 3 giorni, il gruppo inizia a scalare utilizzando le previsioni. Man mano che viene raccolto un carico storico, il gestore della scalabilità automatica predittiva comprende meglio i pattern di carico e le sue previsioni migliorano. Compute Engine utilizza fino a 3 settimane della cronologia del carico del 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 della panoramica del gruppo.

  3. Fai clic su Modifica.

  4. Se non esiste alcuna 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 abilitare la scalabilità automatica.

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

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

    1. Fai clic su Aggiungi metrica.
    2. In Tipo di metrica, seleziona Utilizzo CPU.
    3. Inserisci la metrica Utilizzo CPU target desiderata. Questo valore viene trattato come percentuale. Ad esempio, per l'utilizzo della CPU del 75%, inserisci 75.
    4. In Scalabilità automatica predittiva, seleziona Ottimizza per la disponibilità per abilitare la scalabilità automatica predittiva.
      • In alternativa, se vuoi disabilitare l'algoritmo predittivo e utilizzare solo il gestore della scalabilità automatica in tempo reale, seleziona Off.
    5. Fai clic su Fine.
  8. In Periodo di inizializzazione, specifica il tempo necessario per l'inizializzazione dell'applicazione su una nuova istanza. Questa impostazione indica al gestore della scalabilità automatica predittiva di fare lo scale out ulteriormente in anticipo rispetto al carico previsto, in modo che le applicazioni vengano inizializzate all'arrivo del carico.

  9. Fai clic su Salva.

gcloud

Quando imposti o aggiorni il gestore della scalabilità automatica di un gruppo di istanze gestite, includi il flag --cpu-utilization-predictive-method 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 su CPU non è ancora abilitata per il gruppo, devi abilitarla. Puoi utilizzare il comando set-autoscaling per configurare da zero i criteri di scalabilità automatica di un gruppo. Ad esempio, il comando seguente mostra come configurare la scalabilità automatica con le impostazioni seguenti:

  • Scalabilità automatica predittiva abilitata.
  • Utilizzo target della CPU del 75%.
  • Il numero massimo di istanze impostato su 20.
  • Un periodo di inizializzazione (--cool-down-period) impostato su 5 minuti. Questa impostazione indica al gestore della scalabilità automatica predittiva di fare lo scale out 5 minuti prima del carico previsto, in modo che le applicazioni vengano inizializzate all'arrivo del 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 abilitare l'algoritmo predittivo:

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

REST

Quando crei o aggiorni un gestore della scalabilità automatica, 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 dispone di una configurazione di scalabilità automatica esistente:

Se il gruppo dispone già di una configurazione di scalabilità automatica:

Se la scalabilità automatica basata su CPU non è ancora abilitata per il gruppo, devi abilitarla.

Ad esempio, la seguente richiesta corregge una risorsa del gestore della scalabilità automatica esistente per abilitare la scalabilità automatica basata su CPU con le seguenti impostazioni:

  • Scalabilità automatica predittiva abilitata.
  • Utilizzo target della CPU del 75%.
  • Il numero massimo di istanze impostato su 20.
  • Un periodo di inizializzazione (coolDownPeriodSec) impostato su 5 minuti. Questa impostazione indica al gestore della scalabilità automatica predittiva di fare lo scale out 5 minuti prima del carico previsto, in modo che le applicazioni vengano inizializzate all'arrivo del 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
  }
}

Controllo dell'abilitazione del gestore della scalabilità automatica predittiva in corso...

Per visualizzare l'attuale configurazione di scalabilità automatica di un gruppo di istanze gestite, consulta Recupero delle proprietà di un gruppo di istanze gestite.

Configurazione della scalabilità automatica predittiva

Per saperne di più su come configurare l'utilizzo target, il numero minimo e massimo di istanze e il periodo di inizializzazione, consulta Scalabilità basata sull'utilizzo della CPU. Quando configuri queste opzioni, il gestore della scalabilità automatica predittiva mantiene tutte le istanze al livello di utilizzo target che hai impostato, entro i limiti minimo e massimo del gruppo, esattamente 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 sull'anticipo con cui il gestore della scalabilità automatica predittiva avvia nuove istanze prima dell'aumento previsto del carico, in modo che l'applicazione sia pronta per essere utilizzata all'arrivo del carico.

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

Per capire se la scalabilità automatica predittiva potrebbe migliorare la disponibilità della tua applicazione, puoi confrontare le prestazioni dell'attuale configurazione della scalabilità automatica basata su CPU del tuo gruppo con la scalabilità automatica predittiva. Non è necessario abilitare la scalabilità automatica predittiva per eseguire il confronto.

Per ulteriori informazioni sui carichi di lavoro idonei per la scalabilità automatica predittiva, consulta Carichi di lavoro idonei.

Controllo di sovraccarichi

Il gruppo di istanze gestite con scalabilità automatica è sovraccarico quando l'utilizzo medio della CPU supera il target. Per verificare se la configurazione della scalabilità automatica ha causato il sovraccarico di VM negli 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 cui è configurata la scalabilità automatica basata sulla CPU. Viene visualizzata la pagina di riepilogo del gruppo.

  3. Fai clic su Modifica.

  4. Nella sezione Scalabilità automatica, in Metriche 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 configurazione del gestore della scalabilità automatica negli ultimi 7 giorni.
    • Con la scalabilità automatica predittiva impostata su "Ottimizza per la disponibilità": mostra le prestazioni del gestore della scalabilità automatica se la scalabilità automatica predittiva fosse stata abilitata negli ultimi 7 giorni.

Puoi utilizzare il "Numero di VM utilizzate al giorno" come proxy per i costi. Ad esempio, per ridurre il numero giornaliero di VM sovraccaricate, il gestore della scalabilità automatica predittiva potrebbe creare le VM prima ed eseguirle per più tempo, il che comporta costi aggiuntivi.

Monitoraggio e simulazione della scalabilità automatica predittiva

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

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

  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 cui è configurata la scalabilità automatica basata sulla CPU. Viene visualizzata la pagina di riepilogo del gruppo.

  3. Fai clic su Monitoring 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 del gruppo e le dimensioni previste.

  5. Puoi selezionare un intervallo di tempo diverso per visualizzare una cronologia più completa o aumentare lo zoom su un periodo in cui la domanda è cresciuta 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 gestore della scalabilità automatica predittiva prevede la metrica di scalabilità in base alle tendenze storiche della metrica. Le previsioni vengono ricalcolate a intervalli di pochi minuti, in modo che il gestore della scalabilità automatica possa adattare rapidamente la previsione alle variazioni del carico molto recenti. Il gestore della scalabilità automatica predittiva ha bisogno di almeno 3 giorni di cronologia in base ai quali determinare un modello di utilizzo rappresentativo dei servizi prima che possa fornire previsioni. Compute Engine utilizza fino a 3 settimane della cronologia del carico del 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 target di utilizzo in base a numerosi fattori, tra cui:

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

In base a questi fattori, il gestore della scalabilità automatica predittiva fa lo scale out del gruppo prima della domanda prevista.

Confronto delle VM di pubblicazione con e senza scalabilità automatica predittiva.

Figura 1. Confronto delle VM di pubblicazione 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: sono state aggiunte altre VM. Tuttavia, per le applicazioni con tempi di inizializzazione lunghi, la linea grigia indica che le VM aggiunte richiedono più tempo prima di essere pronte per essere gestite, il che può comportare un numero di VM di pubblicazione non sufficiente per soddisfare la domanda. Se la scalabilità automatica predittiva è abilitata, viene preso in considerazione l'aumento previsto della domanda e i lunghi tempi di inizializzazione delle applicazioni: il gestore della scalabilità automatica risponde aggiungendo le VM prima, ottenendo un numero sufficiente di VM di gestione. Puoi configurare l'anticipo con cui vengono aggiunte le nuove istanze impostando il periodo di inizializzazione.

Dati sull'utilizzo in tempo reale

Il gestore della scalabilità automatica predittiva non è in grado di determinare un pattern per tutte le future modifiche di utilizzo in base ai dati storici, perciò funziona perfettamente anche con i dati in tempo reale. Ad esempio, un evento di notizie imprevisto potrebbe contribuire a un picco di utilizzo che non si sarebbe potuto prevedere in base alla sola cronologia. Per gestire queste variazioni imprevedibili del carico, il gestore della scalabilità automatica predittiva risponde come segue:

  • Adatta le sue previsioni: le previsioni vengono ricalcolate costantemente, nel giro di pochi minuti, quindi si adattano per incorporare i dati più recenti. Il momento esatto degli adattamenti ai nuovi pattern dipende, tra le altre cose, da quanto è ripetibile il nuovo pattern e da quanto è grande la differenza tra il nuovo pattern e le previsioni passate.
  • cede ai dati in tempo reale: il numero di istanze consigliato dal gestore della scalabilità automatica, basato sui valori della metrica in tempo reale, è sempre sufficiente per soddisfare l'utilizzo target del gruppo. Se il valore attuale di un indicatore in tempo reale è maggiore della previsione, il valore attuale dell'indicatore ha la priorità sulla previsione. Di conseguenza, i gruppi di istanze gestite in cui è abilitata la scalabilità automatica predittiva hanno sempre più disponibilità rispetto ai gruppi di istanze gestite in cui non è abilitata.

Due grafici mostrano in che modo le previsioni si adattano all'utilizzo effettivo della CPU.

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

Nella figura 2, la linea tratteggiata gialla mostra la previsione in t1. Tuttavia, l'utilizzo effettivo della CPU, come mostrato dalla linea blu continua, è diverso da quello previsto. Nel grafico a sinistra, l'utilizzo effettivo della CPU è più elevato del previsto. Nel grafico a destra, l'utilizzo effettivo della CPU è inferiore al previsto. La linea tratteggiata blu mostra la previsione modificata.

Picchi brevi e imprevedibili

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

Un breve picco imprevedibile fa sì che il gestore della scalabilità automatica reagisca in tempo reale.

Figura 3. Un breve picco imprevedibile fa sì che il gestore della scalabilità automatica 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 gestore della scalabilità automatica monitora sempre i dati in tempo reale, aggiunge istanze per soddisfare il picco. La linea nera continua mostra l'aggiunta reattiva di VM da parte del gestore della scalabilità automatica in risposta al picco. La linea grigia continua mostra il numero di VM di gestione. La linea grigia è in ritardo rispetto alla linea nera a causa del tempo di inizializzazione. In questo scenario, il gruppo è temporaneamente sovraccarico.

Cali improvvisi

Un altro tipo di cambiamento imprevedibile nell'utilizzo è un calo improvviso, ad esempio un calo causato da un errore in una parte dello stack delle applicazioni. In questo caso, il numero di istanze inizialmente segue la previsione. Tuttavia, nel tempo, la previsione si adatta all'utilizzo inferiore alle previsioni, determinando uno scale in. Il momento esatto di questa correzione dipende da numerosi fattori, tra cui la frequenza con cui il modello si è verificato in passato, la durata del calo e la profondità del calo.

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

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

Nella figura 4, la linea tratteggiata gialla mostra la previsione in t1. Tuttavia, l'utilizzo effettivo della CPU, come mostrato dalla linea blu continua, è sceso al di sotto del previsto. La linea tratteggiata blu mostra la previsione aggiornata, che è stata regolata automaticamente dopo aver osservato un utilizzo inferiore alle previsioni. In questo modo, 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 avviare le previsioni. Se hai un nuovo gruppo di istanze gestite privo di dati storici, Compute Engine scala il tuo gruppo in modo reattivo utilizzando dati in tempo reale finché non sono disponibili dati storici sufficienti. Dopo 3 giorni, man mano che Compute Engine raccoglie dati aggiuntivi sull'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 sul carico storico prima che la scalabilità automatica predittiva possa ricominciare a generare previsioni. Se vuoi conservare la cronologia del carico nei gruppi di istanze gestite in modo che le previsioni possano iniziare immediatamente quando crei un nuovo gruppo di istanze gestite, contattaci per richiedere istruzioni su come partecipare a un'anteprima privata.

Passaggi successivi