Questo documento descrive come configurare un controllo di integrità basato su applicazioni per la riparazione automatica delle VM in un gruppo di istanze gestite. Descrive inoltre come effettuare le seguenti operazioni: 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 l'applicazione su una VM risponda come previsto. Se il controllo di integrità che configuri rileva che l'applicazione su una VM non risponde, il gruppo di istanze gestite contrassegna la VM come non integro e la ripara. La riparazione di una VM basata su un controllo di integrità basato sull'applicazione è chiamata autohealing.
Puoi anche disattivare le riparazioni in un gruppo di istanze gestite in modo da poter utilizzare un controllo di integrità senza attivare la riparazione automatica.
Per saperne di più sulle riparazioni in un gruppo di istanze gestite, consulta Informazioni sulla riparazione delle VM per l'alta disponibilità.
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.
Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:
Console
Quando utilizzi la console Google Cloud per accedere ai servizi e alle API di Google Cloud, non devi configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
- Imposta una regione e una zona predefinite.
Terraform
Per utilizzare gli esempi Terraform in questa pagina da un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.
- Installa Google Cloud CLI.
-
Per initialize gcloud CLI, esegui questo comando:
gcloud init
-
Crea credenziali di autenticazione locali per il tuo Account Google:
gcloud auth application-default login
Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
-
Prezzi
Quando configuri un controllo di integrità basato sull'applicazione, ogni volta che lo stato di integrità di una VM cambia, per impostazione predefinita Compute Engine scrive una voce di log in Cloud Logging. Cloud Logging offre un'allocazione gratuita al mese, dopodiché i prezzi del logging vengono calcolati in base al volume di dati. Per evitare costi, puoi disabilitare i log delle modifiche dello stato di integrità.
Configurazione di controllo di integrità e riparazione automatica basati sull'applicazione
Per configurare un controllo di integrità basato sull'applicazione e la riparazione automatica in un gruppo di istanze gestite, devi fare quanto segue:
- 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à
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à.
Nell'esempio seguente viene illustrato come creare un controllo di integrità per la riparazione automatica. Puoi creare un controllo di integrità a livello di regione o globale per la riparazione automatica nei gruppi di istanze gestite. In questo esempio, creerai 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 server web, configura una regola firewall.
Console
Crea un controllo di integrità per la riparazione automatica più conservativo 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 che le VM vengano contrassegnate comeUNHEALTHY
e ne facciano ricreate. In questo esempio, una VM è contrassegnata come integro se il controllo di integrità viene restituito correttamente una volta. La VM è contrassegnata come non integro se il controllo di integrità restituisce3
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 A livello di regione o Globale. Per questo esempio, seleziona Globale.
Per Protocollo, assicurati che sia selezionato HTTP.
In Porta, inserisci
80
.Nella sezione Criteri di integrità, fornisci i seguenti valori:
- In Controlla intervallo, inserisci
5
. - In Timeout, inserisci
5
. - Imposta una soglia di integrità per determinare quanti controlli di integrità consecutivi non riusciti devono essere restituiti prima che una VM non integro venga contrassegnata come integro. Per questo esempio, inserisci
1
. - Imposta una Soglia di stato non integro per determinare quanti controlli di integrità consecutivi non riusciti devono essere restituiti prima che una VM in stato integro venga contrassegnata come non integro. Per questo esempio, inserisci
3
.
- In Controlla intervallo, inserisci
Fai clic su Crea per creare il controllo di integrità.
Crea una regola firewall per consentire ai probe del controllo di integrità di connettersi alla tua app.
I probe per il 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 di rete consentano la connessione del controllo di integrità. Per questo esempio, il gruppo di istanze gestite utilizza la retedefault
e le sue VM sono in ascolto sulla porta80
. Se la porta80
non è già aperta nella 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 corrispondenza di Rete, seleziona la rete
default
.In Destinazioni, seleziona
All instances in the network
.In Filtro di 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 procedi nel seguente modo:
- Seleziona TCP.
- Nel campo Porte, inserisci
80
.
Fai clic su Crea.
gcloud
Crea un controllo di integrità per la riparazione automatica più conservativo 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 che le VM vengano contrassegnate comeUNHEALTHY
e ne facciano ricreate. In questo esempio, la VM è contrassegnata come integro se restituisce correttamente una volta. La VM è contrassegnata come non integro se restituisce3
di volte consecutive senza errori. Il comando seguente 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 connettersi alla tua app.
I probe per il 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 di istanze gestite utilizza la retedefault
e le relative VM restano in ascolto 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
Terraform
Crea un controllo di integrità utilizzando la risorsa
google_compute_http_health_check
.Ad esempio, crea un controllo di integrità che cerchi una risposta sulla porta
80
e che possa tollerare alcuni errori prima che le VM vengano contrassegnate comeUNHEALTHY
e ne facciano ricreate. In questo esempio, una VM viene contrassegnata come integro se restituisce una sola volta. La VM è contrassegnata come non integro se restituisce3
di volte consecutive senza errori. La richiesta seguente crea un controllo di integrità globale.Crea un firewall utilizzando la risorsa
google_compute_firewall
.I probe per il 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 di istanze gestite utilizza la retedefault
e le sue VM sono in ascolto sulla porta80
. Se la porta80
non è già aperta nella rete predefinita, crea una regola firewall.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
REST
Crea un controllo di integrità per la riparazione automatica più conservativo 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 che le VM vengano contrassegnate comeUNHEALTHY
e ne facciano ricreate. In questo esempio, una VM viene contrassegnata come integro se restituisce una sola volta. La VM è contrassegnata come non integro se restituisce3
di volte consecutive senza errori. La richiesta seguente 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 connettersi alla tua app.
I probe per il 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 di istanze gestite utilizza la retedefault
e le sue VM sono in ascolto sulla porta80
. Se la porta80
non è già aperta nella 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.
Configura 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à a livello di regione o globale per la riparazione automatica nei gruppi di istanze gestite. I controlli di integrità a livello di regione riducono le dipendenze tra regioni e aiutano a raggiungere la residenza dei dati. I controlli di integrità globali sono utili se vuoi usare lo stesso controllo di integrità per i gruppi di istanze gestite in più regioni.
Prima di configurare un criterio di riparazione automatica:
- Se non hai già un controllo di integrità, creane uno.
- Se vuoi evitare la falsa attivazione della riparazione automatica durante la configurazione di un nuovo controllo di integrità, devi prima disattivare le riparazioni nel gruppo di istanze gestite e quindi configurare il criterio di riparazione automatica.
Console
Nella console Google Cloud, vai alla pagina Gruppi di istanze.
Nella colonna Nome dell'elenco, fai clic sul nome del gruppo di istanze gestite a cui vuoi applicare il controllo di integrità.
Fai clic su Modifica per modificare questo gruppo di istanze gestite.
Nella sezione Ciclo di vita delle istanze VM, in Riparazione automatica, seleziona un controllo di integrità globale o a livello di regione.
Modifica o mantieni l'impostazione Ritardo iniziale.
Il ritardo iniziale è il numero di secondi impiegati da una nuova VM per inizializzare 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 nel processo di avvio. In questo modo il gruppo di istanze gestite non può ricreare prematuramente una VM. Se il controllo di integrità riceve una risposta in stato integro durante il ritardo iniziale, indica che il processo di avvio è completo e la VM è pronta. Il timer di 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.
gcloud
Per configurare il criterio di riparazione automatica in un gruppo di istanze gestite esistente, utilizza il comando update
.
Ad esempio, utilizza questo comando per configurare il criterio di riparazione automatica in un gruppo di istanze gestite di zona 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 questo comando per configurare il criterio di riparazione automatica quando crei un gruppo di istanze gestite a livello di zona:
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:
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 integrità che vuoi configurare per la riparazione automatica. Se vuoi utilizzare un controllo di integrità a livello di regione, devi fornire l'URL parziale del controllo di integrità a livello di regione. 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 impiegati da una nuova VM per inizializzare ed eseguire lo 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. Questo impedisce al gruppo di istanze gestite di ricreare una VM prematuramente. Se il controllo di integrità riceve una risposta in stato integro durante il ritardo iniziale, significa che il processo di avvio è completo e che la VM è pronta. Il timer di 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
.
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 a livello di zona. Per ulteriori informazioni sulla risorsa utilizzata nell'esempio, consulta google_compute_instance_group_manager
. Per un
gruppo di istanze gestite a livello di regione, utilizza la risorsa google_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:
- 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
.
Ad esempio, effettua la chiamata seguente per configurare la riparazione automatica in un gruppo di istanze gestite a livello di zona 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:
- 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
.
Ad esempio, effettua la chiamata seguente 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:
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 integrità che vuoi configurare per la riparazione automatica. 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 impiegati da una nuova VM per inizializzare ed eseguire lo 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. Questo impedisce al gruppo di istanze gestite di ricreare una VM prematuramente. Se il controllo di integrità riceve una risposta in stato integro durante il ritardo iniziale, significa che il processo di avvio è completo e che la VM è pronta. Il timer di 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, utilizzaregions/REGION
nell'URL.
Al termine della configurazione, potrebbero essere necessari 30 minuti prima che la riparazione automatica inizi a monitorare le VM nel gruppo. Dopo l'avvio del monitoraggio, Compute Engine inizia a contrassegnare le VM come integre (oppure le ricrea) in base alla tua configurazione di riparazione automatica. Ad esempio, se configuri un ritardo iniziale di 5 minuti, un intervallo di controllo di integrità di 1 minuto e una soglia di integrità pari a 1 controllo, la sequenza temporale sarà simile alla seguente:
- 30 minuti di ritardo 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 stato integro (60 s * 1)
- = 36 minuti prima che la VM venga contrassegnata come in stato integro o ricreata
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, quindi ripristinare le VM in corso.
Usa 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 funzionalità è utile negli scenari in cui vuoi utilizzare il controllo di integrità solo per monitorare l'integrità dell'applicazione o quando vuoi implementare una logica di riparazione personalizzata in base al controllo di integrità.
Per ripristinare il gruppo di istanze gestite in modo da riparare le VM in stato non integro, consulta Impostare un gruppo di istanze gestite in modo da riparare le VM non integre e non riuscite.
Rimuovi un controllo di integrità
Puoi rimuovere un controllo di integrità configurato in un criterio di riparazione automatica come segue:
Console
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 gruppo di istanze gestite.
- Nella sezione Ciclo di vita delle istanze VM, in Riparazione automatica, seleziona Nessun controllo di integrità.
- Fai clic su Salva per applicare le modifiche.
gcloud
Per rimuovere la configurazione del controllo di integrità in un criterio di riparazione automatica, utilizza il comando update
nel 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.
- 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
Ad esempio, per rimuovere il controllo di integrità in un gruppo di istanze gestite a livello di zona, effettua la seguente richiesta:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "autoHealingPolicies": [ {} ] }
Sostituisci quanto segue:
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
.
Visualizza criterio di riparazione automatica in un gruppo di istanze gestite
Puoi visualizzare il criterio di riparazione automatica di un gruppo di istanze gestite in questo modo:
Console
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 mostra il controllo di integrità e il ritardo iniziale configurato nel criterio di riparazione automatica.
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:
- 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
Ad esempio, effettua la seguente richiesta per visualizzare il criterio di riparazione automatica in un gruppo di istanze gestite a livello di zona:
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:
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
.
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 sua applicazione risponda utilizzando i seguenti modi:
- Controllare se le VM sono integri
- Controlla le azioni attuali sulle VM
- Verifica se il gruppo di istanze gestite è stabile
Controlla se le VM sono integri
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 lo stato di integrità dell'istanza gestita per:
- Identifica le VM in stato non integro che non vengono riparate. Una VM potrebbe non essere riparata immediatamente anche se è stata diagnosticata come non integro nelle seguenti situazioni:
- La VM è ancora in fase di avvio e il ritardo iniziale non è trascorso.
- È in corso la riparazione di una quota significativa delle istanze in stato non integro. Il gruppo di istanze gestite ritarda ulteriormente la riparazione automatica per garantire che il gruppo continui a eseguire un sottoinsieme di istanze.
- Rileva gli errori di configurazione del controllo di integrità. Ad esempio, puoi rilevare regole firewall configurate in modo errato o un endpoint di controllo di integrità delle applicazioni non valido se l'istanza segnala uno stato di integrità pari a
TIMEOUT
. - Per determinare il valore del ritardo iniziale da configurare, misura la quantità di tempo
tra il momento in cui la VM passa a uno stato
RUNNING
e il momento in cui la VM passa a uno stato di integritàHEALTHY
. Puoi misurare questa lacuna eseguendo il polling del metodolist-instances
o osservando il tempo tra l'operazione diinstances.insert
e il primo indicatore integro ricevuto.
Utilizza la console, lo strumento a riga di comando gcloud
o REST per visualizzare gli stati di integrità.
Console
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. Si apre una pagina con le proprietà del gruppo di istanze e un elenco di VM incluse nel gruppo.
Se una VM non è integro, puoi visualizzarne lo stato nella colonna Stato del controllo di integrità.
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
per il metodo listManagedInstances
:
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 del gruppo di istanze gestite a livello di zona listManagedInstances
:
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 integrità delle VM:
HEALTHY
: la VM è raggiungibile, è possibile stabilire una connessione all'endpoint per il controllo di integrità dell'applicazione e la risposta è conforme ai requisiti definiti dal controllo di integrità.DRAINING
: la VM è in fase di svuotamento. Le connessioni esistenti alla VM hanno il tempo di 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 del controllo di integrità dell'applicazione o il server su una VM non risponde entro il timeout specificato. Ad esempio, questo può essere causato da regole firewall non configurate correttamente o da un'applicazione server sovraccaricata su una VM.UNKNOWN
: il sistema di controllo di integrità non è a conoscenza della VM oppure la sua integrità non è nota al momento. L'avvio del monitoraggio può richiedere 30 minuti sulle nuove VM in un gruppo di istanze gestite.
Le nuove VM restituiscono uno stato UNHEALTHY
fino a quando non vengono verificate dal sistema di controllo di integrità.
La riparazione di una VM dipende dal suo stato di integrità:
- Se una VM ha uno stato di integrità
UNHEALTHY
oTIMEOUT
e ha superato il periodo di inizializzazione, il gruppo di istanze gestite tenta immediatamente di ripararla. - Se una VM ha uno stato di integrità pari a
UNKNOWN
, il gruppo di istanze gestite non la ripara immediatamente. Ciò consente di evitare riparazioni non necessarie di una VM per cui il segnale di controllo di integrità non è temporaneamente disponibile.
I tentativi di riparazione automatica possono subire ritardi se:
- Una VM rimane in stato non integro dopo più riparazioni consecutive.
- Nel gruppo esiste una quota complessiva significativa di VM in stato non integro.
Vogliamo conoscere i tuoi casi d'uso, i tuoi problemi o il tuo feedback sui valori dello stato di integrità delle VM. Puoi condividere il tuo feedback con il nostro team all'indirizzo mig-discuss@google.com.
Controlla le azioni attuali sulle VM
Quando un gruppo di istanze gestite è in fase di creazione di un'istanza VM, imposta il campo currentAction
di sola lettura dell'istanza su CREATING
. Se un criterio di riparazione automatica è associato al gruppo, dopo che la VM è stata creata ed eseguita, il gruppo di istanze gestite imposta l'azione corrente dell'istanza su VERIFYING
e il controllo di integrità inizia a esaminare l'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 campo currentAction
della VM in NONE
.
Per verificare le azioni attuali sulle VM, consulta Visualizzare le azioni attuali sulle VM.
Controlla se il gruppo di istanze gestite è stabile
A livello di gruppo, Compute Engine compila un campo di sola lettura denominato status
che contiene un flag isStable
.
Se tutte le VM nel gruppo sono in esecuzione e integri (ossia il campo currentAction
per ogni istanza gestita è impostato su NONE
), il gruppo di istanze gestite imposta il campo status.isStable
su true
. 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 ha la scalabilità automatica e viene fatto lo scale in o lo scale out, il gruppo di istanze gestite imposta il campo status.isStable
su false
a causa delle operazioni del gestore della scalabilità automatica.
Per controllare i valori del campo status.isStable
del gruppo di istanze gestite, vedi 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 precedenti.
gcloud
Utilizza il comando gcloud compute operations list
con un filtro per visualizzare solo gli eventi di riparazione della riparazione automatica nel tuo 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 gruppi di istanze gestite a livello di regione, invia una richiesta GET
alla risorsa
regionOperations
e includi un filtro per limitare l'ambito dell'elenco di output agli
eventi compute.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 richiesta GET
per l'operazione in questione. Ad esempio:
GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/operations/repair-1539070348818-577c6bd6cf650-9752b3f3-1d6945e5
Cosa rende un controllo di integrità efficace con riparazione automatica
I controlli di integrità utilizzati per la riparazione automatica dovrebbero essere conservativi in modo da non eliminare e ricreare preventivamente le istanze. Quando un controllo di integrità della correzione automatica è troppo aggressivo, la correzione automatica potrebbe scambiare le istanze occupate con quelle non riuscite e riavviarle inutilmente, riducendo la disponibilità.
unhealthy-threshold
. Deve essere superiore a1
. Idealmente, imposta questo valore su3
o su un valore superiore. Ciò protegge da errori rari come la perdita di pacchetti di rete.healthy-threshold
. Il valore2
è sufficiente per la maggior parte delle app.timeout
. Imposta questo valore di tempo su un valore ampio (5 volte o più rispetto al tempo di risposta previsto). In questo modo puoi proteggere da ritardi imprevisti, ad esempio istanze occupate o 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 abbastanza presto. Quando un valore è troppo breve, le istanze e la rete possono diventare misurabilmente occupate, dato l'elevato numero di probe di controllo di integrità inviati ogni secondo.
Passaggi successivi
- Prova il tutorial, Utilizzo della riparazione automatica per le app ad alta disponibilità.
- Monitora le modifiche dello stato di integrità delle VM.
- Applicare aggiornamenti della configurazione durante le riparazioni.