Questo tutorial spiega come utilizzare la scalabilità automatica per regolare automaticamente il numero di istanze VM che ospitano la tua applicazione, consentendo alla tua applicazione di adattarsi a quantità variabili di traffico.
Per utilizzare la scalabilità automatica, ospita l'applicazione su 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 un gruppo di istanze gestite ha la scalabilità automatica attivata, il numero di VM nel gruppo di istanze aumenta (scale out) o diminuisce (scale in) automaticamente in base al valore target specificato per la policy di scalabilità automatica.
Questo tutorial include i passaggi dettagliati per lanciare un'applicazione web su un gruppo di istanze gestite, configurare la scalabilità automatica e l'accesso alla rete e osservare la scalabilità automatica simulando picchi e cali di carico. A seconda della tua esperienza con queste funzionalità, il completamento di questo tutorial richiede circa 20 minuti.
Obiettivi
- Lancia un'applicazione web dimostrativa su un gruppo di istanze gestite.
- Osserva gli effetti della scalabilità automatica simulando picchi e cali di traffico.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
- Compute Engine
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
Architettura dell'applicazione
L'applicazione include i seguenti componenti di Compute Engine:
- Regola firewall: un firewall di Google Cloudche ti permette di consentire o negare il traffico verso le tue istanze.
- Modello di istanza: un modello utilizzato per creare ogni istanza VM nel gruppo di istanze gestite.
- Gruppo di istanze gestite a livello di regione: un gruppo di istanze VM che eseguono la stessa applicazione in più zone.
Avvio dell'applicazione web
Questo tutorial utilizza un'applicazione web archiviata su GitHub. Per scoprire di più sulle modalità di implementazione dell'applicazione, vedi il repository GoogleCloudPlatform/python-docs-samples su GitHub.
Avvia l'applicazione web su ogni VM di un gruppo di istanze gestite includendo uno script di avvio in un modello di istanza. Per consentire il traffico HTTP all'applicazione web, crea una regola firewall.
Crea una regola firewall
Crea una regola firewall per consentire il traffico HTTP all'applicazione web:
Nella console Google Cloud , vai alla pagina Firewall.
Fai clic su Crea regola firewall.
In Nome, inserisci
default-allow-http
.Imposta Rete su
default
.Imposta Destinazioni per selezionare
Specified target tags
.In Tag di destinazione, inserisci
http-server
.Imposta Filtro di origine su
IPv4 ranges
.In Intervalli IPv4 di origine, inserisci
0.0.0.0/0
.per consentire l'accesso a tutti gli indirizzi IP.
In Protocolli e porte, seleziona Protocolli e porte specificati. Poi seleziona TCP e inserisci
80
per consentire l'accesso per il traffico HTTP.Fai clic su Crea.
Crea un modello di istanza
Crea un modello di istanza che avvia l'applicazione web demo all'avvio:
Nella console Google Cloud , vai alla pagina Template di istanza.
Fai clic su Crea modello istanza.
In Nome, inserisci
autoscaling-web-app-template
.In Configurazione macchina, imposta Tipo di macchina su
e2-standard-2
.In Firewall, seleziona la casella di controllo Consenti traffico HTTP. In questo modo, il tag di rete
http-server
viene applicato a ogni istanza creata da questo modello.Espandi la sezione Opzioni avanzate per visualizzare le impostazioni avanzate.
Espandi la sezione Gestione.
Nella sezione Automazione, 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 in modo che ogni VM esegua l'applicazione web durante l'avvio.
Fai clic su Crea.
Creare un gruppo di istanze gestite
Crea un gruppo di istanze regionale per iniziare a eseguire l'applicazione web:
Nella console Google Cloud , vai alla pagina Gruppi di istanze.
Fai clic su Crea gruppo di istanze per creare un nuovo gruppo di istanze.
Seleziona Nuovo gruppo di istanze gestite (stateless).
In Nome, inserisci
autoscaling-web-app-group
.In Modello di istanza, seleziona
autoscaling-web-app-template
.In Località, seleziona Più zone.
In Regione, seleziona us-central1.
Per Zone, seleziona le seguenti zone dall'elenco a discesa:
- us-central1-b
- us-central1-c
- us-central1-f
Configura la scalabilità automatica per il gruppo di istanze:
- In Modalità di scalabilità automatica, seleziona On: aggiungi e rimuovi istanze al gruppo.
Imposta il Numero minimo di istanze su
3
.Imposta il Numero massimo di istanze su
6
.Imposta il Periodo di inizializzazione su
120
secondi.In Metriche di scalabilità automatica, seleziona Utilizzo CPU come tipo di metrica. Per scoprire di più sulle metriche di scalabilità automatica, consulta Policy di scalabilità automatica.
Imposta Utilizzo CPU target su
60
.Fai clic su Fine.
In Riparazione automatica, seleziona Nessun controllo di integrità dall'elenco a discesa Controllo di integrità.
Fai clic su Crea. Viene visualizzata la pagina Gruppi di istanze.
Per verificare che le istanze siano in esecuzione:
- Nella pagina Gruppi di istanze della console Google Cloud , fai clic su
autoscaling-web-app-group
per visualizzare le istanze del gruppo. In IP esterno, fai clic su un indirizzo IP per connettere l'istanza. Si apre una nuova scheda del browser che mostra l'applicazione web dimostrativa:
Al termine, chiudi la scheda del browser per l'applicazione web dimostrativa.
- Nella pagina Gruppi di istanze della console Google Cloud , fai clic su
Osservare la scalabilità automatica
Per ulteriori informazioni sui comportamenti della scalabilità automatica, consulta Informazioni sulle decisioni di scalabilità automatica.
Monitorare 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 le dimensioni del gruppo in base alle necessità
per mantenere l'utilizzo della CPU target del 60
%.
Per monitorare le dimensioni e l'utilizzo della CPU del gruppo di istanze, utilizza i grafici della scalabilità automatica nella console Google Cloud :
- Nella pagina Gruppi di istanze per il gruppo di istanze
autoscaling-web-app-group
, fai clic sulla scheda Monitoraggio. - Puoi monitorare la scalabilità automatica dal grafico Dimensione gruppo. Il grafico mostra Istanze, che rappresenta il numero di istanze VM nel gruppo nel tempo.
(Facoltativo) Per monitorare la capacità scalata automaticamente rispetto all'utilizzo, consulta il grafico Utilizzo dello scalatore automatico (CPU). Il grafico mostra l'utilizzo, ovvero l'utilizzo totale della CPU delle istanze VM nel gruppo, e la capacità, ovvero l'utilizzo cumulativo della CPU target del gruppo (utilizzo della CPU target moltiplicato per il numero di istanze VM).
La scalabilità automatica tenta di far corrispondere la capacità all'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 è
significativamente superiore al valore target. Durante lo scale out, il gestore della scalabilità automatica
aumenta gradualmente le dimensioni del gruppo di istanze finché l'utilizzo della CPU
non diminuisce fino al valore target di utilizzo della CPU o finché le dimensioni del gruppo di istanze
non sono uguali al Numero massimo di istanze, impostato su 6
.
Per attivare lo scale out, aumenta l'utilizzo della CPU per le tue istanze:
Nella console Google Cloud , apri Cloud Shell.
Cloud Shell si apre nella parte inferiore della console Google Cloud . L'inizializzazione della sessione può richiedere alcuni secondi.
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 in Cloud Shell:user@cloudshell:~ ([PROJECT_ID])$
Esegui lo script bash seguente. Questo script fa in modo che le istanze dell'applicazione web dimostrativa abbiano un carico maggiore, il che aumenta l'utilizzo della CPU. Dopo alcuni minuti, l'utilizzo della CPU supererà il valore target, spingendo la scalabilità automatica ad 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
Apri la scheda Monitoraggio nella console Google Cloud .
Dopo alcuni minuti, nella scheda Monitoraggio viene visualizzato che l'utilizzo della CPU è aumentato, il che attiva la scalabilità automatica per aumentare la capacità incrementando il numero di istanze.
Potresti anche notare che ora sono elencate 6 istanze nella scheda Panoramica.
Tieni aperte entrambe le finestre.
Simula lo fare lo scale in
La riduzione della scalabilità si verifica quando l'utilizzo medio della CPU del gruppo di istanze è
significativamente inferiore al valore target. Durante fare lo scale in, il gestore della scalabilità automatica
diminuisce gradualmente le dimensioni del gruppo di istanze finché l'utilizzo della CPU
non aumenta fino all'utilizzo della CPU target o finché le dimensioni del gruppo di istanze non sono uguali al Numero minimo di istanze, impostato su 3
.
Per attivare fare lo scale in, diminuisci l'utilizzo della CPU per le tue istanze:
Esegui lo script bash seguente. Questo script fa in modo che le istanze dell'applicazione web dimostrativa abbiano un carico ridotto, il che diminuisce l'utilizzo della CPU. Dopo alcuni minuti, l'utilizzo della CPU scenderà al di sotto del valore target, spingendo il gestore della scalabilità automatica a ridurre 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 low load for instance $NAME" curl -q -s "http://$IP/stopLoad" >/dev/null --retry 2 done
Apri la scheda Monitoraggio nella console Google Cloud .
Dopo qualche minuto, nella scheda Monitoraggio viene visualizzato che l'utilizzo della CPU è diminuito. Dopo il periodo di stabilizzazione, che verifica che il carico sia costantemente inferiore, la scalabilità automatica riduce la capacità diminuendo 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 eliminare le risorse che hai creato in modo che non utilizzino più la quota generando addebiti. Le seguenti sezioni 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 le risorse create in questo tutorial.
Elimina il progetto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Eliminazione di risorse specifiche
Eliminazione del gruppo di istanze
- In the Google Cloud console, go to the Instance groups page.
-
Select the checkbox for
your
autoscaling-web-app-group
instance group. - To delete the instance group, click Delete.
Eliminazione del modello di istanza
Nella console Google Cloud , vai alla pagina Template di istanza.
Fai clic sulla casella di controllo accanto a
autoscaling-web-app-template
.Fai clic su
Elimina nella parte superiore della pagina. Nella nuova finestra, fai clic su Elimina per confermare l'eliminazione.
Eliminazione della regola firewall
Nella console Google Cloud , vai alla pagina Regole firewall.
Fai clic sulla casella di controllo accanto alla regola firewall denominata
default-allow-http
.Fai clic su
Elimina. Nella nuova finestra, fai clic su Elimina per confermare l'eliminazione.
Passaggi successivi
- Prova un altro tutorial:
- Scopri di più sui gruppi di istanze gestite.
- Scopri di più sulla scalabilità automatica.
- Scopri di più sulla progettazione di sistemi solidi.
- Scopri di più sulla creazione di applicazioni web scalabili e resilienti su Google Cloud.