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. Se vuoi, puoi consentire al MIG di riparare la VM in una delle altre zone selezionate, il che è utile nei casi in cui il MIG non può 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 a Google Cloud servizi e 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. 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.

    2. Set a default region and zone.

    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 e con le tue credenziali utente.

      Installa Google Cloud CLI.

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

      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, utilizza 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 documentazione sull'autenticazione di Google Cloud .

Consenti le riparazioni in una zona alternativa

Per consentire a un gruppo di istanze gestite 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, poi seleziona una regione e le zone.
    5. Nel menu a discesa Forma di distribuzione target, seleziona Bilanciata o Qualsiasi.

      • Se selezioni Bilanciato, nella finestra di dialogo visualizzata fai clic su Disabilita ridistribuzione istanze.

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

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

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

    2. L'opzione Aggiornamenti durante la riparazione delle istanze VM è impostata 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 per riparare la VM in una zona alternativa, utilizza il comando beta update:

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 comando beta create:

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 le VM nel MIG. L'URL può contenere l'ID o il nome del modello 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 risorsa google_compute_region_instance_group_manager.

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 per riparare la VM in una zona alternativa, utilizza il metodo beta regionInstanceGroupManagers.patch:

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 beta regionInstanceGroupManagers.insert:

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 le VM nel MIG. L'URL può contenere l'ID o il nome del modello 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 per riparare 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 comando beta update:

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 beta regionInstanceGroupManagers.patch:

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