Scalabilità automatica dei gruppi di istanze


I gruppi di istanze gestite (MIG) offrono funzionalità di scalabilità automatica che consentono di aggiungere o eliminare automaticamente le istanze di macchine virtuali (VM) da un gruppo di istanze gestite in base agli incrementi o alle diminuzioni del carico. La scalabilità automatica consente alle app di gestire agevolmente l'aumento del traffico e di ridurre i costi quando il fabbisogno di risorse è inferiore. Devi definire i criteri di scalabilità automatica e il programma di scalabilità automatica eseguirà il ridimensionamento in base al carico misurato e alle opzioni configurate.

La scalabilità automatica funziona aggiungendo più VM al MIG quando il carico è maggiore (scaling out) ed eliminando le VM quando il fabbisogno di VM è ridotto (scaling in).

Prerequisiti

Il gestore della scalabilità automatica utilizza Compute Engine Service Agent per aggiungere e rimuovere le istanze nel gruppo. Google Cloud crea automaticamente questo account di servizio, nonché il relativo vincolo del criterio IAM al ruolo Agente di servizio Compute Engine, quando l'API Compute Engine è abilitata.

Se nel tuo progetto manca questo account, ad esempio se lo hai rimosso, puoi aggiungerlo manualmente:

Console

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai a IAM

  2. Fai clic su Concedi l'accesso.

  3. Nel campo Nuove entità, inserisci service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com.

  4. Seleziona il ruolo Agente di servizio Compute Engine.

  5. Fai clic su Salva.

gcloud

gcloud projects add-iam-policy-binding PROJECT_ID \
   --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
   --role roles/compute.serviceAgent

Concetti fondamentali

L'autoscaling utilizza i seguenti concetti e servizi fondamentali.

Gruppi di istanze gestite

La scalabilità automatica è una funzionalità dei gruppi di istanze gestite (MIG). Un gruppo di istanze gestite è una raccolta di istanze di macchine virtuali (VM) che vengono create da un modello di istanza comune. Un regolatore della scalabilità aggiunge o elimina istanze da un gruppo di istanze gestite in base al relativo criterio di scalabilità automatica. Sebbene Compute Engine disponga sia di gruppi di istanze gestite sia di gruppi di istanze non gestite, solo i gruppi di istanze gestite possono essere utilizzati con un'autoscalabilità.

Per comprendere la differenza tra un gruppo di istanze gestite e un gruppo di istanze non gestito, consulta Gruppi di istanze.

Per scoprire come creare un gruppo di istanze gestite, consulta Creare gruppi di istanze gestite.

Criterio di scalabilità automatica

Quando definisci un criterio di scalabilità automatica per il gruppo, specifichi uno o più indicatori utilizzati dal gestore della scalabilità per scalare il gruppo. Quando imposti più indicatori in un criterio, il gestore della scalabilità automatica calcola il numero consigliato di VM per ogni indicatore e imposta la dimensione consigliata del gruppo sul numero più grande.

Un criterio di scalabilità automatica deve sempre avere almeno un indicatore di scalabilità. Quando attivi la scalabilità automatica in un gruppo di istanze gestite, per impostazione predefinita il gestore della scalabilità automatica aggiunge un indicatore di utilizzo della CPU. Puoi modificare questo indicatore predefinito o rimuovere e aggiungere altri indicatori nel criterio.

Le sezioni seguenti forniscono una panoramica degli indicatori basati sulle metriche di utilizzo target e sugli indicatori basati sulle pianificazioni.

Metriche di utilizzo target

Puoi usare la scalabilità automatica in base a una o più delle seguenti metriche che riflettono il carico del gruppo di istanze:

  • Utilizzo CPU medio
  • Capacità di gestione del bilanciamento del carico HTTP
  • Metriche di Cloud Monitoring

Il gestore della scalabilità automatica raccoglie continuamente le informazioni sull'utilizzo in base alla metrica di utilizzo selezionata, confronta l'utilizzo effettivo con l'utilizzo target desiderato e utilizza queste informazioni per determinare se il gruppo deve rimuovere istanze (fare lo scale in) o aggiungerne (scala out).

Il livello di utilizzo target è il livello a cui vuoi mantenere le tue istanze di macchine virtuali (VM). Ad esempio, se esegui la scalabilità in base all'utilizzo della CPU, puoi impostare il livello di utilizzo target sul 75% e il gestore della scalabilità automatica manterrà l'utilizzo della CPU del gruppo di istanze specificato al 75% o quasi. Il livello di utilizzo per ogni metrica viene interpretato in modo diverso in base al criterio di scalabilità automatica.

Per ulteriori informazioni sulla scalabilità in base alle metriche di utilizzo target, consulta le seguenti pagine:

Pianificazioni

Puoi utilizzare la scalabilità automatica basata sulla pianificazione per allocare la capacità in base ai carichi previsti. Puoi avere fino a 128 pianificazioni di scalabilità per gruppo di istanze. Per ogni pianificazione della scalabilità, specifica quanto segue:

  • Capacità: istanze VM minime richieste
  • Pianificazione: ora di inizio, durata e periodicità (ad es. una volta, ogni giorno, ogni settimana o ogni mese)

Ogni pianificazione di scalabilità è attiva dall'ora di inizio e per la durata configurata. Durante questo periodo, il gestore della scalabilità automatica esegue la scalabilità del gruppo in modo da avere almeno il numero di istanze definito dalla pianificazione della scalabilità.

Per ulteriori informazioni, consulta la sezione Scalabilità in base alle pianificazioni.

Periodo di inizializzazione

Il periodo di inizializzazione, precedentemente noto come periodo di attesa, è la durata necessaria per l'inizializzazione delle applicazioni sulle istanze VM. Durante l'inizializzazione di un'applicazione in un'istanza, i dati di utilizzo dell'istanza potrebbero non riflettere circostanze normali. Di conseguenza, il gestore della scalabilità automatica utilizza il periodo di inizializzazione per le decisioni di scalabilità nei seguenti modi:

  • Per le decisioni di riduzione, il gestore della scalabilità automatica prende in considerazione i dati di utilizzo di tutte le istanze, anche di quelle che si trovano ancora nel periodo di inizializzazione. Il gestore della scalabilità automatica consiglia di rimuovere le istanze se l'utilizzo medio di tutte le istanze è inferiore all'utilizzo target.
  • Per le decisioni di scale out, il gestore della scalabilità automatica ignora i dati di utilizzo delle istanze che sono ancora nel periodo di inizializzazione.
  • Se attivi la modalità predittiva, il periodo di inizializzazione informa il gestore della scalabilità automatica predittiva di eseguire lo scale out prima del carico previsto, in modo che le applicazioni vengano inizializzate quando arriva il carico. Ad esempio, se imposti il periodo di inizializzazione su 300 secondi, la scalabilità automatica predittiva crea le VM 5 minuti prima del carico previsto.

Per impostazione predefinita, il periodo di inizializzazione è di 60 secondi. I tempi di inizializzazione effettivi variabili a causa di numerosi fattori. Ti consigliamo di verificare il tempo necessario per l'inizializzazione dell'applicazione. Per farlo, crea un'istanza e misura il tempo del processo di avvio dal momento in cui l'istanza diventa RUNNING fino a quando l'applicazione è pronta.

Se imposti un valore del periodo di inizializzazione molto più lungo del tempo necessario per l'inizializzazione di un'istanza, il gestore della scalabilità automatica potrebbe ignorare i dati di utilizzo legittimi e sottostimare le dimensioni richieste del gruppo, causando un ritardo nello scale out.

Periodo di stabilizzazione

Gli indicatori di scalabilità automatica come l'utilizzo della CPU non sono molto stabili e possono cambiare rapidamente. Quando il carico aumenta e diminuisce, il gestore della scalabilità automatica deve stabilizzare l'indicatore per evitare l'eliminazione e la creazione continue di VM. Lo strumento di scalabilità automatica stabilizza un indicatore mantenendo una capacità sufficiente delle VM per gestire il picco di carico osservato durante il periodo di stabilizzazione.

Il periodo di stabilizzazione è uguale a 10 minuti o al periodo di inizializzazione impostato, a seconda del periodo più lungo. Il periodo di stabilizzazione viene utilizzato solo per le decisioni di riduzione quando il gestore della scalabilità automatica deve eliminare le VM.

Quando il carico diminuisce, lo strumento di scalabilità automatica non elimina immediatamente le VM. Il gestore della scalabilità automatica continua a monitorare la capacità necessaria per la durata del periodo di stabilizzazione ed elimina le VM solo quando è disponibile una capacità sufficiente per soddisfare il picco di carico. Ciò potrebbe sembrare un ritardo nel ridimensionamento, ma è una funzionalità integrata della scalabilità automatica.

Se l'inizializzazione dell'applicazione su una nuova VM richiede più di 10 minuti, il gestore della scalabilità automatica utilizza il periodo di inizializzazione anziché i 10 minuti predefiniti di stabilizzazione per attendere che la VM possa essere eliminata. In questo modo, la decisione del gestore della scalabilità automatica di eliminare la VM tiene conto del tempo necessario per recuperare la capacità di pubblicazione.

Quando il carico aumenta, il gestore della scalabilità automatica non utilizza il periodo di stabilizzazione e crea immediatamente tutte le VM necessarie per soddisfare la domanda.

Modalità di scalabilità automatica

Se devi esaminare o configurare il gruppo senza interferenze da parte delle operazioni di scalabilità automatica, puoi disattivare o limitare temporaneamente le attività di scalabilità automatica. La configurazione dell'autoscalabilità persiste quando è disattivata o limitata e tutte le attività di scalabilità automatica riprendono quando la riattivi o rimuovi la limitazione.

Scalabilità automatica predittiva

Se attivi la scalabilità automatica predittiva per ottimizzare il gruppo di istanze gestite in base alla disponibilità, il gestore della scalabilità automatica prevede il carico futuro in base ai dati storici e esegue la scalabilità in uscita di un gruppo di istanze gestite in anticipo rispetto al carico previsto, in modo che le nuove istanze siano pronte all'uso quando si verifica il carico.

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.

Per ulteriori informazioni, consulta la sezione Scalabilità in base alle previsioni.

Controlli di scale in

Se sono necessari molti minuti per l'inizializzazione dei tuoi workload (ad esempio a causa di attività di installazione lunghe), puoi ridurre il rischio di latenza di risposta causata da eventi di scale in improvvisi configurando i controlli di scale in. Nello specifico, se prevedi picchi di carico subito dopo i cali, puoi limitare la frequenza di ridimensionamento in modo da impedire alla scalabilità automatica di ridurre le dimensioni di un gruppo di istanze gestite con un numero di istanze VM superiore a quello tollerato dal tuo carico di lavoro.

Non devi configurare i controlli di scale in se l'applicazione si inizializza abbastanza rapidamente da rilevare picchi di carico durante il scale out.

Per configurare i controlli di riduzione, imposta le seguenti proprietà nel criterio di scalabilità automatica.

  • Riduzione massima consentita. Il numero di istanze VM che il tuo carico di lavoro può permettersi di perdere (rispetto alle sue dimensioni di picco) entro la finestra temporale finale specificata. Utilizza questo parametro per limitare la scalabilità del gruppo in modo da poter comunque gestire un probabile picco di carico finché non vengono avviate altre istanze. Più piccola è la riduzione massima consentita, più tempo occorre per fare lo scale in il gruppo.

  • Finestra temporale finale. La cronologia in cui il gestore della scalabilità automatica monitora le dimensioni di picco richieste dal tuo carico di lavoro. Il ridimensionamento automatico non verrà eseguito al di sotto della riduzione massima consentita sottratta alla dimensione di picco osservata in questo periodo. Puoi utilizzare questo parametro per definire il tempo che deve attendere il gestore della scalabilità automatica prima di rimuovere le istanze, come definito dalla riduzione massima consentita. Con un intervallo di tempo più lungo, il gestore della scalabilità automatica prende in considerazione più picchi storici, rendendo la scalabilità più conservativa e stabile.

Per ulteriori informazioni, consulta Configurare i controlli di scale in e Informazioni sulle decisioni del gestore della scalabilità automatica.

La dimensione consigliata del gruppo è il numero consigliato di VM del gestore della scalabilità automatica che il gruppo di istanze gestite deve mantenere, in base al carico di picco osservato negli ultimi 10 minuti. Questi ultimi 10 minuti sono definiti periodo di stabilizzazione. Le dimensioni consigliate vengono ricalcolate continuamente. Se imposti un criterio di scalabilità automatica con controlli di scalabilità verso il basso, le dimensioni consigliate sono vincolate dai controlli di scalabilità verso il basso.

Limitazioni

Che cosa succede durante la riparazione automatica

La scalabilità automatica funziona indipendentemente dal riparazione automatica. Se configuri la riparazione automatica per il gruppo e un'istanza non supera il controllo di integrità, il gruppo di istanze gestite tenta di ricrearla. Mentre un'istanza viene rielaborata dal gruppo di istanze gestite, il numero di istanze in esecuzione nel gruppo potrebbe essere inferiore al numero minimo di istanze specificato per il gruppo (autoscalingPolicy.minNumReplicas).

Prezzi

Non è previsto alcun costo aggiuntivo per la configurazione di un criterio di scalabilità automatica. Lo strumento di scalabilità automatica aggiunge o elimina dinamicamente le istanze VM, pertanto ti vengono addebitate solo le risorse utilizzate dal tuo gruppo di istanze gestite (MIG). Puoi controllare il costo delle risorse configurando il numero minimo e massimo di istanze nel criterio di scalabilità automatica. Per informazioni sui prezzi di Compute Engine, consulta Prezzi.

Passaggi successivi

  1. Scopri come funziona la scalabilità automatica in un gruppo di istanze gestite regionale.
  2. Se non hai un gruppo di istanze gestite, consulta la sezione su come creare un gruppo di istanze gestite.
  3. Crea un gestore della scalabilità automatica che esegue la scalabilità in base a:

  4. Gestisci l'autoscalabilità, ad esempio per ottenere informazioni, configurare i controlli di riduzione o limitarla temporaneamente.