Utilizzo della scalabilità automatica per applicazioni altamente scalabili


Questo tutorial spiega come utilizzare la scalabilità automatica per regolare automaticamente il numero di istanze VM che ospitano la tua applicazione, in modo che quest'ultima si adatti a quantità di traffico variabili.

Per utilizzare la scalabilità automatica, ospita la tua applicazione in un gruppo di istanze gestite. Un gruppo di istanze gestite è una raccolta di istanze che eseguono tutte la stessa applicazione e possono essere gestite come una singola entità. Quando per un gruppo di istanze gestite è abilitata la scalabilità automatica, il numero di VM nel gruppo aumenta automaticamente (Scale out) o diminuisce automaticamente in base al valore target specificato per il criterio di scalabilità automatica.

Questo tutorial include passaggi dettagliati per avviare un'applicazione web su un gruppo di istanze gestite, impostare la scalabilità automatica, configurare l'accesso alla rete e osservare la scalabilità automatica simulando picchi e cali del carico. A seconda della tua esperienza con queste funzionalità, il completamento di questo tutorial richiede circa 20 minuti.

Obiettivi

  • Avvia un'applicazione web demo su un gruppo di istanze gestite.
  • Osserva gli effetti della scalabilità automatica simulando picchi e cali di traffico.

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

  • Compute Engine

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud possono essere idonei a una prova senza costi aggiuntivi.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

Architettura dell'applicazione

L'applicazione include i seguenti componenti di Compute Engine:

Avvio dell'applicazione web

Questo tutorial utilizza un'applicazione web archiviata su GitHub. Per saperne di più su come è stata implementata l'applicazione, consulta il repository GoogleCloudPlatform/python-docs-samples su GitHub.

Avvia l'applicazione web su ogni VM in un gruppo di istanze gestite includendo uno script di avvio in un modello di istanza. Per consentire il traffico HTTP verso l'applicazione web, crea una regola firewall.

Crea una regola firewall

Crea una regola firewall per consentire il traffico HTTP verso l'applicazione web:

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

    Vai a Firewall

  2. Fai clic su Crea regola firewall.

  3. In Nome, inserisci default-allow-http.

  4. Imposta Rete su default.

  5. Imposta Target per selezionare Specified target tags.

  6. In Tag di destinazione, inserisci http-server.

  7. Imposta Filtro di origine su IP ranges.

  8. In Intervalli IP di origine, inserisci 0.0.0.0/0.

    per consentire l'accesso per tutti gli indirizzi IP.

  9. In Porte e protocolli, seleziona Protocolli e porte specificati. Seleziona quindi tcp e inserisci 80 per consentire l'accesso per il traffico HTTP.

  10. Fai clic su Crea.

Crea un modello di istanza

Crea un modello di istanza che avvii l'applicazione web demo all'avvio:

  1. Nella console Google Cloud, vai alla pagina Modelli di istanza.

    Vai a Modelli di istanza

  2. Fai clic su Crea modello istanza.

  3. In Nome, inserisci autoscaling-web-app-template.

  4. In Configurazione macchina, imposta Tipo di macchina su e2-standard-2.

  5. In Firewall, seleziona la casella di controllo Consenti traffico HTTP. Questo applica il tag di networking http-server a ogni istanza creata da questo modello.

  6. Fai clic su Networking, dischi, sicurezza, gestione, single tenancy per visualizzare le impostazioni avanzate.

  7. Nella scheda Gestione, individua Automazione e inserisci il seguente Script di avvio:

    sudo apt update && sudo apt -y install git gunicorn3 python3-pip
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/compute/managed-instances/demo
    sudo pip3 install -r requirements.txt
    sudo gunicorn3 --bind 0.0.0.0:80 app:app --daemon
    

    Questo script fa sì che ogni istanza esegua l'applicazione web durante l'avvio.

  8. Fai clic su Crea.

Creare un gruppo di istanze gestite

Crea un gruppo di istanze a livello di regione per iniziare a eseguire l'applicazione web:

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

    Vai a Gruppi di istanze

  2. Fai clic su Crea gruppo di istanze per creare un nuovo gruppo di istanze.

  3. Seleziona Nuovo gruppo di istanze gestite (stateless)."

  4. In Nome, inserisci autoscaling-web-app-group.

  5. In Modello di istanza, seleziona autoscaling-web-app-template.

  6. Per Località, seleziona Più zone.

  7. In Regione, seleziona us-central1.

  8. Per Zone, seleziona le seguenti zone dall'elenco a discesa:

    • us-central1-b
    • us-central1-c
    • us-central1-f
  9. Configura la scalabilità automatica per il gruppo di istanze:

    1. Per la modalità di scalabilità automatica, seleziona On: aggiungi e rimuovi istanze al gruppo.
    2. Imposta Numero minimo di istanze su 3.

    3. Imposta Numero massimo di istanze su 6.

    4. Imposta Periodo di inizializzazione su 120 secondi.

    5. In Metriche di scalabilità automatica, seleziona Utilizzo CPU come tipo di metrica. Per scoprire di più sulle metriche di scalabilità automatica, consulta Criterio di scalabilità automatica.

    6. Imposta Utilizzo CPU target su 60.

    7. Fai clic su Fine.

  10. In Riparazione automatica, seleziona Nessun controllo di integrità dall'elenco a discesa Controllo di integrità.

  11. Fai clic su Crea. Verrai reindirizzato alla pagina Gruppi di istanze.

  12. Per verificare che le istanze siano in esecuzione:

    1. Nella pagina Gruppi di istanze della console Google Cloud, fai clic su autoscaling-web-app-group per visualizzare le istanze nel gruppo.
    2. In IP esterno, fai clic su un indirizzo IP per connettere quell'istanza. Si apre una nuova scheda del browser con l'applicazione web demo:

      Applicazione web demo, che elenca informazioni sull'istanza e presenta pulsanti di azione.

      Al termine, chiudi la scheda del browser relativa all'applicazione web demo.

Osservazione della scalabilità automatica

Per ulteriori informazioni sui comportamenti della scalabilità automatica, consulta Informazioni sulle decisioni relative alla scalabilità automatica.

Monitora la scalabilità automatica

Il gruppo di istanze che hai creato utilizza un criterio di scalabilità automatica basato sull'utilizzo della CPU. Ciò significa che il gestore della scalabilità automatica aumenta o riduce il gruppo in base alle esigenze per mantenere l'utilizzo target della CPU pari a 60%.

Per monitorare le dimensioni e l'utilizzo della CPU del gruppo di istanze, utilizza i grafici a scalabilità automatica nella console Google Cloud:

  1. Nella pagina Gruppi di istanze delautoscaling-web-app-group gruppo di istanze, fai clic sulla scheda Monitoring.
  2. Puoi monitorare la scalabilità automatica dal grafico Dimensioni del gruppo. Il grafico mostra Istanze, che rappresentano il numero di istanze VM nel gruppo nel tempo.
  3. (Facoltativo) Per monitorare il confronto tra la capacità con scalabilità automatica e l'utilizzo, consulta il grafico Utilizzo del gestore della scalabilità automatica (CPU). Il grafico mostra Utilizzo, che indica l'utilizzo totale della CPU per le istanze VM del gruppo, e la Capacità, che indica l'utilizzo cumulativo target della CPU del gruppo (utilizzo CPU target moltiplicato per il numero di istanze VM).

    La scalabilità automatica tenta di far corrispondere la Capacità ad Utilizzo modificando il numero di istanze, se possibile.

Tieni aperta questa finestra.

Simula lo scale out

Lo scale out si verifica quando l'utilizzo medio della CPU del gruppo di istanze è notevolmente superiore al valore di destinazione. Durante lo scale out, il gestore della scalabilità automatica aumenta gradualmente le dimensioni del gruppo di istanze fino a quando l'utilizzo della CPU non diminuisce in base al valore di utilizzo della CPU di destinazione o fino a quando la dimensione del gruppo di istanze non corrisponde al Numero massimo di istanze, che è stato impostato su 6.

Per attivare lo scale out, aumenta l'utilizzo della CPU per le istanze:

  1. Nella console Google Cloud, apri Cloud Shell.

    Apri Cloud Shell

    Cloud Shell si aprirà nella parte inferiore della console Google Cloud. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Crea una variabile bash locale per l'ID progetto:

    export PROJECT_ID=[PROJECT_ID]
    

    dove PROJECT_ID è l'ID del progetto attuale, visualizzato su ogni nuova riga di Cloud Shell:

    user@cloudshell:~ ([PROJECT_ID])$
    
  3. Esegui il seguente script bash. Questo script causa un aumento del carico per le istanze dell'applicazione web demo, aumentando così l'utilizzo della CPU. Dopo alcuni minuti, l'utilizzo della CPU supererà il valore target, richiedendo alla scalabilità automatica di aumentare le dimensioni del gruppo di istanze.

    export MACHINES=$(gcloud --project=$PROJECT_ID compute instances list --format="csv(name,networkInterfaces[0].accessConfigs[0].natIP)" | grep "autoscaling-web-app-group")
    for i in $MACHINES;
    do
      NAME=$(echo "$i" | cut -f1 -d,)
      IP=$(echo "$i" | cut -f2 -d,)
      echo "Simulating high load for instance $NAME"
      curl -q -s "http://$IP/startLoad" >/dev/null --retry 2
    done
    
  4. Apri la scheda Monitoring nella console Google Cloud.

    Dopo alcuni minuti, la scheda Monitoring mostra un aumento dell'utilizzo della CPU, il che attiva la scalabilità automatica per aumentare la capacità mediante l'aumento del numero di istanze.

    Potresti anche notare che ora sei istanze sono elencate nella scheda Panoramica.

Tieni entrambe le finestre aperte.

Simula fare lo scale in

Lo scale in si verifica quando l'utilizzo medio della CPU del gruppo di istanze è notevolmente inferiore al valore di destinazione. Durante fare lo scale in, il gestore della scalabilità automatica riduce gradualmente le dimensioni del gruppo di istanze fino a quando l'utilizzo della CPU non aumenta in base all'utilizzo target della CPU o fino a quando la dimensione del gruppo di istanze non corrisponde al Numero minimo di istanze, che era impostato su 3.

Per attivare fare lo scale in, riduci l'utilizzo della CPU per le istanze:

  1. Esegui il seguente script bash. Questo script riduce il carico delle istanze dell'applicazione web demo, riducendo così l'utilizzo della CPU. Dopo alcuni minuti, l'utilizzo della CPU scenderà al di sotto del valore target, chiedendo al gestore della scalabilità automatica di ridurre la dimensione del gruppo di istanze.

    export MACHINES=$(gcloud --project=$PROJECT_ID compute instances list --format="csv(name,networkInterfaces[0].accessConfigs[0].natIP)" | grep "autoscaling-web-app-group")
    for i in $MACHINES;
    do
      NAME=$(echo "$i" | cut -f1 -d,)
      IP=$(echo "$i" | cut -f2 -d,)
      echo "Simulating low load for instance $NAME"
      curl -q -s "http://$IP/stopLoad" >/dev/null --retry 2
    done
    
  2. Apri la scheda Monitoring nella console Google Cloud.

    Dopo qualche minuto, la scheda Monitoring mostra che l'utilizzo della CPU è diminuito. Dopo il periodo di stabilizzazione, che verifica che il carico sia costantemente inferiore, la scalabilità automatica diminuisce la Capacità riducendo il numero di istanze.

    Potresti anche notare che nella scheda Panoramica sono elencate solo tre istanze.

Al termine, chiudi entrambe le finestre.

Esegui la pulizia

Al termine del tutorial, puoi eseguire la pulizia delle risorse che hai creato in modo che smettano di utilizzare la quota e non incorrano in addebiti. Le sezioni seguenti descrivono come eliminare o disattivare queste risorse.

Se hai creato un progetto separato per questo tutorial, elimina l'intero progetto. In caso contrario, se il progetto contiene risorse che vuoi conservare, elimina solo quelle create in questo tutorial.

Elimina il progetto

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Eliminazione di risorse specifiche

Eliminazione del gruppo di istanze

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

    Vai a Gruppi di istanze

  2. Seleziona la casella di controllo per il tuo gruppo di istanze autoscaling-web-app-group.
  3. Per eliminare il gruppo di istanze, fai clic su Elimina.

Eliminazione del modello di istanza

  1. Nella console Google Cloud, vai alla pagina Modelli di istanza.

    Vai a Modelli di istanza

  2. Fai clic sulla casella di controllo accanto a autoscaling-web-app-template.

  3. Fai clic su Elimina nella parte superiore della pagina. Nella nuova finestra, fai clic su Elimina per confermare l'eliminazione.

Eliminazione della regola firewall in corso...

  1. Nella console Google Cloud, vai alla pagina Regole firewall.

    Vai a Regole firewall

  2. Fai clic sulla casella di controllo accanto alla regola firewall denominata default-allow-http.

  3. Fai clic su Elimina nella parte superiore della pagina. Nella nuova finestra, fai clic su Elimina per confermare l'eliminazione.

Passaggi successivi