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 aumenti o alle riduzioni 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. Sei tu a definire i criteri di scalabilità automatica e il gestore della scalabilità automatica esegue la scalabilità automatica in base al carico misurato e alle opzioni configurate.

La scalabilità automatica funziona aggiungendo più VM al tuo gruppo di istanze gestite quando c'è più carico (scalabilità ridotta) ed eliminando le VM quando il fabbisogno di VM è ridotto (scalabilità in entrata).

Prerequisiti

Il gestore della scalabilità automatica utilizza l'agente di servizio Compute Engine per aggiungere e rimuovere istanze nel gruppo. Quando l'API Compute Engine è abilitata, Google Cloud crea automaticamente questo account di servizio e la relativa associazione di criteri IAM al ruolo Agente di servizio Compute Engine.

Se nel tuo progetto non è presente questo account, ad esempio se l'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

La scalabilità automatica utilizza i seguenti concetti e servizi fondamentali.

gruppi di istanze gestite

La scalabilità automatica è una funzionalità dei gruppi di istanze gestite. Per gruppo di istanze gestite si intende una raccolta di istanze di macchine virtuali (VM) create a partire da un modello di istanza comune. Un gestore della scalabilità automatica aggiunge o elimina istanze da un gruppo di istanze gestite in base ai criteri di scalabilità automatica del gruppo. Anche se Compute Engine ha gruppi di istanze gestite e non gestite, solo i gruppi di istanze gestite possono essere utilizzati con un gestore della scalabilità automatica.

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

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

Criterio di scalabilità automatica

Quando definisci un criterio di scalabilità automatica per il tuo gruppo, devi specificare uno o più indicatori utilizzati dal gestore della scalabilità automatica 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ù alto.

Un criterio di scalabilità automatica deve avere sempre 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 seguenti sezioni forniscono una panoramica degli indicatori basati sulle metriche di utilizzo target e sugli indicatori basati sulle pianificazioni.

Metriche di utilizzo target

Puoi scalare automaticamente 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 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 le istanze (fare lo scale in) o aggiungere istanze (scale out).

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

Per ulteriori informazioni sulla scalabilità basata sulle metriche di utilizzo target, consulta le seguenti pagine:

Pianificazioni

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

  • Capacità: il numero minimo di istanze VM richieste
  • Pianificazione: ora di inizio, durata e ricorrenza (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 scala il gruppo in modo che abbia almeno il numero di istanze definito dalla pianificazione di scalabilità.

Per saperne di più, consulta Scalabilità basata su pianificazioni.

Periodo di inizializzazione

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

  • Per le decisioni di scale in, il gestore della scalabilità automatica prende in considerazione i dati sull'utilizzo di tutte le istanze, anche un'istanza che è 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 sull'utilizzo delle istanze che sono ancora nel periodo di inizializzazione.
  • Se abiliti la modalità predittiva, il periodo di inizializzazione comunica 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. Ad esempio, se imposti il periodo di inizializzazione su 300 secondi, il gestore della 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 variano a causa di numerosi fattori. Ti consigliamo di verificare il tempo necessario per l'inizializzazione dell'applicazione. Per farlo, crea un'istanza e pianifica il processo di avvio da quando 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 potrebbe 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. Mentre il carico aumenta o diminuisce, il gestore della scalabilità automatica deve stabilizzare l'indicatore per evitare l'eliminazione e la creazione continue delle VM. Il gestore della scalabilità automatica stabilizza un segnale mantenendo capacità VM sufficiente per gestire il carico di picco osservato durante il periodo di stabilizzazione.

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

Quando il carico diminuisce, il gestore della scalabilità automatica non elimina subito le VM. Il gestore della scalabilità automatica mantiene la capacità di monitoraggio necessaria per l'intera durata del periodo di stabilizzazione ed elimina le VM solo quando la capacità è sufficiente per soddisfare il carico di picco. Potrebbe sembrare un ritardo nell'applicazione della scalabilità, 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 fino all'eliminazione della VM. Ciò garantisce che la decisione del gestore della scalabilità automatica di eliminare la VM tenga conto del tempo necessario per recuperare la capacità di gestione.

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 hai bisogno di esaminare o configurare il tuo gruppo senza interferenze da parte delle operazioni del gestore della scalabilità automatica, puoi disattivare o limitare le attività di scalabilità automatica temporaneamente. La configurazione del gestore della scalabilità automatica persiste anche quando è disattivato o limitato e tutte le attività di scalabilità automatica riprende quando lo riattivi o rimuovi la limitazione.

Scalabilità automatica predittiva

Se abiliti la scalabilità automatica predittiva per ottimizzare il gruppo di istanze gestite per la disponibilità, il gestore della scalabilità automatica prevede il carico futuro in base ai dati storici e fa lo scale out di un 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.

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 2 minuti.
  • Il carico di lavoro varia in modo prevedibile con cicli giornalieri o settimanali.

Per saperne di più, consulta Scalabilità basata sulle previsioni.

Controlli di scale in

Se l'inizializzazione dei carichi di lavoro richiede molti minuti (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. In particolare, se prevedi che i picchi di carico seguiranno subito dopo i cali, puoi limitare la percentuale di scale in per impedire alla scalabilità automatica di ridurre le dimensioni di un gruppo di istanze gestite di un numero di istanze VM superiore a quello tollerato dal tuo carico di lavoro.

Non è necessario configurare i controlli di scale in se l'applicazione viene inizializzata abbastanza rapidamente da rilevare picchi di carico durante lo scale out.

Per configurare i controlli di scale in, 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 (dalle dimensioni massime) entro il periodo di tempo finale specificato. Utilizza questo parametro per limitare la quantità di scale in del gruppo in modo da poter continuare a gestire un probabile picco di carico finché non inizi a gestire altre istanze. Più piccola imposti la riduzione massima consentita, più tempo sarà necessario per lo fare lo scale in del gruppo.

  • Finestra temporale finale. La cronologia all'interno della quale il gestore della scalabilità automatica monitora le dimensioni massime richieste dal tuo carico di lavoro. Il gestore della scalabilità automatica non ridimensionerà al di sotto della riduzione massima consentita sottratta dalle dimensioni massime osservate in questo periodo. Puoi utilizzare questo parametro per definire il tempo di attesa del gestore della scalabilità automatica prima di rimuovere le istanze, come definito dalla riduzione massima consentita. Con una finestra temporale più lunga, il gestore della scalabilità automatica prende in considerazione i picchi storici, rendendo lo scale in più conservativo e stabile.

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

La dimensione consigliata del gruppo è il numero consigliato dal gestore della scalabilità automatica di VM che il gruppo di istanze gestite deve mantenere, in base al picco di carico osservato negli ultimi 10 minuti. Questi ultimi 10 minuti sono indicati come periodo di stabilizzazione. Le dimensioni consigliate vengono ricalcolate costantemente. Se imposti un criterio di scalabilità automatica con controlli di scale in, la dimensione consigliata è vincolata dai controlli di scale in.

Limitazioni

  • Non puoi utilizzare la scalabilità automatica con i seguenti gruppi di istanze, che non consentono al gestore della scalabilità automatica di creare o eliminare VM in base alla domanda:

  • Non puoi creare istanze VM con nomi specifici mentre la scalabilità automatica è attiva.

  • Non utilizzare la scalabilità automatica di Compute Engine con i gruppi di istanze gestite di proprietà di Google Kubernetes Engine. Per i gruppi di Google Kubernetes Engine, utilizza invece la scalabilità automatica dei cluster. Se non sai con certezza se un gruppo di istanze gestite fa parte di un cluster GKE, cerca il prefisso gke nel nome del gruppo di istanze gestite. Ad esempio, gke-test-1-3-default-pool-eadji9ah.

Cosa succede durante la riparazione automatica

La scalabilità automatica funziona in modo indipendente dalla autohealing. Se configuri la riparazione automatica per il tuo gruppo e un'istanza non supera il controllo di integrità, il gruppo di istanze gestite tenterà di ricreare l'istanza. Mentre un'istanza viene ricreata 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 sono previsti costi aggiuntivi per la configurazione di un criterio di scalabilità automatica. Il gestore della scalabilità automatica aggiunge o elimina dinamicamente le istanze VM, quindi ti vengono addebitate solo le risorse utilizzate dal gruppo di istanze gestite. Puoi controllare i costi 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 a livello di regione.
  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 in grado di scalare:

  4. Gestire il gestore della scalabilità automatica, ad esempio, per ottenerne informazioni, configurare i controlli di scale in o limitarlo temporaneamente.