Questo documento descrive come configurare un controllo di integrità basato su applicazioni per eseguire la riparazione automatica delle VM in un gruppo di istanze gestite (MIG). Descrive inoltre come eseguire quanto segue: utilizzare un controllo di integrità senza riparazione automatica, rimuovere un controllo di integrità, visualizzare il criterio di riparazione automatica e controllare lo stato di integrità di ogni VM.
Puoi configurare un controllo di integrità basato sull'applicazione per verificare che la tua applicazione su una VM risponda come previsto. Se il controllo di integrità che hai configurato rileva che l'applicazione su una VM non risponde, il gruppo di istanze gestite contrassegna la VM come non integra e la ripara. La riparazione di una VM in base a un controllo di integrità basato sull'applicazione è chiamata riparazione automatica.
Puoi anche disattivare le riparazioni in un gruppo di istanze gestite per poter utilizzare un controllo di integrità senza attivare la riparazione automatica.
Per scoprire di più sulle riparazioni in un gruppo di istanze gestite, consulta la pagina Informazioni sulla riparazione delle VM per l'alta disponibilità.
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Crea un controllo di integrità, se non l'hai ancora fatto.
- Configura un criterio di riparazione automatica nel gruppo di istanze gestite per applicare il controllo di integrità.
Crea un controllo di integrità per la riparazione automatica più prudente rispetto a un controllo di integrità del bilanciamento del carico.
Ad esempio, crea un controllo di integrità che cerchi una risposta sulla porta
80
e che possa tollerare alcuni errori prima di contrassegnare le VM comeUNHEALTHY
e di ricrearle. In questo esempio, una VM viene contrassegnata come sana se il controllo di integrità restituisce un risultato positivo una volta. La VM viene contrassegnata come non integra se il controllo di integrità non va a buon fine3
volte consecutive.Nella console Google Cloud, vai alla pagina Crea un controllo di integrità.
Assegna un nome al controllo di integrità, ad esempio
example-check
.Seleziona un Ambito. Puoi selezionare Regionale o Globale. Per questo esempio, seleziona Globale.
In Protocollo, assicurati che sia selezionato HTTP.
In Porta, inserisci
80
.Nella sezione Criteri di integrità, specifica i seguenti valori:
- In Intervallo di controllo, inserisci
5
. - In Timeout, inserisci
5
. - Imposta una soglia di integrità per determinare il numero di controlli di integrità riusciti consecutivi che devono essere restituiti prima che una VM non integra venga contrassegnata come integra. Per questo esempio, inserisci
1
. - Imposta una soglia di non integrità per determinare il numero di controlli di integrità consecutivi non riusciti che devono essere restituiti prima che una VM integra venga contrassegnata come non integra. Per questo esempio, inserisci
3
.
- In Intervallo di controllo, inserisci
Fai clic su Crea per creare il controllo di integrità.
Crea una regola firewall per consentire ai probe del controllo di integrità di collegarsi alla tua app.
I probe del controllo di integrità provengono da indirizzi inclusi negli intervalli
130.211.0.0/22
e35.191.0.0/16
, quindi assicurati che le regole firewall di rete consentano al controllo di integrità di connettersi. Per questo esempio, il gruppo di istanze gestite utilizza la retedefault
e le relative VM sono in ascolto sulla porta80
. Se la porta80
non è già aperta sulla rete predefinita, crea una regola firewall.Nella console Google Cloud, vai alla pagina Criteri firewall.
Fai clic su Crea regola firewall.
Inserisci un nome per la regola firewall. Ad esempio,
allow-health-check
.In Rete, seleziona la rete
default
.Per Destinazioni, seleziona
All instances in the network
.In Filtro origine, seleziona
IPv4 ranges
.In Intervalli IPv4 di origine, inserisci
130.211.0.0/22
e35.191.0.0/16
.In Protocolli e porte, seleziona Protocolli e porte specificati e svolgi i seguenti passaggi:
- Seleziona TCP.
- Nel campo Porte, inserisci
80
.
Fai clic su Crea.
Crea un controllo di integrità per la riparazione automatica più prudente rispetto a un controllo di integrità del bilanciamento del carico.
Ad esempio, crea un controllo di integrità che cerchi una risposta sulla porta
80
e che possa tollerare alcuni errori prima di contrassegnare le VM comeUNHEALTHY
e di ricrearle. In questo esempio, la VM viene contrassegnata come sana se restituisce un risultato positivo una volta. La VM viene contrassegnata come non integra se restituisce un errore3
volte consecutive. Il seguente comando crea un controllo di integrità globale.gcloud compute health-checks create http example-check --port 80 \ --check-interval 30s \ --healthy-threshold 1 \ --timeout 10s \ --unhealthy-threshold 3 \ --global
Crea una regola firewall per consentire ai probe del controllo di integrità di collegarsi alla tua app.
I probe del controllo di integrità provengono da indirizzi inclusi negli intervalli
130.211.0.0/22
e35.191.0.0/16
, quindi assicurati che le regole firewall consentano la connessione del controllo di integrità. Per questo esempio, il gruppo MIG utilizza la retedefault
e le relative VM ascoltano sulla porta80
. Se la porta80
non è già aperta sulla rete predefinita, crea una regola firewall.gcloud compute firewall-rules create allow-health-check \ --allow tcp:80 \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --network default
Crea un controllo di integrità utilizzando la risorsa
google_compute_http_health_check
.Ad esempio, crea un controllo di integrità che cerca una risposta sulla porta
80
e che può tollerare alcuni errori prima di contrassegnare le VM comeUNHEALTHY
e di ricrearle. In questo esempio, una VM viene contrassegnata come sana se restituisce un risultato positivo una volta. La VM viene contrassegnata come non integra se restituisce un errore3
volte consecutive. La seguente richiesta crea un controllo di integrità globale.Crea un firewall utilizzando la risorsa
google_compute_firewall
.I probe del controllo di integrità provengono da indirizzi inclusi negli intervalli
130.211.0.0/22
e35.191.0.0/16
, quindi assicurati che le regole del firewall consentano la connessione del controllo di integrità. Per questo esempio, il gruppo di istanze gestite utilizza la retedefault
e le relative VM sono in ascolto sulla porta80
. Se la porta80
non è già aperta sulla rete predefinita, crea una regola firewall.Crea un controllo di integrità per la riparazione automatica più prudente rispetto a un controllo di integrità per il bilanciamento del carico.
Ad esempio, crea un controllo di integrità che cerca una risposta sulla porta
80
e che può tollerare alcuni errori prima di contrassegnare le VM comeUNHEALTHY
e di ricrearle. In questo esempio, una VM viene contrassegnata come sana se restituisce un risultato positivo una volta. La VM viene contrassegnata come non integra se restituisce un errore3
volte consecutive. La seguente richiesta crea un controllo di integrità globale.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/healthChecks { "name": "example-check", "type": "http", "port": 80, "checkIntervalSec": 30, "healthyThreshold": 1, "timeoutSec": 10, "unhealthyThreshold": 3 }
Crea una regola firewall per consentire ai probe del controllo di integrità di collegarsi alla tua app.
I probe del controllo di integrità provengono da indirizzi inclusi negli intervalli
130.211.0.0/22
e35.191.0.0/16
, quindi assicurati che le regole del firewall consentano la connessione del controllo di integrità. Per questo esempio, il gruppo di istanze gestite utilizza la retedefault
e le relative VM sono in ascolto sulla porta80
. Se la porta80
non è già aperta sulla rete predefinita, crea una regola firewall.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "allow-health-check", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default", "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "allowed": [ { "ports": [ "80" ], "IPProtocol": "tcp" } ] }
Sostituisci
PROJECT_ID
con il tuo ID progetto.- Se non hai ancora un controllo di integrità, creane uno.
- Se vuoi evitare l'attivazione ingiustificata del ripristino automatico durante la configurazione di un nuovo controllo di integrità, devi prima disattivare le riparazioni nel gruppo di istanze gestite e poi configurare il criterio di ripristino automatico.
Nella console Google Cloud, vai alla pagina Gruppi di istanze.
Nella colonna Nome dell'elenco, fai clic sul nome del gruppo di istanze gestite in cui vuoi applicare il controllo di integrità.
Fai clic su Modifica per modificare questo MIG.
Nella sezione Ciclo di vita dell'istanza VM, in Riparazione automatica, seleziona un controllo di integrità globale o regionale.
Modifica o mantieni l'impostazione Ritardo iniziale.
Il ritardo iniziale è il numero di secondi necessari a una nuova VM per inizializzarsi ed eseguire il proprio script di avvio. Durante il periodo di ritardo iniziale di una VM, il gruppo di istanze gestite ignora i controlli di integrità non riusciti perché la VM potrebbe essere in fase di avvio. In questo modo, il gruppo di istanze gestite non ricrea prematuramente una VM. Se il controllo di integrità riceve una risposta positiva durante il ritardo iniziale, indica che il processo di avvio è stato completato e la VM è pronta. Il timer del ritardo iniziale si avvia quando il campo
currentAction
della VM diventaVERIFYING
. Il valore del ritardo iniziale deve essere compreso tra 0 e 3600 secondi. Nella console, il valore predefinito è 300 secondi.Fai clic su Salva per applicare le modifiche.
MIG_NAME
: il nome del gruppo di istanze gestite in cui vuoi configurare la riparazione automatica.SIZE
: il numero di VM nel gruppo.INSTANCE_TEMPLATE_URL
: l'URL parziale del modello di istanza che vuoi utilizzare per creare le VM nel gruppo. Ad esempio:- Modello di istanza regionale:
projects/example-project/regions/us-central1/instanceTemplates/example-template
. - Modello di istanza globale:
projects/example-project/global/instanceTemplates/example-template
.
- Modello di istanza regionale:
HEALTH_CHECK_URL
: l'URL parziale del controllo di stato che vuoi configurare per il ripristino automatico. Se vuoi utilizzare un controllo di integrità regionale, devi fornire l'URL parziale del controllo di integrità regionale. Ad esempio:- Controllo di integrità a livello di regione:
projects/example-project/regions/us-central1/healthChecks/example-health-check
. - Controllo di integrità globale:
projects/example-project/global/healthChecks/example-health-check
.
- Controllo di integrità a livello di regione:
INITIAL_DELAY
: il numero di secondi necessari per inizializzare ed eseguire lo script di avvio di una nuova VM. Durante il periodo di ritardo iniziale di una VM, il gruppo di istanze gestite ignora i controlli di integrità non riusciti perché la VM potrebbe essere in fase di avvio. In questo modo, il gruppo di istanze gestite non ricrea prematuramente una VM. Se il controllo di integrità riceve una risposta positiva durante il ritardo iniziale, indica che il processo di avvio è stato completato e la VM è pronta. Il timer del ritardo iniziale si avvia quando il campocurrentAction
della VM diventaVERIFYING
. Il valore del ritardo iniziale deve essere compreso tra0
e3600
secondi. Il valore predefinito è0
.ZONE
: la zona in cui si trova il gruppo di istanze gestite. Per un gruppo di istanze gestite a livello di regione, utilizza il flag--region
.- Per un gruppo di istanze gestite a livello di zona, utilizza il
metodo
instanceGroupManager.patch
. - Per un gruppo di istanze gestite a livello di regione, utilizza il
metodo
regionInstanceGroupManager.patch
. - Per un gruppo di istanze gestite a livello di zona, utilizza il
metodo
instanceGroupManager.insert
. - Per un gruppo di istanze gestite a livello di regione, utilizza il
metodo
regionInstanceGroupManager.insert
. PROJECT_ID
: il tuo ID progetto.MIG_NAME
: il nome del gruppo di istanze gestite in cui vuoi configurare la riparazione automatica.SIZE
: il numero di VM nel gruppo.INSTANCE_TEMPLATE_URL
: l'URL parziale del modello di istanza che vuoi utilizzare per creare le VM nel gruppo. Ad esempio:- Modello di istanza regionale:
projects/example-project/regions/us-central1/instanceTemplates/example-template
. - Modello di istanza globale:
projects/example-project/global/instanceTemplates/example-template
.
- Modello di istanza regionale:
HEALTH_CHECK_URL
: l'URL parziale del controllo di stato che vuoi configurare per il ripristino automatico. Ad esempio:- Controllo di integrità a livello di regione:
projects/example-project/regions/us-central1/healthChecks/example-health-check
. - Controllo di integrità globale:
projects/example-project/global/healthChecks/example-health-check
.
- Controllo di integrità a livello di regione:
INITIAL_DELAY
: il numero di secondi necessari per inizializzare ed eseguire lo script di avvio di una nuova VM. Durante il periodo di ritardo iniziale di una VM, il gruppo di istanze gestite ignora i controlli di integrità non riusciti perché la VM potrebbe essere in fase di avvio. In questo modo, il gruppo di istanze gestite non ricrea prematuramente una VM. Se il controllo di integrità riceve una risposta positiva durante il ritardo iniziale, indica che il processo di avvio è stato completato e la VM è pronta. Il timer del ritardo iniziale si avvia quando il campocurrentAction
della VM diventaVERIFYING
. Il valore del ritardo iniziale deve essere compreso tra0
e3600
secondi. Il valore predefinito è0
.ZONE
: la zona in cui si trova il gruppo di istanze gestite. Per un gruppo di istanze gestite regionale, utilizzaregions/REGION
nell'URL.- Ritardo di 10 minuti prima che la riparazione automatica inizi a monitorare le VM nel gruppo
- + 5 minuti per il ritardo iniziale configurato
- + 1 minuto per l'intervallo di controllo * soglia di normalità (60 s * 1)
- = 16 minuti prima che la VM venga contrassegnata come sana o ricreata
Nella console Google Cloud, vai alla pagina Gruppi di istanze.
- Fai clic sul nome del gruppo di istanze gestite da cui vuoi rimuovere il controllo di integrità.
- Fai clic su Modifica per modificare questo MIG.
- Nella sezione Ciclo di vita dell'istanza VM, in Riparazione automatica, seleziona Nessun controllo di integrità.
- Fai clic su Salva per applicare le modifiche.
- Per un gruppo di istanze gestite a livello di zona, utilizza il
metodo
instanceGroupManagers.patch
- Per un gruppo di istanze gestite a livello di regione, utilizza il
metodo
regionInstanceGroupManagers.patch
PROJECT_ID
: il tuo ID progetto.MIG_NAME
: il nome del gruppo di istanze gestite in cui vuoi configurare la riparazione automatica.ZONE
: la zona in cui si trova il gruppo di istanze gestite. Per un gruppo di istanze gestite a livello di regione, utilizzaregions/REGION
.Nella console Google Cloud, vai alla pagina Gruppi di istanze.
Fai clic sul nome del gruppo di istanze gestite di cui vuoi visualizzare il criterio di riparazione automatica.
Vai alla scheda Dettagli.
Nella sezione Ciclo di vita dell'istanza VM, il campo Riparazione automatica visualizza il controllo di integrità e il ritardo iniziale configurato nel criterio di riparazione automatica.
- Per un gruppo di istanze gestite a livello di zona, utilizza il metodo
instanceGroupManagers.get
- Per un gruppo di istanze gestite a livello di regione, utilizza il metodo
regionInstanceGroupManagers.get
PROJECT_ID
: il tuo ID progetto.MIG_NAME
: il nome del gruppo di istanze gestite in cui vuoi configurare la riparazione automatica.ZONE
: la zona in cui si trova il gruppo di istanze gestite. Per un gruppo di istanze gestite a livello di regione, utilizzaregions/REGION
.- Verificare l'integrità delle VM
- Controllare le azioni correnti sulle VM
- Verificare se il gruppo di istanze gestite è stabile
- Identifica le VM non integre che non sono in fase di riparazione. Una VM potrebbe non essere riparata immediatamente anche se è stata diagnosticata come non funzionante nelle seguenti situazioni:
- La VM è ancora in fase di avvio e il ritardo iniziale non è ancora trascorso.
- È in corso la riparazione di una quota significativa di istanze non integre. Il gruppo di istanze gestite ritarda l'ulteriore riparazione automatica per garantire che il gruppo continui a eseguire un sottoinsieme di istanze.
- Rileva gli errori di configurazione controllo di integrità. Ad esempio, puoi rilevare
regole firewall configurate in modo errato o un endpoint di controllo di integrità dell'applicazione invalido se l'istanza segnala uno stato di integrità
TIMEOUT
. - Determina il valore del ritardo iniziale da configurare misurando il tempo tra il passaggio della VM a uno
RUNNING
stato e il passaggio a uno stato di saluteHEALTHY
. Puoi misurare questo gap eseguendo il polling del metodolist-instances
o osservando il tempo tra l'operazioneinstances.insert
e il primo segnale di stato normale ricevuto. Nella console Google Cloud, vai alla pagina Gruppi di istanze.
Nella colonna Nome dell'elenco, fai clic sul nome del gruppo di istanze gestite che vuoi esaminare. Viene visualizzata una pagina con le proprietà del gruppo di istanze e un elenco di VM incluse nel gruppo.
Se una VM non è integra, puoi visualizzarne lo stato nella colonna Stato controllo di integrità.
HEALTHY
: la VM è raggiungibile, è possibile stabilire una connessione all'endpoint di controllo di integrità dell'applicazione e la risposta è conforme ai requisiti definiti dal controllo di integrità.DRAINING
: la VM viene svuotata. Le connessioni esistenti alla VM possono essere completate, ma le nuove connessioni vengono rifiutate.UNHEALTHY
: la VM è raggiungibile, ma non è conforme ai requisiti definiti dal controllo di integrità.TIMEOUT
: la VM non è raggiungibile, non è possibile stabilire una connessione all'endpoint di controllo di integrità dell'applicazione o il server su una VM non risponde entro il timeout specificato. Ad esempio, il problema potrebbe essere causato da regole firewall configurate in modo errato o da un'applicazione di server sovraccaricata su una VM.UNKNOWN
: il sistema di controllo di integrità non è a conoscenza della VM o il suo stato non è noto al momento. Potrebbero essere necessari 10 minuti prima che il monitoraggio inizi sulle nuove VM in un gruppo MIG.- Se lo stato di integrità di una VM è
UNHEALTHY
oTIMEOUT
e il suo periodo di inizializzazione è terminato, il MIG tenta immediatamente di ripararla. - Se lo stato di integrità di una VM è
UNKNOWN
, il gruppo di istanze gestite non la ripara immediatamente. Questo serve a evitare una riparazione non necessaria di una VM per la quale l'indicatore del controllo di integrità non è temporaneamente disponibile. - Una VM rimane in uno stato non integro dopo più riparazioni consecutive.
- Nel gruppo è presente una quota significativa di VM non integre.
unhealthy-threshold
. Deve essere maggiore di1
. Idealmente, imposta questo valore su almeno3
. In questo modo vengono protetti da errori rari come la perdita di pacchetti di rete.healthy-threshold
. Un valore di2
è sufficiente per la maggior parte delle app.timeout
. Imposta questo valore di tempo su un valore elevato (almeno cinque volte superiore al tempo di risposta previsto). In questo modo ti proteggi da ritardi inaspettati, come istanze occupate o una connessione di rete lenta.check-interval
. Questo valore deve essere compreso tra 1 secondo e il doppio del timeout (non troppo lungo né troppo breve). Quando un valore è troppo lungo, un'istanza non riuscita non viene rilevata in tempo. Quando un valore è troppo breve, le istanze e la rete possono diventare misurabilmente occupate, dato il elevato numero di sonde di controllo di integrità inviate ogni secondo.- Prova il tutorial Utilizzo della riparazione automatica per app a disponibilità elevata.
- Monitora le modifiche dello stato di integrità della VM.
- Applica gli aggiornamenti di configurazione durante le riparazioni.
Terraform
Per utilizzare gli esempi di Terraform in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le Credenziali predefinite dell'applicazione con le tue credenziali utente.
Per ulteriori informazioni, consulta Set up authentication for a local development environment.
REST
Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Per ulteriori informazioni, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.
Prezzi
Quando configuri un controllo di integrità basato su applicazione, ogni volta che cambia lo stato di integrità di una VM, per impostazione predefinita Compute Engine scrive una voce di log in Cloud Logging. Cloud Logging fornisce un'allocazione gratuita al mese oltre la quale il logging viene calcolato in base al volume di dati. Per evitare costi, puoi disattivare i log delle modifiche dello stato di integrità.
Configurare un controllo di integrità e la riparazione automatica basati sull'applicazione
Per configurare un controllo di integrità e la riparazione automatica basati su applicazioni in un gruppo di istanze gestite, devi svolgere i seguenti passaggi:
Crea un controllo di integrità
Puoi applicare un singolo controllo di integrità a un massimo di 50 gruppi di istanze gestite. Se hai più di 50 gruppi, crea più controlli di integrità.
L'esempio seguente mostra come creare un controllo di integrità per la riparazione automatica. Puoi creare un controllo di integrità regionale o globale per la riparazione automatica nei gruppi di istanze gestite. In questo esempio, viene creato un controllo di integrità globale che cerca una risposta del server web sulla porta
80
. Per consentire ai probe del controllo di integrità di raggiungere il web server, configura una regola firewall.Console
gcloud
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
REST
Configurare un criterio di riparazione automatica in un gruppo di istanze gestite
In un gruppo di istanze gestite, puoi configurare un solo criterio di riparazione automatica per applicare un controllo di integrità.
Puoi utilizzare un controllo di integrità regionale o globale per la riparazione automatica nei MIG. I controlli di integrità a livello di regione riducono le dipendenze tra regioni e contribuiscono a garantire la residenza dei dati. I controlli di integrità globali sono pratici se vuoi utilizzare lo stesso controllo di integrità per i gruppi di istanze gestite in più regioni.
Prima di configurare un criterio di riparazione automatica:
Console
gcloud
Per configurare il criterio di riparazione automatica in un gruppo di istanze gestite esistente, utilizza il comando
update
.Ad esempio, utilizza il seguente comando per configurare il criterio di riparazione automatica in un gruppo di istanze gestite zonale esistente:
gcloud compute instance-groups managed update MIG_NAME \ --health-check HEALTH_CHECK_URL \ --initial-delay INITIAL_DELAY \ --zone ZONE
Per configurare il criterio di riparazione automatica durante la creazione di un gruppo di istanze gestite, utilizza il comando
create
.Ad esempio, utilizza il seguente comando per configurare il criterio di riparazione automatica quando crei un gruppo di istanze gestite zonale:
gcloud compute instance-groups managed create MIG_NAME \ --size SIZE \ --template INSTANCE_TEMPLATE_URL \ --health-check HEALTH_CHECK_URL \ --initial-delay INITIAL_DELAY \ --zone ZONE
Sostituisci quanto segue:
Terraform
Per configurare un criterio di riparazione automatica in un gruppo di istanze gestite, utilizza il blocco
auto_healing_policies
.L'esempio seguente configura il criterio di riparazione automatica in un gruppo di istanze gestite zonale. Per ulteriori informazioni sulla risorsa utilizzata nel sample, consulta
google_compute_instance_group_manager
. Per un gruppo di istanze gestite a livello di regione, utilizza la risorsagoogle_compute_region_instance_group_manager
.Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
REST
Per configurare il criterio di riparazione automatica in un gruppo di istanze gestite esistente, utilizza il metodo
patch
come segue:Ad esempio, esegui la seguente chiamata per configurare la riparazione automatica in un gruppo di istanze gestite zonale esistente:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "autoHealingPolicies": [ { "healthCheck": "HEALTH_CHECK_URL", "initialDelaySec": INITIAL_DELAY } ] }
Per configurare il criterio di riparazione automatica durante la creazione di un gruppo di istanze gestite, utilizza il metodo
insert
come segue:Ad esempio, esegui la seguente chiamata per configurare il criterio di riparazione automatica quando crei un gruppo di istanze gestite a livello di zona:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "name": "MIG_NAME", "targetSize": SIZE, "instanceTemplate": "INSTANCE_TEMPLATE_URL" "autoHealingPolicies": [ { "healthCheck": "HEALTH_CHECK_URL", "initialDelaySec": INITIAL_DELAY } ], }
Sostituisci quanto segue:
Al termine della configurazione della riparazione automatica, possono essere necessari 10 minuti prima che la funzionalità inizi a monitorare le VM del gruppo. Dopo l'inizio del monitoraggio, Compute Engine inizia a contrassegnare le VM come funzionanti (oppure le ricrea) in base alla configurazione del ripristino automatico. Ad esempio, se configuri un ritardo iniziale di 5 minuti, un intervallo di controllo di integrità di 1 minuto e una soglia di integrità di 1 controllo, la sequenza temporale sarà la seguente:
Se hai disattivato le riparazioni nel gruppo di istanze gestite prima di configurare il criterio di riparazione automatica, puoi monitorare gli stati di integrità delle VM per verificare che il controllo di integrità funzioni come previsto e poi ripristinare la riparazione delle VM nel gruppo di istanze gestite.
Utilizzare un controllo di integrità senza riparazione automatica
Puoi utilizzare il controllo di integrità configurato in un gruppo di istanze gestite senza riparazione automatica disattivando le riparazioni nel gruppo di istanze gestite. Questa opzione è utile quando vuoi utilizzare il controllo di integrità solo per monitorare l'integrità dell'applicazione o quando vuoi implementare la tua logica di riparazione in base al controllo di integrità.
Per ripristinare la riparazione delle VM non integre nel gruppo di istanze gestite, consulta Impostare un gruppo di istanze gestite per riparare le VM non integre e con errori.
Rimuovere un controllo di integrità
Per rimuovere un controllo di integrità configurato in un criterio di riparazione automatica:
Console
gcloud
Per rimuovere la configurazione del controllo di integrità in un criterio di riparazione automatica, nel comando
update
utilizza il flag--clear-autohealing
come segue:gcloud compute instance-groups managed update MIG_NAME \ --clear-autohealing
Sostituisci
MIG_NAME
con il nome di un gruppo di istanze gestite.REST
Per rimuovere la configurazione del controllo di integrità in un criterio di riparazione automatica, imposta il criterio di riparazione automatica su un valore vuoto.
Ad esempio, per rimuovere il controllo di integrità in un gruppo di istanze gestite zonale, effettua la seguente richiesta:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "autoHealingPolicies": [ {} ] }
Sostituisci quanto segue:
Visualizzare il criterio di riparazione automatica in un gruppo di istanze gestite
Per visualizzare il criterio di riparazione automatica di un gruppo di istanze gestite:
Console
gcloud
Per visualizzare il criterio di riparazione automatica in un gruppo di istanze gestite, utilizza il seguente comando:
gcloud compute instance-groups managed describe MIG_NAME \ --format="(autoHealingPolicies)"
Sostituisci
MIG_NAME
con il nome di un gruppo di istanze gestite.Di seguito è riportato un output di esempio:
autoHealingPolicies: healthCheck: https://www.googleapis.com/compute/v1/projects/example-project/global/healthChecks/example-health-check initialDelaySec: 300
REST
Per visualizzare il criterio di riparazione automatica in un gruppo di istanze gestite, utilizza i metodi REST come segue:
Ad esempio, invia la seguente richiesta per visualizzare il criterio di riparazione automatica in un gruppo di istanze gestite zonale:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME
Nel corpo della risposta, controlla se è presente l'oggetto
autoHealingPolicies[]
.Di seguito è riportato un esempio di risposta:
{ ... "autoHealingPolicies": [ { "healthCheck": "https://www.googleapis.com/compute/v1/projects/example-project/global/healthChecks/example-health-check", "initialDelaySec": 300 } ], ... }
Sostituisci quanto segue:
Controllare lo stato
Dopo aver configurato un controllo di integrità basato sull'applicazione in un gruppo di istanze gestite, puoi verificare che una VM sia in esecuzione e che la relativa applicazione risponda nei modi seguenti:
Controlla se le VM sono in stato integro
Se hai configurato un controllo di integrità basato sull'applicazione nel tuo gruppo di istanze gestite, puoi esaminare lo stato di integrità di ogni istanza gestita.
Controlla gli stati di integrità delle istanze gestite per:
Utilizza la console, lo strumento a riga di comando
gcloud
o REST per visualizzare gli stati di salute.Console
gcloud
Utilizza il sottocomando
list-instances
.gcloud compute instance-groups managed list-instances instance-group NAME ZONE STATUS HEALTH_STATE ACTION INSTANCE_TEMPLATE VERSION_NAME LAST_ERROR igm-with-hc-fvz6 europe-west1 RUNNING HEALTHY NONE my-template igm-with-hc-gtz3 europe-west1 RUNNING HEALTHY NONE my-template
La colonna
HEALTH_STATE
mostra lo stato di integrità di ogni VM.REST
Per un gruppo di istanze gestite a livello di regione, crea una richiesta
POST
al metodolistManagedInstances
:POST https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group/listManagedInstances
Per un gruppo di istanze gestite a livello di zona, utilizza il metodo
listManagedInstances
per i gruppi di istanze gestite a livello di zona:POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group/listManagedInstances
La richiesta restituisce una risposta simile alla seguente, che include un campo
instanceHealth
per ogni istanza gestita.{ "managedInstances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/example-group-5485", "instanceStatus": "RUNNING", "currentAction": "NONE", "lastAttempt": { }, "id": "6159431761228150698", "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/example-template", "version": { "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/example-template" }, "instanceHealth": [ { "healthCheck": "https://www.googleapis.com/compute/v1/projects/project-id/global/healthChecks/http-basic-check", "detailedHealthState": "HEALTHY" } ] }, { "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/example-group-sfdp", "instanceStatus": "STOPPING", "currentAction": "DELETING", "lastAttempt": { }, "id": "6622324799312181783", "instanceHealth": [ { "healthCheck": "https://www.googleapis.com/compute/v1/projects/project-id/global/healthChecks/http-basic-check", "detailedHealthState": "TIMEOUT" } ] } ] }
Stati di integrità
Sono disponibili i seguenti stati di salute della VM:
Le nuove VM restituiscono uno stato
UNHEALTHY
finché non vengono verificate dal sistema di controllo dell'integrità.La riparazione di una VM dipende dal relativo stato di integrità:
I tentativi di riparazione automatica possono essere ritardati se:
Vogliamo conoscere i tuoi casi d'uso, i tuoi problemi o i tuoi feedback sui valori dello stato di salute delle VM. Puoi condividere il tuo feedback con il nostro team all'indirizzo mig-discuss@google.com.
Controllare le azioni correnti sulle VM
Quando un gruppo di istanze gestite è in fase di creazione di un'istanza VM, imposta il campo di sola lettura
currentAction
dell'istanza suCREATING
. Se al gruppo è associato un criterio di riparazione automatica, dopo che la VM è stata creata ed è in esecuzione, il gruppo di istanze gestite imposta l'azione corrente dell'istanza suVERIFYING
e il controllo di integrità inizia a eseguire il probe dell'applicazione della VM. Se l'applicazione supera questo controllo di integrità iniziale entro il tempo necessario per l'avvio, la VM viene verificata e il gruppo di istanze gestite modifica il campocurrentAction
della VM inNONE
.Per controllare le azioni correnti sulle VM, consulta Visualizzare le azioni correnti sulle VM.
Controlla se il MIG è stabile
A livello di gruppo, Compute Engine compila un campo di sola lettura chiamato
status
che contiene un flagisStable
.Se tutte le VM del gruppo sono in esecuzione e sono in stato integro (ovvero il campo
currentAction
per ogni istanza gestita è impostato suNONE
), il gruppo di istanze gestite imposta il campostatus.isStable
sutrue
. Ricorda che la stabilità di un gruppo di istanze gestite dipende dalle configurazioni del gruppo oltre al criterio di riparazione automatica. Ad esempio, se il gruppo è sottoposto a scalabilità automatica e viene eseguito lo scale up o lo scale down, il gruppo di istanze gestite imposta il campostatus.isStable
sufalse
a causa dell'operazione del gestore della scalabilità automatica.Per controllare i valori del campo
status.isStable
del tuo gruppo di istanze gestite, consulta Verificare se un gruppo di istanze gestite è stabile.Visualizzare le operazioni di riparazione automatica storiche
Puoi utilizzare gcloud CLI o REST per visualizzare gli eventi di riparazione automatica passati.
gcloud
Utilizza il comando
gcloud compute operations list
con un filtro per visualizzare solo gli eventi di riparazione di riparazione automatica nel progetto.gcloud compute operations list --filter='operationType~compute.instances.repair.*'
Per ulteriori informazioni su un'operazione di riparazione specifica, utilizza il comando
describe
. Ad esempio:gcloud compute operations describe repair-1539070348818-577c6bd6cf650-9752b3f3-1d6945e5 --zone us-east1-b
REST
Per i MIG regionali, invia una richiesta
GET
alla risorsaregionOperations
e includi un filtro per limitare l'elenco di output agli eventicompute.instances.repair.*
.GET https://compute.googleapis.com/compute/v1/projects/project-id/region/region/operations?filter=operationType+%3D+%22compute.instances.repair.*%22
Per i gruppi di istanze gestite a livello di zona, utilizza la risorsa
zoneOperations
.GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/operations?filter=operationType+%3D+%22compute.instances.repair.*%22
Per ulteriori informazioni su un'operazione di riparazione specifica, invia una
GET
richiesta per l'operazione specifica. Ad esempio:GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/operations/repair-1539070348818-577c6bd6cf650-9752b3f3-1d6945e5
Che cos'è un buon controllo di integrità con riparazione automatica
I controlli di integrità utilizzati per la riparazione automatica devono essere prudenti, in modo da non eliminare e ricreare preventivamente le istanze. Quando un controllo di integrità dell'autoguaritore è troppo aggressivo, l'autoguaritore potrebbe scambiare le istanze occupate per istanze in stato di errore e riavviarle inutilmente, riducendo la disponibilità.
Passaggi successivi
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2024-12-19 UTC.
-