Riparare una VM in una zona alternativa

Questo documento descrive come consentire a un gruppo di istanze gestite (MIG) a livello di regione di riparare un'istanza di macchina virtuale (VM) in una zona alternativa quando il MIG non riesce a riparare la VM nella zona originale. Per scoprire di più sulle riparazioni in un MIG, consulta Informazioni sulla riparazione delle VM per l'alta affidabilità.

Quando crei un MIG a livello di regione, selezioni una o più zone in cui il MIG distribuisce le VM. Per impostazione predefinita, se una VM nel MIG non funziona, il MIG tenta di ripararla nella zona originale. Facoltativamente, puoi consentire al MIG di riparare la VM in una delle altre zone selezionate, il che è utile nei casi in cui il MIG non riesce a riparare la VM nella zona originale. Il MIG sceglie la zona alternativa in base alla capacità e alla quota disponibili.

Limitazioni

Quando configuri un MIG a livello di regione per riparare una VM in una zona alternativa, si applicano le seguenti limitazioni:

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Seleziona la scheda relativa alla modalità di utilizzo degli esempi in questa pagina:

    Console

    Quando utilizzi la Google Cloud console per accedere a Google Cloud servizi e API, non devi configurare l'autenticazione.

    gcloud

    1. Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:

      gcloud init

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  • Imposta una regione e una zona predefinite.
  • Terraform

    Per utilizzare gli esempi di Terraform in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.

    2. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

    3. Se utilizzi una shell locale, crea le credenziali di autenticazione locali per il tuo account utente:

      gcloud auth application-default login

      Non devi eseguire questa operazione se utilizzi Cloud Shell.

      Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.

    Per saperne di più, 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, utilizzi le credenziali che fornisci a gcloud CLI.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Autenticati per usare REST nella Google Cloud documentazione sull'autenticazione di.

Consenti le riparazioni in una zona alternativa

Per consentire a un MIG di riparare una VM in una zona alternativa, seleziona una delle seguenti opzioni:

Console

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

    Vai a Gruppi di istanze

  2. Se hai già un MIG, segui questi passaggi:

    1. Fai clic sul nome del MIG.
    2. Fai clic su Modifica.
  3. Se non hai ancora un MIG, segui questi passaggi:

    1. Fai clic su Crea gruppo di istanze.
    2. Inserisci un Nome.
    3. Seleziona un Template di istanza.
    4. Nella sezione Località, seleziona Più zone, quindi seleziona una regione e le zone.
    5. Nel menu a discesa Forma di distribuzione target, seleziona Bilanciata o Qualsiasi.

      • Se selezioni Bilanciata, nella finestra di dialogo visualizzata fai clic su Disattiva ridistribuzione istanze.

      • Se vuoi selezionare Qualsiasi, devi prima eliminare la configurazione della scalabilità automatica. Per eliminare la scalabilità automatica, nel menu a discesa Modalità di scalabilità automatica fai clic su Elimina configurazione della scalabilità automatica.

  4. Nella sezione Ciclo di vita di un'istanza VM, assicurati che i seguenti campi siano impostati come indicato di seguito:

    1. L'elenco Azione predefinita in caso di errore è impostato su Ripara istanza.

    2. Il campo Aggiornamenti durante la riparazione delle istanze VM è impostato su Aggiorna la configurazione dell'istanza.

    3. Nella sezione Cambia zona durante la riparazione dell'istanza VM, seleziona la casella di controllo Consenti la riparazione delle VM in una zona alternativa.

  5. Per le altre impostazioni, puoi utilizzare i valori predefiniti o modificare i campi.

  6. Al termine, fai clic su Salva per un MIG esistente o su Crea per un nuovo MIG.

gcloud

Per configurare un MIG esistente in modo che ripari la VM in una zona alternativa, utilizza il beta update comando:

gcloud beta compute instance-groups managed update MIG_NAME \
    --on-repair-allow-changing-zone=YES \
    --force-update-on-repair \
    --region=REGION

Per creare un MIG in grado di riparare la VM in una zona alternativa, utilizza il beta create comando:

gcloud beta compute instance-groups managed create MIG_NAME \
    --template=INSTANCE_TEMPLATE_URL \
    --size=SIZE \
    --zones=ZONES \
    --target-distribution-shape=SHAPE \
    --instance-redistribution-type=none \
    --on-repair-allow-changing-zone=YES \
    --force-update-on-repair

Sostituisci quanto segue:

  • MIG_NAME: il nome del MIG.
  • INSTANCE_TEMPLATE_URL: l'URL del template di istanza che vuoi utilizzare per creare istanze nel MIG. L'URL può contenere l' ID o il nome del template di istanza. Specifica uno dei seguenti valori:
    • Per un template di istanza regionale: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Per un template di istanza globale: INSTANCE_TEMPLATE_ID
  • SIZE: la dimensione target del MIG.
  • ZONES: l'elenco delle zone in una regione in cui vuoi creare le VM nel MIG.
  • SHAPE: la forma di distribuzione target. Questo valore può essere balanced o any.
  • REGION: la regione in cui si trova il MIG.

Terraform

Se non hai già creato un modello di istanza che specifica il tipo di macchina, l'immagine disco di avvio, la rete e altre proprietà delle VM da applicare a ogni VM nel tuo MIG, crea un modello di istanza.

Per creare un MIG in grado di riparare la VM in una zona alternativa, utilizza la google_compute_region_instance_group_manager risorsa.

resource "google_compute_region_instance_group_manager" "default" {
  provider           = google-beta
  name               = "example-rmig"
  base_instance_name = "example-rmig-instance"
  region             = "us-central1"

  target_size                      = 3
  distribution_policy_target_shape = "BALANCED"

  version {
    instance_template = google_compute_instance_template.default.id
  }

  instance_lifecycle_policy {
    default_action_on_failure = "REPAIR"
    force_update_on_repair    = "YES"
    on_repair {
      allow_changing_zone = "YES"
    }
  }

  update_policy {
    instance_redistribution_type = "NONE"
    type                         = "OPPORTUNISTIC"
    minimal_action               = "REPLACE"
    max_surge_fixed              = 0
    max_unavailable_fixed        = 6
  }
}

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

REST

Per configurare un MIG esistente in modo che ripari la VM in una zona alternativa, utilizza il metodo regionInstanceGroupManagers.patch beta:

PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME
{
    "instanceLifecyclePolicy": {
      "onRepair": {
        "allowChangingZone": "YES"
      },
      "forceUpdateOnRepair": "YES"
    }
}

Per creare un MIG in grado di riparare la VM in una zona alternativa, utilizza il metodo regionInstanceGroupManagers.insert beta:

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers

{
  "name": "MIG_NAME",
  "instanceTemplate": "INSTANCE_TEMPLATE_URL",
  "targetSize": SIZE,
  "distributionPolicy": {
    "targetShape": "SHAPE"
  }
  "updatePolicy": {
    "instanceRedistributionType": none
  }
  "instanceLifecyclePolicy": {
    "forceUpdateOnRepair": "YES",
    "onRepair": {
      "allowChangingZone": "YES"
    }
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto.
  • REGION: la regione in cui si trova il MIG.
  • MIG_NAME: il nome del MIG.
  • INSTANCE_TEMPLATE_URL: l'URL del template di istanza che vuoi utilizzare per creare istanze nel MIG. L'URL può contenere l' ID o il nome del template di istanza. Specifica uno dei seguenti valori:
    • Per un template di istanza regionale: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Per un template di istanza globale: INSTANCE_TEMPLATE_ID
  • SIZE: la dimensione target del MIG.
  • SHAPE: la forma di distribuzione target. Questo valore può essere BALANCED o ANY.

Non consentire le riparazioni in una zona alternativa

Se hai configurato un MIG in modo che ripari la VM in una zona alternativa, puoi ripristinare l'impostazione predefinita in cui il MIG ripara la VM nella zona originale.

Per non consentire le riparazioni in una zona alternativa, seleziona una delle seguenti opzioni:

Console

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

    Vai a Gruppi di istanze

  2. Fai clic sul nome del MIG.

  3. Fai clic su Modifica.

  4. Vai alla sezione Ciclo di vita di un'istanza VM.

  5. Nella sezione Cambia zona durante la riparazione dell'istanza VM, deseleziona la casella di controllo Consenti la riparazione delle VM in una zona alternativa.

  6. Fai clic su Salva.

gcloud

Per non consentire le riparazioni in una zona alternativa, utilizza il beta update comando:

gcloud beta compute instance-groups managed update MIG_NAME \
    --on-repair-allow-changing-zone=NO \
    --region=REGION

Sostituisci quanto segue:

  • MIG_NAME: il nome del MIG.
  • REGION: la regione in cui si trova il MIG.

REST

Per non consentire le riparazioni in una zona alternativa, utilizza il metodo regionInstanceGroupManagers.patchbeta:

PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME
{
    "instanceLifecyclePolicy": {
      "onRepair": {
        "allowChangingZone": "NO"
      }
    }
}

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto.
  • REGION: la regione in cui si trova il MIG.
  • MIG_NAME: il nome del MIG.

Passaggi successivi