Configura un controllo di integrità e la riparazione automatica basati sull'applicazione


Questo documento descrive come configurare un controllo di integrità basato sull'applicazione per eseguire la riparazione automatica delle VM in un gruppo di istanze gestite (MIG). Descrive inoltre come svolgere le attività seguenti: utilizzare un controllo di integrità senza riparazione automatica, rimuovere un controllo di integrità, visualizzare la policy 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 MIG contrassegna la VM in stato non integro e la ripara per impostazione predefinita. La riparazione di una VM in base a un controllo di integrità basato sull'applicazione è chiamata riparazione automatica.

Puoi anche disattivare la riparazione automatica in un MIG in modo da poter utilizzare un controllo di integrità senza attivare le riparazioni per le VM in stato non integro.

Per scoprire di più sulle riparazioni in un MIG, consulta Informazioni sulla riparazione delle VM per l'alta affidabilità.

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso ai Google Cloud servizi e alle API. 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

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. 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.

        1. Install the Google Cloud CLI.

        2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        3. To initialize the gcloud CLI, run the following command:

          gcloud init
        4. 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.

          If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

        Per ulteriori informazioni, vedi Set up authentication for a local development environment.

        REST

        Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        Per saperne di più, consulta la sezione Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .

Prezzi

Quando configuri un controllo di integrità basato sull'applicazione, per impostazione predefinita Compute Engine scrive una voce di log in Cloud Logging ogni volta che lo stato di integrità di una VM cambia. Cloud Logging fornisce un'allocazione senza addebiti al mese, al di sopra della quale il prezzo del logging viene calcolato in base al volume di dati. Per evitare costi, puoi disattivare i log delle modifiche dello stato di integrità.

Configura un controllo di integrità basato sull'applicazione e la riparazione automatica

Per configurare un controllo di integrità basato sull'applicazione e la riparazione automatica in un MIG, segui questi passaggi:

  1. Se non l'hai ancora fatto, crea un controllo di integrità.
  2. Configura una policy di riparazione automatica nel MIG per applicare il controllo di integrità.

Crea un controllo di integrità

Puoi applicare un singolo controllo di integrità a un massimo di 50 MIG. 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. Per la riparazione automatica nei MIG puoi creare un controllo di integrità a livello di regione o globale. In questo esempio, crei 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

  1. 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 cerchi una risposta sulla porta 80 e che possa tollerare alcuni errori prima di contrassegnare le VM come UNHEALTHY e farle ricreare. In questo esempio, una VM viene contrassegnata come integra 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 fine 3 volte consecutive.

    1. Nella console Google Cloud , vai alla pagina Crea un controllo di integrità.

      Vai a Crea un controllo di integrità

    2. Assegna un nome al controllo di integrità, ad esempio example-check.

    3. Seleziona un Ambito. Puoi selezionare Singola regione o Globale. Per questo esempio, seleziona Globale.

    4. In Protocollo, assicurati che sia selezionato HTTP.

    5. Per Porta, inserisci 80.

    6. Nella sezione Criteri integrità, specifica i seguenti valori:

      1. In Intervallo di controllo, inserisci 5.
      2. In Timeout, inserisci 5.
      3. Imposta una Soglia stato integro per determinare il numero di controlli di integrità riusciti consecutivi che devono essere restituiti prima che una VM in stato non integro venga contrassegnata in stato integro. Per questo esempio, inserisci 1.
      4. Imposta una Soglia stato non integro per determinare il numero di controlli di integrità non riusciti consecutivi che devono essere restituiti prima che una VM in stato integro venga contrassegnata in stato non integro. Per questo esempio, inserisci 3.
    7. Fai clic su Crea per creare il controllo di integrità.

  2. 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 compresi negli intervalli 130.211.0.0/22 e 35.191.0.0/16, quindi assicurati che le regole firewall di rete consentano la connessione del controllo di integrità. Per questo esempio, il MIG utilizza la rete default e le relative VM sono in ascolto sulla porta 80. Se la porta 80 non è già aperta sulla rete predefinita, crea una regola firewall.

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

      Vai a Policy firewall

    2. Fai clic su Crea regola firewall.

    3. Inserisci un nome per la regola firewall. Ad esempio, allow-health-check.

    4. In Rete, seleziona la rete default.

    5. In Destinazioni, seleziona All instances in the network.

    6. In Filtro di origine, seleziona IPv4 ranges.

    7. In Intervalli IPv4 di origine, inserisci 130.211.0.0/22 e 35.191.0.0/16.

    8. In Protocolli e porte, seleziona Protocolli e porte specificati e segui questi passaggi:

      1. Seleziona TCP.
      2. Nel campo Porte, inserisci 80.
    9. Fai clic su Crea.

gcloud

  1. 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 cerchi una risposta sulla porta 80 e che possa tollerare alcuni errori prima di contrassegnare le VM come UNHEALTHY e farle ricreare. In questo esempio, la VM viene contrassegnata in stato integro se restituisce un risultato positivo una volta. La VM viene contrassegnata in stato non integro se il controllo non va a buon fine 3 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
    
  2. 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 compresi negli intervalli 130.211.0.0/22 e 35.191.0.0/16, quindi assicurati che le regole firewall consentano la connessione del controllo di integrità. Per questo esempio, il MIG utilizza la rete default e le relative VM sono in ascolto sulla porta 80. Se la porta 80 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

  1. 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 di contrassegnare le VM come UNHEALTHY e farle ricreare. In questo esempio, una VM viene contrassegnata in stato integro se restituisce un risultato positivo una volta. La VM viene contrassegnata in stato non integro se il controllo non va a buon fine 3 volte consecutive. La seguente richiesta crea un controllo di integrità globale.

    resource "google_compute_http_health_check" "default" {
      name                = "example-check"
      timeout_sec         = 10
      check_interval_sec  = 30
      healthy_threshold   = 1
      unhealthy_threshold = 3
      port                = 80
    }
  2. Crea un firewall utilizzando la risorsa google_compute_firewall.

    I probe del controllo di integrità provengono da indirizzi compresi negli intervalli 130.211.0.0/22 e 35.191.0.0/16, quindi assicurati che le regole firewall consentano la connessione del controllo di integrità. Per questo esempio, il MIG utilizza la rete default e le relative VM sono in ascolto sulla porta 80. Se la porta 80 non è già aperta sulla rete predefinita, crea una regola firewall.

    resource "google_compute_firewall" "default" {
      name          = "allow-health-check"
      network       = "default"
      source_ranges = ["130.211.0.0/22", "35.191.0.0/16"]
      allow {
        protocol = "tcp"
        ports    = [80]
      }
    }

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

REST

  1. 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 cerchi una risposta sulla porta 80 e che possa tollerare alcuni errori prima di contrassegnare le VM come UNHEALTHY e farle ricreare. In questo esempio, una VM viene contrassegnata in stato integro se restituisce un risultato positivo una volta. La VM viene contrassegnata in stato non integro se il controllo non va a buon fine 3 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
    }
    
  2. 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 compresi negli intervalli 130.211.0.0/22 e 35.191.0.0/16, quindi assicurati che le regole firewall consentano la connessione del controllo di integrità. Per questo esempio, il MIG utilizza la rete default e le relative VM sono in ascolto sulla porta 80. Se la porta 80 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 l'ID progetto.

Configura una policy di riparazione automatica in un MIG

In un MIG, puoi configurare una sola policy di riparazione automatica per applicare un controllo di integrità.

Prima di configurare una policy di riparazione automatica, se non hai già un controllo di integrità, creane uno. Per la riparazione automatica nei MIG puoi utilizzare un controllo di integrità a livello di regione o globale. Un controllo di integrità a livello di regione riduce le dipendenze tra regioni e contribuisce a garantire la residenza dei dati, mentre un controllo di integrità globale è utile se vuoi utilizzare lo stesso controllo di integrità per i MIG in più regioni.

Se vuoi evitare di attivare inavvertitamente la riparazione automatica durante la configurazione di un nuovo controllo di integrità o vuoi utilizzare un controllo di integrità senza riparazione automatica, consulta Configura un controllo di integrità senza riparazione automatica. Puoi anche disattivare la riparazione automatica dopo aver configurato un controllo di integrità nel MIG.

Per configurare una policy di riparazione automatica, seleziona una delle seguenti opzioni:

Console

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

    Vai a Gruppi di istanze

  2. Nella colonna Nome dell'elenco, fai clic sul nome del MIG in cui vuoi applicare il controllo di integrità.

  3. Fai clic su Modifica per modificare questo MIG.

  4. Nella sezione Ciclo di vita di un'istanza VM, in Riparazione automatica, seleziona un controllo di integrità globale o a livello di regione.

  5. Modifica o mantieni l'impostazione Ritardo iniziale.

    Il ritardo iniziale è il numero di secondi necessari a una nuova VM per l'inizializzazione e l'esecuzione del relativo script di avvio. Durante il periodo di ritardo iniziale di una VM, il MIG ignora i controlli di integrità non riusciti perché la VM potrebbe essere in fase di avvio. In questo modo, il MIG non ricrea prematuramente una VM. Se il controllo di integrità riceve una risposta di stato integro 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 diventa VERIFYING. Il valore del ritardo iniziale deve essere compreso tra 0 e 3600 secondi. Nella console, il valore predefinito è 300 secondi.

  6. Fai clic su Salva per applicare le modifiche.

gcloud

Per configurare la policy di riparazione automatica in un MIG esistente, utilizza il comando update. Ad esempio, utilizza il seguente comando per configurare la policy di riparazione automatica in un MIG a livello di zona esistente:

gcloud compute instance-groups managed update MIG_NAME \
    --health-check HEALTH_CHECK_URL \
    --initial-delay INITIAL_DELAY \
    --zone ZONE

Per configurare la policy di riparazione automatica durante la creazione di un MIG, utilizza il comando create. Ad esempio, utilizza il seguente comando per configurare la policy di riparazione automatica quando crei un MIG 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 MIG in cui vuoi configurare la riparazione automatica.
  • SIZE: il numero di VM nel gruppo.
  • INSTANCE_TEMPLATE_URL: l'URL del modello di istanza che vuoi utilizzare per creare le VM nel MIG. L'URL può contenere l'ID o il nome del modello di istanza. Specifica uno dei seguenti valori:
    • Per un modello di istanza regionale: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Per un modello di istanza globale: INSTANCE_TEMPLATE_ID
  • 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.
  • INITIAL_DELAY: il numero di secondi necessari a una nuova VM per l'inizializzazione e l'esecuzione del relativo script di avvio. Durante il periodo di ritardo iniziale di una VM, il MIG ignora i controlli di integrità non riusciti perché la VM potrebbe essere in fase di avvio. In questo modo, il MIG non ricrea prematuramente una VM. Se il controllo di integrità riceve una risposta di stato integro 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 diventa VERIFYING. Il valore del ritardo iniziale deve essere compreso tra 0 e 3600 secondi. Il valore predefinito è 0.
  • ZONE: la zona in cui si trova il MIG. Per un MIG a livello di regione, usa il flag --region.

Terraform

Per configurare una policy di riparazione automatica in un MIG, utilizza il blocco auto_healing_policies.

L'esempio seguente configura la policy di riparazione automatica in un MIG a livello di zona. Per saperne di più sulla risorsa utilizzata nell'esempio, consulta google_compute_instance_group_manager. Per un MIG a livello di regione, utilizza la risorsa google_compute_region_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name               = "igm-with-hc"
  base_instance_name = "test"
  target_size        = 3
  zone               = "us-central1-f"
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  auto_healing_policies {
    health_check      = google_compute_http_health_check.default.id
    initial_delay_sec = 30
  }
}

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

REST

Per configurare la policy di riparazione automatica in un MIG esistente, utilizza il metodo patch come segue:

Ad esempio, esegui la seguente chiamata per configurare la riparazione automatica in un MIG 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 la policy di riparazione automatica durante la creazione di un MIG, utilizza il metodo insert come segue:

Ad esempio, esegui la seguente chiamata per configurare la policy di riparazione automatica quando crei un MIG 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 MIG in cui vuoi configurare la riparazione automatica.
  • SIZE: il numero di VM nel gruppo.
  • INSTANCE_TEMPLATE_URL: l'URL del modello di istanza che vuoi utilizzare per creare le VM nel MIG. L'URL può contenere l'ID o il nome del modello di istanza. Specifica uno dei seguenti valori:
    • Per un modello di istanza regionale: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Per un modello di istanza globale: INSTANCE_TEMPLATE_ID
  • 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.
  • INITIAL_DELAY: il numero di secondi necessari a una nuova VM per l'inizializzazione e l'esecuzione del relativo script di avvio. Durante il periodo di ritardo iniziale di una VM, il MIG ignora i controlli di integrità non riusciti perché la VM potrebbe essere in fase di avvio. In questo modo, il MIG non ricrea prematuramente una VM. Se il controllo di integrità riceve una risposta di stato integro 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 diventa VERIFYING. Il valore del ritardo iniziale deve essere compreso tra 0 e 3600 secondi. Il valore predefinito è 0.
  • ZONE: la zona in cui si trova il MIG. Per un MIG a livello di regione, utilizza regions/REGION nell'URL.

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 in stato integro (oppure le ricrea) in base alla configurazione della riparazione automatica. Ad esempio, se configuri un ritardo iniziale di 5 minuti, un intervallo di controllo di integrità di 1 minuto e una soglia stato integro di 1 controllo, la sequenza temporale sarà la seguente:

  • 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 stato integro (60 s * 1)
  • = 16 minuti prima che la VM venga contrassegnata in stato integro o ricreata

Configura un controllo di integrità senza riparazione automatica

Puoi disattivare la riparazione automatica in un MIG e utilizzare il controllo di integrità configurato per monitorare l'integrità dell'applicazione oppure puoi implementare la tua logica di riparazione. La disattivazione della riparazione automatica in un MIG non influisce sul funzionamento del controllo di integrità. Il controllo di integrità continua a eseguire il probe dell'applicazione e fornisce gli stati di integrità della VM. Tuttavia, il MIG non ripara più le VM in stato non integro.

Per configurare un controllo di integrità senza riparazione automatica, seleziona una delle seguenti opzioni.

Console

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

    Vai a Gruppi di istanze

  2. Nella colonna Nome dell'elenco, fai clic sul nome del MIG in cui vuoi applicare il controllo di integrità.

  3. Fai clic su Modifica per modificare questo MIG.

  4. Nella sezione Ciclo di vita di un'istanza VM, in Riparazione automatica, seleziona un controllo di integrità globale o a livello di regione.

  5. Modifica o mantieni l'impostazione Ritardo iniziale.

    Il ritardo iniziale è il numero di secondi necessari a una nuova VM per l'inizializzazione e l'esecuzione del relativo script di avvio. Durante il periodo di ritardo iniziale di una VM, il MIG ignora i controlli di integrità non riusciti perché la VM potrebbe essere in fase di avvio. In questo modo, il MIG non ricrea prematuramente una VM. Se il controllo di integrità riceve una risposta di stato integro 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 diventa VERIFYING. Il valore del ritardo iniziale deve essere compreso tra 0 e 3600 secondi. Nella console, il valore predefinito è 300 secondi.

  6. Nel menu a discesa In caso di controllo di integrità non riuscito, seleziona Nessuna azione.

  7. Fai clic su Salva per applicare le modifiche.

gcloud

Per configurare un controllo di integrità senza riparazione automatica, quando specifichi la configurazione del controllo di integrità devi impostare anche il flag --action-on-vm-failed-health-check su do-nothing come segue:

  • In un MIG esistente, utilizza il comando beta update.

    Ad esempio, utilizza il seguente comando in un MIG a livello di zona esistente:

    gcloud beta compute instance-groups managed update MIG_NAME \
        --health-check HEALTH_CHECK_URL \
        --initial-delay INITIAL_DELAY \
        --action-on-vm-failed-health-check do-nothing \
        --zone ZONE
    
  • Quando crei un MIG, utilizza il comando beta create.

    Ad esempio, utilizza il seguente comando durante la creazione di un MIG a livello di zona:

    gcloud beta compute instance-groups managed create MIG_NAME \
        --size SIZE \
        --template INSTANCE_TEMPLATE_URL \
        --health-check HEALTH_CHECK_URL \
        --initial-delay INITIAL_DELAY \
        --action-on-vm-failed-health-check do-nothing \
        --zone ZONE
    

Sostituisci quanto segue:

  • MIG_NAME: il nome del MIG in cui vuoi configurare la riparazione automatica.
  • SIZE: il numero di VM nel gruppo.
  • INSTANCE_TEMPLATE_URL: l'URL del modello di istanza che vuoi utilizzare per creare le VM nel MIG. L'URL può contenere l'ID o il nome del modello di istanza. Specifica uno dei seguenti valori:
    • Per un modello di istanza regionale: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Per un modello di istanza globale: INSTANCE_TEMPLATE_ID
  • 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.
  • INITIAL_DELAY: il numero di secondi necessari a una nuova VM per l'inizializzazione e l'esecuzione del relativo script di avvio. Durante il periodo di ritardo iniziale di una VM, il MIG ignora i controlli di integrità non riusciti perché la VM potrebbe essere in fase di avvio. In questo modo, il MIG non ricrea prematuramente una VM. Se il controllo di integrità riceve una risposta di stato integro 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 diventa VERIFYING. Il valore del ritardo iniziale deve essere compreso tra 0 e 3600 secondi. Il valore predefinito è 0.
  • ZONE: la zona in cui si trova il MIG. Per un MIG a livello di regione, usa il flag --region.

REST

Per configurare un controllo di integrità senza riparazione automatica, quando specifichi la configurazione del controllo di integrità devi impostare anche il campo onFailedHealthCheck su DO_NOTHING come segue:

  • In un MIG esistente, utilizza il metodo beta patch come segue:

    Ad esempio, esegui la seguente chiamata in un MIG a livello di zona:

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME
    {
      "autoHealingPolicies": [
        {
          "healthCheck": "HEALTH_CHECK_URL",
          "initialDelaySec": INITIAL_DELAY
        }
      ],
      "instanceLifecyclePolicy": {
        "onFailedHealthCheck": "DO_NOTHING"
      }
    }
    
  • Quando crei un MIG, utilizza il metodo beta insert come segue:

    Ad esempio, esegui la seguente chiamata quando crei in un MIG a livello di zona:

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    {
      "name": "MIG_NAME",
      "targetSize": SIZE,
      "instanceTemplate": "INSTANCE_TEMPLATE_URL",
      "autoHealingPolicies": [
        {
          "healthCheck": "HEALTH_CHECK_URL",
          "initialDelaySec": INITIAL_DELAY
        }
      ],
      "instanceLifecyclePolicy": {
        "onFailedHealthCheck": "DO_NOTHING"
      }
    }
    

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto.
  • MIG_NAME: il nome del MIG in cui vuoi configurare la riparazione automatica.
  • SIZE: il numero di VM nel gruppo.
  • INSTANCE_TEMPLATE_URL: l'URL del modello di istanza che vuoi utilizzare per creare le VM nel MIG. L'URL può contenere l'ID o il nome del modello di istanza. Specifica uno dei seguenti valori:
    • Per un modello di istanza regionale: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Per un modello di istanza globale: INSTANCE_TEMPLATE_ID
  • 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.
  • INITIAL_DELAY: il numero di secondi necessari a una nuova VM per l'inizializzazione e l'esecuzione del relativo script di avvio. Durante il periodo di ritardo iniziale di una VM, il MIG ignora i controlli di integrità non riusciti perché la VM potrebbe essere in fase di avvio. In questo modo, il MIG non ricrea prematuramente una VM. Se il controllo di integrità riceve una risposta di stato integro 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 diventa VERIFYING. Il valore del ritardo iniziale deve essere compreso tra 0 e 3600 secondi. Il valore predefinito è 0.
  • ZONE: la zona in cui si trova il MIG. Per un MIG a livello di regione, utilizza regions/REGION nell'URL.

Dopo aver configurato il controllo di integrità, puoi monitorare gli stati di integrità delle VM per verificare che il controllo funzioni come previsto. Se vuoi che il MIG ripari le VM in stato non integro, puoi attivare la riparazione automatica.

Rimuovi un controllo di integrità

Per rimuovere un controllo di integrità configurato in una policy di riparazione automatica:

Console

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

    Vai a Gruppi di istanze

    1. Fai clic sul nome del MIG da cui vuoi rimuovere il controllo di integrità.
    2. Fai clic su Modifica per modificare questo MIG.
    3. Nella sezione Ciclo di vita di un'istanza VM, in Riparazione automatica, seleziona Nessun controllo di integrità.
    4. Fai clic su Salva per applicare le modifiche.

gcloud

Per rimuovere la configurazione del controllo di integrità in una policy 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 MIG.

REST

Per rimuovere la configurazione del controllo di integrità in una policy di riparazione automatica, imposta la policy di riparazione automatica su un valore vuoto.

Ad esempio, per rimuovere il controllo di integrità in un MIG a livello di zona, invia 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 MIG in cui vuoi configurare la riparazione automatica.
  • ZONE: la zona in cui si trova il MIG. Per un MIG a livello di regione, utilizza regions/REGION.

Visualizza la policy di riparazione automatica in un MIG

Per visualizzare la policy di riparazione automatica di un MIG:

Console

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

    Vai a Gruppi di istanze

  2. Fai clic sul nome del MIG di cui vuoi visualizzare la policy di riparazione automatica.

  3. Vai alla scheda Dettagli.

  4. Nella sezione Ciclo di vita di un'istanza VM, nel campo Riparazione automatica sono visualizzati il controllo di integrità e il ritardo iniziale configurato nella policy di riparazione automatica.

gcloud

Per visualizzare la policy di riparazione automatica in un MIG, utilizza il seguente comando:

gcloud compute instance-groups managed describe MIG_NAME \
    --format="(autoHealingPolicies)"

Sostituisci MIG_NAME con il nome di un MIG.

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 la policy di riparazione automatica in un MIG, utilizza i metodi REST come segue:

Ad esempio, invia la seguente richiesta per visualizzare la policy di riparazione automatica in un MIG 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 MIG in cui vuoi configurare la riparazione automatica.
  • ZONE: la zona in cui si trova il MIG. Per un MIG a livello di regione, utilizza regions/REGION.

Controlla lo stato

Dopo aver configurato un controllo di integrità basato sull'applicazione in un MIG, puoi verificare che una VM sia in esecuzione e che la relativa applicazione risponda nei modi seguenti:

Verifica l'integrità delle VM

Se hai configurato un controllo di integrità basato sull'applicazione nel tuo MIG, puoi esaminare lo stato di integrità di ogni istanza gestita.

Controlla gli stati di integrità delle istanze gestite per:

  • Identificare le VM in stato non integro che non sono in fase di riparazione. Una VM potrebbe non essere riparata immediatamente anche se è stata diagnosticata come in stato non integro nelle seguenti situazioni:
    • La VM è ancora in fase di avvio e non è ancora trascorso il periodo di ritardo iniziale.
    • È in corso la riparazione di una quota significativa di istanze in stato non integro. Il MIG ritarda l'ulteriore riparazione automatica per garantire di poter continuare a eseguire un sottoinsieme di istanze.
  • Rilevare 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à dell'applicazione non valido se l'istanza segnala uno stato di integrità TIMEOUT.
  • Determinare il valore del ritardo iniziale da configurare misurando il tempo tra il passaggio della VM a uno stato RUNNING e il passaggio a uno stato di integrità HEALTHY. Puoi misurare questo gap eseguendo il polling del metodo list-instances o osservando il tempo tra l'operazione instances.insert e il primo indicatore di stato integro ricevuto.

Utilizza la console, lo strumento a riga di comando gcloud o REST per visualizzare gli stati di integrità.

Console

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

    Vai a Gruppi di istanze.

  2. Nella colonna Nome dell'elenco, fai clic sul nome del MIG che vuoi esaminare. Viene visualizzata una pagina con le proprietà del gruppo di istanze e l'elenco delle VM incluse nel gruppo.

  3. Se una VM non è in stato 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 MIG_NAME
    --zone ZONE

Il comando restituisce un output simile al seguente. Il campo HEALTH_STATE mostra lo stato di integrità di ogni VM.

NAME: igm-with-hc-fvz6
ZONE: europe-west1-b
STATUS: RUNNING
HEALTH_STATE: HEALTHY
ACTION: NONE
INSTANCE_TEMPLATE: my-template
VERSION_NAME:
LAST_ERROR:

NAME: igm-with-hc-gtz3
ZONE: europe-west1-b
STATUS: RUNNING
HEALTH_STATE: HEALTHY
ACTION: NONE
INSTANCE_TEMPLATE: my-template
VERSION_NAME:
LAST_ERROR:

Sostituisci quanto segue:

  • MIG_NAME: il nome del MIG.
  • ZONE: la zona in cui si trova il MIG. Per un MIG a livello di regione, utilizza --region REGION.

REST

Per un MIG a livello di regione, crea una richiesta POST al metodo listManagedInstances:

POST https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/MIG_NAME/listManagedInstances

Per un MIG a livello di zona, utilizza il metodo listManagedInstances per i MIG a livello di zona:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/MIG_NAME/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/sproject-id/zones/zone/instances/igm-with-hc-fvz6",
      "instanceStatus": "RUNNING",
      "currentAction": "NONE",
      "id": "6159431761228150698",
      "version": {
        "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/my-template"
      },
      "instanceHealth": [
        {
          "healthCheck": "https://www.googleapis.com/compute/v1/projects/project-id/global/healthChecks/example-check-01",
          "detailedHealthState": "HEALTHY"
        }
      ],
      "name": "igm-with-hc-fvz6"
    },
    {
      "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/igm-with-hc-gtz3",
      "instanceStatus": "RUNNING",
      "currentAction": "NONE",
      "id": "6622324799312181783",
      "version": {
        "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/my-template"
      },
      "instanceHealth": [
        {
          "healthCheck": "https://www.googleapis.com/compute/v1/projects/project-id/global/healthChecks/example-check-01",
          "detailedHealthState": "HEALTHY"
        }
      ],
      "name": "igm-with-hc-gtz3"
    }
  ]
}

Stati di integrità

Sono disponibili i seguenti stati di integrità delle VM:

  • HEALTHY: la VM è raggiungibile, è possibile stabilire una connessione all'endpoint del 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 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 del 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 server sovraccarica su una VM.
  • UNKNOWN: il sistema di controllo di integrità non è a conoscenza della VM o il suo stato di integrità non è noto al momento. Potrebbero essere necessari 10 minuti prima dell'inizio del monitoraggio sulle nuove VM in un MIG.

Le nuove VM restituiscono uno stato UNHEALTHY finché non vengono verificate dal sistema di controllo di integrità.

La riparazione di una VM dipende dal relativo stato di integrità:

  • Se lo stato di integrità di una VM è UNHEALTHY o TIMEOUT e il suo periodo di inizializzazione è terminato, il MIG tenta immediatamente di ripararla.
  • Se lo stato di integrità di una VM è UNKNOWN, il MIG 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.

I tentativi di riparazione automatica possono essere ritardati se:

  • Una VM rimane in uno 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, le tue sfide o i tuoi 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 MIG sta creando un'istanza VM, imposta il campo di sola lettura currentAction dell'istanza su CREATING. Se al gruppo è associata una policy di riparazione automatica, dopo che la VM è stata creata ed è in esecuzione, il MIG imposta l'azione attuale dell'istanza su VERIFYING 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 MIG modifica il campo currentAction della VM in NONE.

Per controllare le azioni attuali sulle VM, consulta Visualizza le azioni attuali sulle VM.

Verifica se il MIG è stabile

A livello di gruppo, Compute Engine compila un campo di sola lettura chiamato status, che contiene un flag isStable.

Se tutte le VM del gruppo sono in esecuzione e sono in stato integro (ovvero il campo currentAction per ogni istanza gestita è impostato su NONE), il MIG imposta il campo status.isStable su true. Ricorda che la stabilità di un MIG dipende da configurazioni del gruppo che vanno oltre la policy di riparazione automatica. Ad esempio, se il gruppo è configurato per la scalabilità automatica e viene fatto lo scale in o lo scale out, il MIG imposta il campo status.isStable su false a causa dell'operazione del gestore della scalabilità automatica.

Per controllare i valori del campo status.isStable del tuo MIG, consulta Controlla se il MIG è stabile.

Visualizza la cronologia delle operazioni di riparazione automatica

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 automatica nel progetto.

gcloud compute operations list --filter='operationType~compute.instances.repair.*'

Per saperne di più 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 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 MIG 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 saperne di più su un'operazione di riparazione specifica, invia una richiesta GET per l'operazione specifica. Ad esempio:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/operations/repair-1539070348818-577c6bd6cf650-9752b3f3-1d6945e5

Caratteristiche di 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 le istanze quando non è necessario. Quando un controllo di integrità del gestore della riparazione automatica è troppo aggressivo, il gestore potrebbe scambiare le istanze occupate per istanze in errore e riavviarle inutilmente, riducendo la disponibilità.

  • unhealthy-threshold. Deve essere maggiore di 1. Idealmente, imposta questo valore almeno su 3. Questo assicura la protezione da errori rari come la perdita di pacchetti di rete.
  • healthy-threshold. Un valore di 2 è sufficiente per la maggior parte delle app.
  • timeout. Imposta un valore di tempo elevato (almeno cinque volte superiore al tempo di risposta previsto). Questo assicura la protezione 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 in errore non viene rilevata per tempo. Quando un valore è troppo breve, le istanze e la rete possono diventare congestionate a causa dell'elevato numero di probe del controllo di integrità inviati ogni secondo.

Passaggi successivi