Crea un gruppo di istanze gestite con VM in più zone all'interno di una regione


Questo documento descrive come creare un gruppo di istanze gestite in cui le VM siano distribuite in più zone all'interno di una regione. La distribuzione del carico dell'applicazione in più zone protegge il tuo carico di lavoro da errori a livello di zona. In caso di errore a livello di zona, l'applicazione può continuare a gestire le istanze in esecuzione nelle restanti zone disponibili della stessa regione.

Questo tipo di gruppo di istanze gestite è noto anche come gruppo di istanze gestite a livello di regione. Per ulteriori informazioni, consulta la pagina Informazioni sui gruppi di istanze gestite a livello di regione.

Puoi anche leggere altri scenari di base per la creazione di un gruppo di istanze gestite.

Prima di iniziare

  • Crea un modello di istanza, necessario per creare un gruppo di istanze gestite.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    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. To initialize the gcloud CLI, run the following command:

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

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

      REST

      Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

Limitazioni

Per visualizzare l'elenco completo delle limitazioni dei gruppi di istanze gestite, che varia in base alla configurazione utilizzata, consulta Limitazioni dei gruppi di istanze gestite.

Crea un gruppo di istanze gestite con VM in più zone all'interno di una regione

Utilizza la console Google Cloud, la gcloud CLI, Terraform o REST.

Console

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

    Vai a Gruppi di istanze

    I passaggi rimanenti vengono visualizzati nella console Google Cloud.

  2. Fai clic su Crea gruppo di istanze per creare un nuovo gruppo di istanze.
  3. Seleziona una delle opzioni per i nuovi gruppi di istanze gestite:
  4. Assegna un nome e, facoltativamente, una descrizione al gruppo di istanze.
  5. Scegli un modello di istanza per il gruppo di istanze o creane uno nuovo.
  6. In Numero di istanze o in Scalabilità automatica, specifica il numero di istanze per questo gruppo. Ricorda di eseguire il provisioning di un numero sufficiente di VM per supportare la tua applicazione in caso di errore della zona.
  7. In Località, seleziona Più zone.
  8. Scegli una regione e seleziona le zone che vuoi utilizzare. Se hai scelto un modello di istanza regionale, viene selezionata automaticamente l'opzione Regione in base alla regione del modello.
  9. In Forma di distribuzione di destinazione, seleziona Uniforme. Se vuoi selezionare una forma diversa, consulta l'articolo Imposta una forma di distribuzione di destinazione per le VM in un gruppo di istanze gestite a livello di regione.
  10. Se vuoi disabilitare la ridistribuzione proattiva delle istanze, in Ridistribuzione delle istanze, deseleziona la casella di controllo Consenti ridistribuzione istanze.
  11. Continua con il resto della procedura di creazione del gruppo di istanze gestite.
  12. Per creare il gruppo di istanze gestite, fai clic su Crea.

gcloud

Tutti i gruppi di istanze gestite richiedono un modello di istanza. Se non ne hai uno, crea un modello di istanza. Ad esempio, il seguente comando crea un modello di istanza di base con proprietà predefinite:

gcloud compute instance-templates create example-template

Quindi, utilizza il comando instance-groups managed create con il flag --region. Ad esempio, il seguente comando crea un gruppo di istanze gestite a livello di regione in tre zone all'interno della regione us-east1:

gcloud compute instance-groups managed create example-rmig \
    --template example-template  \
    --size 30 \
    --region us-east1

Se vuoi selezionare zone specifiche che il gruppo deve utilizzare, fornisci il flag --zones:

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c

Se vuoi disattivare la ridistribuzione proattiva delle istanze, consulta Disattivare la ridistribuzione proattiva delle istanze.

Terraform

Se non hai ancora creato un modello di istanza che specifichi il tipo di macchina, l'immagine del disco di avvio, la rete e altre proprietà della VM che vuoi per ogni VM nel tuo gruppo di istanze gestite, crea un modello di istanza.

Per creare un gruppo di istanze gestite a livello di regione, puoi utilizzare la google_compute_region_instance_group_manager risorsa.

resource "google_compute_region_instance_group_manager" "default" {
  name                      = "example-rmig"
  region                    = "us-east1"
  distribution_policy_zones = ["us-east1-b", "us-east1-c"]
  target_size               = 30
  base_instance_name        = "instance"
  version {
    instance_template = google_compute_instance_template.default.id
  }
}

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

REST

Tutti i gruppi di istanze gestite richiedono un modello di istanza. Se non ne hai uno, crea un modello di istanza.

A questo punto, crea una richiesta POST al metodo regionInstanceGroupManagers.insert. Nel corpo della richiesta, specifica il nome del gruppo, la dimensione del gruppo e l'URL al modello di istanze. Se vuoi, specifica altri campi, ad esempio il nome di base per le istanze nel gruppo.

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

{
  "baseInstanceName": "BASE_INSTANCE_NAME",
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": "TARGET_SIZE"
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto per questa richiesta.
  • REGION: la regione del gruppo.
  • BASE_INSTANCE_NAME: (facoltativo) il nome dell'istanza per ogni istanza VM creata all'interno del gruppo. Ad esempio, un nome istanza di base example-instance crea istanze con nomi come example-instance-[RANDOM_STRING], dove [RANDOM_STRING] viene generato dal server.
  • INSTANCE_TEMPLATE_NAME: il modello di istanza da utilizzare. Per un modello di istanza regionale, devi specificare l'URL completo o parziale del modello. Un esempio di URL completo è https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/instanceTemplates/example-regional-instance-template e un URL parziale è projects/example-project/regions/us-central1/instanceTemplates/example-regional-instance-template.
  • INSTANCE_GROUP_NAME: il nome del gruppo di istanze gestite.
  • TARGET_SIZE: il numero target di VM per il gruppo.

Se vuoi selezionare zone specifiche o se stai creando VM in una regione con meno o più di tre zone, includi la proprietà distributionPolicy nella richiesta e fornisci un elenco di zone. Sostituisci ZONE con il nome di una zona in cui creare le VM.

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

{
  "baseInstanceName": "BASE_INSTANCE_NAME",
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": "TARGET_SIZE",
  "distributionPolicy": {
     "zones": [
       {"zone": "zones/ZONE"},
       {"zone": "zones/ZONE"}
      ]
   }
}

Ad esempio, il seguente comando crea un gruppo di istanze gestite a livello di area geografica denominato example-rmig con 10 istanze gestite distribuite nelle zone us-east1-b e us-east1-c:

POST https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-east1/instanceGroupManagers

{
  "instanceTemplate": "global/instanceTemplates/example-instance",
  "name": "example-rmig",
  "targetSize": 10,
  "distributionPolicy": {
      "zones": [
        {"zone": "zones/us-east1-b"},
        {"zone": "zones/us-east1-c"}
      ]
   }
}

A seconda di come configuri e intervieni su un gruppo di istanze gestite, vari criteri e azioni possono influire sulle istanze del gruppo. Per determinare quali istanze gestite sono attive, consulta Controllare lo stato delle istanze gestite.

Se in ogni zona non è presente una capacità sufficiente per supportare le VM per il gruppo, Compute Engine crea il maggior numero possibile di VM e continua a tentare di creare le VM rimanenti quando diventa disponibile una capacità aggiuntiva.

Se non specifichi esplicitamente le singole zone nella richiesta, Compute Engine sceglie automaticamente tre zone in cui creare le VM. Se devi creare VM in più o meno di tre zone o se vuoi scegliere le zone da utilizzare, puoi fornire un elenco di zone nella richiesta. Per saperne di più, consulta Selezione delle zone.

Distribuzione delle VM tra le zone

Per impostazione predefinita, un gruppo di istanze gestite a livello di regione distribuisce le VM in modo uniforme tra le zone selezionate. Poiché stai creando un gruppo di istanze gestite a livello di regione, tieni presente che alcune risorse sono a livello di zona, come le GPU e i dischi permanenti esistenti. Se il modello di istanza del MIG specifica risorse zonali, devi assicurarti che tutte queste risorse siano presenti in tutte le zone selezionate in modo che possano essere collegate alle VM create dal MIG regionale. In alternativa, se vuoi che il gruppo esegua il controllo dell'esistenza di risorse zonali per tuo conto, puoi impostare la forma di distribuzione di destinazione del gruppo di istanze gestite in modo da creare istanze solo nelle zone che contengono queste risorse.

Per ulteriori informazioni, consulta i seguenti documenti:

Ridistribuzione proattiva delle istanze

La ridistribuzione proattiva delle istanze è attivata per impostazione predefinita. Se devi gestire manualmente il numero di VM in ogni zona o se devi impostare la forma di distribuzione di destinazione del MIG su BALANCED o ANY_SINGLE_ZONE, devi disattivare la ridistribuzione proattiva delle istanze.

Per ulteriori informazioni, consulta la seguente documentazione:

Passaggi successivi