Crea e applica policy di posizionamento distribuito alle VM


Questo documento descrive come migliorare l'affidabilità delle istanze di macchine virtuali (VM) creando e applicando loro policy di posizionamento distribuito. Per scoprire di più sulle norme di posizionamento, incluse le limitazioni e i prezzi, consulta Panoramica delle norme di posizionamento.

Una policy di posizionamento spread specifica che le VM devono essere distribuite in domini di disponibilità diversi. Questa distribuzione contribuisce a mitigare interruzioni specifiche della località, come errori hardware, ed è utile quando si eseguono carichi di lavoro distribuiti e replicati su larga scala come Hadoop Distributed File System (HDFS), Cassandra o Kafka.

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:

    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. 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 .

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare e applicare una policy di posizionamento spread alle VM, chiedi all'amministratore di concederti il ruolo IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per creare e applicare una policy di posizionamento distribuito alle VM. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per creare e applicare un criterio di posizionamento distribuito alle VM sono necessarie le seguenti autorizzazioni:

  • Per creare policy di posizionamento: compute.resourcePolicies.create sul progetto
  • Per applicare una policy di posizionamento alle VM esistenti: compute.instances.addResourcePolicies sul progetto
  • Per creare le VM:
    • compute.instances.create sul progetto
    • Per utilizzare un'immagine personalizzata per creare la VM: compute.images.useReadOnly sull'immagine
    • Per utilizzare uno snapshot per creare la VM: compute.snapshots.useReadOnly sullo snapshot
    • Per utilizzare un template di istanza per creare la VM: compute.instanceTemplates.useReadOnly sul template di istanza
    • Per assegnare una rete legacy alla VM: compute.networks.use sul progetto
    • Per specificare un indirizzo IP statico per la VM: compute.addresses.use sul progetto
    • Per assegnare un indirizzo IP esterno alla VM quando viene utilizzata una rete legacy: compute.networks.useExternalIp sul progetto
    • Per specificare una subnet per la VM: compute.subnetworks.use sul progetto o sulla subnet scelta
    • Per assegnare un indirizzo IP esterno alla VM quando viene utilizzata una rete VPC: compute.subnetworks.useExternalIp sul progetto o sulla subnet scelta
    • Per impostare i metadati dell'istanza VM per la VM: compute.instances.setMetadata sul progetto
    • Per impostare i tag per la VM: compute.instances.setTags sulla VM
    • Per impostare le etichette per la VM: compute.instances.setLabels sulla VM
    • Per impostare un service account che la VM possa utilizzare: compute.instances.setServiceAccount sulla VM
    • Per creare un nuovo disco per la VM: compute.disks.create sul progetto
    • Per collegare un disco esistente in modalità di sola lettura o lettura/scrittura: compute.disks.use sul disco
    • Per collegare un disco esistente in modalità di sola lettura: compute.disks.useReadOnly sul disco
  • Per creare un template di istanza: compute.instanceTemplates.create sul progetto
  • Per creare un gruppo di istanze gestite (MIG): compute.instanceGroupManagers.create sul progetto

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Crea una policy di posizionamento distribuito

A meno che tu non voglia testare l'applicazione della policy di posizionamento distribuito alle tue VM, Google Cloud consiglia di creare policy di posizionamento distribuito con due o più domini di disponibilità. In questo modo si riduce il rischio che tutte le VM siano interessate da un singolo errore hardware. Per saperne di più, consulta Informazioni sulle norme di posizionamento spread.

Per creare una policy di posizionamento spread, seleziona una delle seguenti opzioni:

gcloud

Per creare una policy di posizionamento spread, utilizza il comando gcloud compute resource-policies create group-placement con il flag --availability-domain-count.

gcloud compute resource-policies create group-placement POLICY_NAME \
    --availability-domain-count=DOMAIN_COUNT \
    --region=REGION

Sostituisci quanto segue:

  • POLICY_NAME: il nome della policy di posizionamento spread.

  • DOMAIN_COUNT: il numero distinto di domini di disponibilità in cui inserire le VM. Il valore deve essere compreso tra 1 e 8.

  • REGION: la regione in cui creare la policy di posizionamento.

REST

Per creare una policy di posizionamento distribuito, invia una richiesta POST al metodo resourcePolicies.insert. Nel corpo della richiesta, includi il campo availabilityDomainCount.

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

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "availabilityDomainCount": DOMAIN_COUNT
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui creare il criterio di posizionamento.

  • REGION: la regione in cui creare la policy di posizionamento.

  • POLICY_NAME: il nome della policy di posizionamento spread.

  • DOMAIN_COUNT: il numero distinto di domini di disponibilità in cui inserire le VM. Il valore deve essere compreso tra 1 e 8.

Applica una policy di posizionamento distribuito

Puoi applicare una policy di posizionamento distribuito a una VM o a un MIG esistente oppure durante la creazione di VM, modelli di istanza o MIG.

Per applicare una policy di posizionamento distribuito a una risorsa Compute Engine, seleziona uno dei seguenti metodi:

Dopo aver applicato una policy di posizionamento distribuito a una VM, puoi verificare il dominio di disponibilità in cui si trova la VM visualizzandone i dettagli e controllando il valore del campo availabilityDomain.

Applica il criterio a una VM esistente

Prima di applicare una policy di posizionamento distribuito a una VM esistente, tieni presente quanto segue:

  • Se la policy di posizionamento distribuito specifica più domini di disponibilità, puoi applicarla a una VM senza arrestarla. Tuttavia, la VM potrebbe dover essere spostata in un altro dominio di disponibilità. Durante questo processo, Compute Engine arresta o esegue la migrazione live della VM in base alla normativa di manutenzione dell'host.

  • La VM e i criteri di posizionamento spread devono trovarsi nella stessa regione. Ad esempio, se la policy di posizionamento si trova nella regione us-central1, la VM deve trovarsi in una zona di us-central1. Se devi migrare una VM in un'altra regione, consulta Sposta una VM tra zone o regioni.

Se vuoi specificare il dominio di disponibilità in cui inserire la VM, applica la policy di posizionamento alla VM aggiornandone le proprietà. Quando aggiorni le proprietà della VM, assicurati di includere i campi resourcePolicies e scheduling.availabilityDomain.

Per applicare una policy di posizionamento distribuito a una VM esistente, seleziona una delle seguenti opzioni:

gcloud

Per applicare una policy di posizionamento distribuito a una VM esistente, utilizza il comando gcloud compute instances add-resource-policies.

gcloud compute instances add-resource-policies VM_NAME \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Sostituisci quanto segue:

  • VM_NAME: il nome di una VM esistente.

  • POLICY_NAME: il nome di una policy di posizionamento spread esistente.

  • ZONE: la zona in cui si trova la VM.

REST

Per applicare una policy di posizionamento distribuito a una VM esistente, invia una richiesta POST al metodo instances.addResourcePolicies.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/addResourcePolicies

{
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui si trovano la norma di posizionamento spread e la VM.

  • ZONE: la zona in cui si trova la VM.

  • VM_NAME: il nome di una VM esistente.

  • REGION: la regione in cui si trova la norma di posizionamento di distribuzione.

  • POLICY_NAME: il nome di una policy di posizionamento spread esistente.

Applica il criterio durante la creazione di una VM

Puoi creare una VM che specifica una policy di posizionamento distribuito nella stessa regione della policy di posizionamento.

Per creare una VM che specifica una policy di posizionamento distribuito, seleziona una delle seguenti opzioni:

gcloud

Per creare una VM che specifica una policy di posizionamento distribuito, utilizza il comando gcloud compute instances create con il flag --resource-policies.

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Sostituisci quanto segue:

  • VM_NAME: il nome della VM da creare.

  • MACHINE_TYPE: il tipo di macchina per la VM.

  • POLICY_NAME: il nome di una policy di posizionamento spread esistente.

  • ZONE: la zona in cui creare la VM.

Se vuoi specificare il dominio di disponibilità in cui creare la VM, includi il flag --availability-domain.

gcloud compute instances create VM_NAME \
    --availability-domain=DOMAIN_NUMBER \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Sostituisci DOMAIN_NUMBER con il numero del dominio di disponibilità in cui inserire la VM. Il valore deve essere compreso tra 1 e il numero di domini specificati nelle norme di posizionamento della diffusione. Per verificare il numero di domini in una norma di posizionamento spread, visualizza i dettagli della norma di posizionamento.

REST

Per creare una VM che specifica una policy di posizionamento distribuito, invia una richiesta POST al metodo instances.insert. Nel corpo della richiesta, includi il campo resourcePolicies.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui si trova la policy di posizionamento della distribuzione.

  • ZONE: la zona in cui creare la VM e in cui si trova il tipo di macchina. Puoi specificare solo una zona all'interno della regione del criterio di posizionamento spread.

  • VM_NAME: il nome della VM da creare.

  • MACHINE_TYPE: il tipo di macchina per la VM.

  • IMAGE_PROJECT: il progetto di immagini che contiene l'immagine, ad esempio debian-cloud. Per saperne di più sui progetti di immagini supportati, vedi Immagini pubbliche.

  • IMAGE: specifica una delle seguenti opzioni:

    • Una versione specifica dell'immagine sistema operativo, ad esempio debian-12-bookworm-v20240617.

    • Una famiglia di immagini, che deve essere formattata come family/IMAGE_FAMILY. Specifica l'immagine sistema operativo più recente e non deprecata. Ad esempio, se specifichi family/debian-12, viene utilizzata l'ultima versione della famiglia di immagini Debian 12. Per saperne di più sull'utilizzo delle famiglie di immagini, consulta le best practice per le famiglie di immagini.

  • REGION: la regione in cui si trova la norma di posizionamento di distribuzione.

  • POLICY_NAME: il nome di una policy di posizionamento spread esistente.

(Facoltativo) Per specificare il dominio di disponibilità in cui creare la VM, includi il campo availabilityDomain nel corpo della richiesta.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ],
  "scheduling": {
    "availabilityDomain": DOMAIN_NUMBER
  }
}

Sostituisci DOMAIN_NUMBER con il numero del dominio di disponibilità in cui inserire la VM. Il valore deve essere compreso tra 1 e il numero di domini specificati nelle norme di posizionamento della diffusione. Per verificare il numero di domini in una norma di posizionamento spread, visualizza i dettagli della norma di posizionamento.

Per saperne di più sulle opzioni di configurazione per creare una VM, consulta Crea e avvia un'istanza VM.

Applica il criterio durante la creazione collettiva delle VM

Prima di creare VM collettivamente che specificano una policy di posizionamento distribuito, assicurati di quanto segue:

  • Puoi creare VM in blocco che specificano una policy di posizionamento distribuito nella stessa regione della policy di posizionamento.

  • Quando crei VM in blocco con una policy di posizionamento distribuito, puoi specificare facoltativamente il dominio di disponibilità in cui creare le VM. Evita di creare tutte le VM in un unico dominio. In caso contrario, non mitighi il rischio che un singolo errore hardware influisca su tutte le tue VM.

Per creare in blocco VM che specificano una policy di posizionamento distribuito, seleziona una delle seguenti opzioni:

gcloud

Per creare più VM in blocco che specificano una policy di posizionamento distribuito, utilizza il comando gcloud compute instances bulk create con il flag --resource-policies.

Ad esempio, per creare VM collettivamente in una singola zona e specificare un pattern di nomi per le VM, esegui il seguente comando:

gcloud compute instances bulk create \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern=NAME_PATTERN \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Sostituisci quanto segue:

  • COUNT: il numero di VM da creare.

  • MACHINE_TYPE: il tipo di macchina per le VM.

  • NAME_PATTERN: il pattern del nome delle VM. Per sostituire una sequenza di numeri in un nome VM, utilizza una sequenza di caratteri cancelletto (#). Ad esempio, l'utilizzo di vm-# per il pattern del nome genera VM con nomi che iniziano con vm-1, vm-2 e continuano fino al numero di VM specificato da COUNT.

  • POLICY_NAME: il nome di una policy di posizionamento spread esistente.

  • ZONE: la zona in cui creare le VM in blocco.

Se vuoi specificare il dominio di disponibilità in cui creare le VM in blocco, includi il flag --availability-domain.

gcloud compute instances bulk create \
    --availability-domain=DOMAIN_NUMBER \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern=NAME_PATTERN \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Sostituisci DOMAIN_NUMBER con il numero del dominio di disponibilità in cui inserire la VM. Il valore deve essere compreso tra 1 e il numero di domini specificati nelle norme di posizionamento della diffusione. Per verificare il numero di domini in una norma di posizionamento spread, visualizza i dettagli della norma di posizionamento.

REST

Per creare più VM contemporaneamente che specificano una policy di posizionamento distribuito, invia una richiesta POST al metodo instances.bulkInsert. Nel corpo della richiesta, includi il campo resourcePolicies.

Ad esempio, per creare VM collettivamente in una singola zona e specificare un pattern di nomi per le VM, invia una richiesta POST come segue:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  "count": "COUNT",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ]
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui si trova la policy di posizionamento della distribuzione.

  • ZONE: la zona in cui creare le VM in blocco.

  • COUNT: il numero di VM da creare.

  • NAME_PATTERN: il pattern del nome delle VM. Per sostituire una sequenza di numeri in un nome VM, utilizza una sequenza di caratteri cancelletto (#). Ad esempio, l'utilizzo di vm-# per il pattern del nome genera VM con nomi che iniziano con vm-1, vm-2 e continuano fino al numero di VM specificato da COUNT.

  • MACHINE_TYPE: il tipo di macchina per le VM.

  • IMAGE_PROJECT: il progetto di immagini che contiene l'immagine, ad esempio debian-cloud. Per saperne di più sui progetti di immagini supportati, vedi Immagini pubbliche.

  • IMAGE: specifica una delle seguenti opzioni:

    • Una versione specifica dell'immagine sistema operativo, ad esempio debian-12-bookworm-v20240617.

    • Una famiglia di immagini, che deve essere formattata come family/IMAGE_FAMILY. Specifica l'immagine sistema operativo più recente e non deprecata. Ad esempio, se specifichi family/debian-12, viene utilizzata l'ultima versione della famiglia di immagini Debian 12. Per saperne di più sull'utilizzo delle famiglie di immagini, consulta le best practice per le famiglie di immagini.

  • POLICY_NAME: il nome di una policy di posizionamento spread esistente.

In alternativa, per specificare il dominio di disponibilità in cui creare le VM in blocco, includi il campo availabilityDomain nel corpo della richiesta.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  "count": "COUNT",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ],
    "scheduling": {
      "availabilityDomain": DOMAIN_NUMBER
    }
  }
}

Sostituisci DOMAIN_NUMBER con il numero del dominio di disponibilità in cui inserire la VM. Il valore deve essere compreso tra 1 e il numero di domini specificati nelle norme di posizionamento della diffusione. Per verificare il numero di domini in una norma di posizionamento spread, visualizza i dettagli della norma di posizionamento.

Per saperne di più sulle opzioni di configurazione per creare VM in blocco, consulta Crea più VM in blocco.

Applica il criterio durante la creazione di un modello di istanza

Prima di creare un modello di istanza che specifica una policy di posizionamento spread, assicurati di quanto segue:

  • Se vuoi creare un modello di istanza regionale, crea il modello nella stessa regione della policy di posizionamento spread. In caso contrario, la creazione del modello di istanza non andrà a buon fine.

  • Quando crei un modello di istanza, puoi specificare facoltativamente il dominio di disponibilità in cui creare le VM. Evita di creare tutte le VM in un unico dominio. In caso contrario, non mitighi il rischio che un singolo errore hardware influisca su tutte le tue VM.

Dopo aver creato un modello di istanza che specifica una norma di posizionamento spread, puoi utilizzarlo per:

Per creare un modello di istanza che specifica una policy di posizionamento spread, seleziona una delle seguenti opzioni:

gcloud

Per creare un modello di istanza che specifica una policy di posizionamento spread, utilizza il comando gcloud compute instance-templates create con il flag --resource-policies.

Ad esempio, per creare un modello di istanza globale che specifica una policy di posizionamento spread, esegui questo comando:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME

Sostituisci quanto segue:

  • INSTANCE_TEMPLATE_NAME: il nome del modello di istanza.

  • MACHINE_TYPE: il tipo di macchina per le VM create utilizzando il modello di istanza.

  • POLICY_NAME: il nome di una policy di posizionamento spread esistente.

Se vuoi specificare il dominio di disponibilità in cui creare le VM, includi il flag --availability-domain.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --availability-domain=DOMAIN_NUMBER  \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME

Sostituisci DOMAIN_NUMBER con il numero del dominio di disponibilità in cui creare le VM. Il valore deve essere compreso tra 1 e il numero di domini specificati nelle norme di posizionamento. Per verificare il numero di domini in una norma di posizionamento spread, visualizza i dettagli della norma di posizionamento.

REST

Per creare un modello di istanza che specifica una policy di posizionamento spread, effettua una richiesta POST con uno dei seguenti metodi:

Nel corpo della richiesta, specifica il campo resourcePolicies.

Ad esempio, per creare un modello di istanza globale che specifica una policy di posizionamento spread, invia una richiesta POST come segue:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ]
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui si trova la policy di posizionamento della distribuzione.

  • INSTANCE_TEMPLATE_NAME: il nome del modello di istanza.

  • IMAGE_PROJECT: il progetto di immagini che contiene l'immagine, ad esempio debian-cloud. Per saperne di più sui progetti di immagini supportati, vedi Immagini pubbliche.

  • IMAGE: specifica una delle seguenti opzioni:

    • Una versione specifica dell'immagine sistema operativo, ad esempio debian-12-bookworm-v20240617.

    • Una famiglia di immagini, che deve essere formattata come family/IMAGE_FAMILY. Specifica l'immagine sistema operativo più recente e non deprecata. Ad esempio, se specifichi family/debian-12, viene utilizzata l'ultima versione della famiglia di immagini Debian 12. Per saperne di più sull'utilizzo delle famiglie di immagini, consulta le best practice per le famiglie di immagini.

  • MACHINE_TYPE: il tipo di macchina per le VM create utilizzando il modello di istanza.

  • POLICY_NAME: il nome di una policy di posizionamento spread esistente.

(Facoltativo) Per specificare il dominio di disponibilità in cui creare le VM, includi il campo availabilityDomain nel corpo della richiesta.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ],
    "scheduling": {
      "availabilityDomain": DOMAIN_NUMBER
    }
  }
}

Sostituisci DOMAIN_NUMBER con il numero del dominio di disponibilità in cui creare le VM. Il valore deve essere compreso tra 1 e il numero di domini specificati nelle norme di posizionamento. Per verificare il numero di domini in una norma di posizionamento spread, visualizza i dettagli della norma di posizionamento.

Per saperne di più sulle opzioni di configurazione per creare un modello di istanza, consulta Creare modelli di istanza.

Applica il criterio alle VM in un MIG

Dopo aver creato un modello di istanza che specifica una normativa di posizionamento spread, puoi utilizzare il modello per:

Applica il criterio durante la creazione di un MIG

Puoi creare VM che specificano una policy di posizionamento distribuito solo se le VM si trovano nella stessa regione della policy di posizionamento.

Per creare un MIG utilizzando un modello di istanza che specifica una policy di posizionamento spread, seleziona una delle seguenti opzioni:

gcloud

Per creare un MIG utilizzando un modello di istanza che specifica una policy di posizionamento spread, utilizza il comando gcloud compute instance-groups managed create.

Ad esempio, per creare un MIG a livello di zona utilizzando un modello di istanza globale che specifica una policy di posizionamento spread, esegui il seguente comando:

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size=SIZE \
    --template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

Sostituisci quanto segue:

  • INSTANCE_GROUP_NAME: il nome del MIG da creare.

  • SIZE: la dimensione del MIG.

  • INSTANCE_TEMPLATE_NAME: il nome di un modello di istanza globale esistente che specifica una policy di posizionamento spread.

  • ZONE: la zona in cui creare il MIG, che deve trovarsi all'interno della regione in cui si trova il criterio di posizionamento spread.

REST

Per creare un MIG utilizzando un modello di istanza che specifica una policy di posizionamento spread, effettua una richiesta POST a uno dei seguenti metodi:

Ad esempio, per creare un MIG a livello di zona utilizzando un modello di istanza globale che specifica una policy di posizionamento spread, invia una richiesta POST come segue:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers

{
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": SIZE,
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
    }
  ]
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui si trovano il criterio di posizionamento spread e il modello di istanza che specifica il criterio di posizionamento.

  • ZONE: la zona in cui creare il MIG, che deve trovarsi all'interno della regione in cui si trova la norma di posizionamento spread.

  • INSTANCE_GROUP_NAME: il nome del MIG da creare.

  • SIZE: la dimensione del MIG.

  • INSTANCE_TEMPLATE_NAME: il nome di un modello di istanza globale esistente che specifica una policy di posizionamento spread.

Per saperne di più sulle opzioni di configurazione per creare i gruppi di istanze gestite, consulta Scenari di base per la creazione di gruppi di istanze gestite.

Applica il criterio a un MIG esistente

Puoi applicare una policy di posizionamento spread a un MIG esistente solo se il MIG si trova nella stessa regione della policy di posizionamento o, per i MIG a livello di zona, in una zona all'interno della stessa regione della policy di posizionamento.

Per aggiornare un MIG in modo che utilizzi un modello di istanza che specifica una policy di posizionamento spread, seleziona una delle seguenti opzioni:

gcloud

Per aggiornare un MIG in modo che utilizzi un modello di istanza che specifica una policy di posizionamento spread, utilizza il comando gcloud compute instance-groups managed rolling-action start-update.

Ad esempio, per aggiornare un MIG a livello di zona in modo che utilizzi un modello di istanza che specifica una policy di posizionamento spread e sostituire le VM esistenti del MIG con nuove VM che specificano le proprietà del modello, esegui il seguente comando:

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

Sostituisci quanto segue:

  • INSTANCE_GROUP_NAME: il nome di un MIG esistente.

  • INSTANCE_TEMPLATE_NAME: il nome di un modello di istanza globale esistente che specifica una policy di posizionamento spread.

  • ZONE: la zona in cui si trova il MIG. Puoi applicare la policy di posizionamento distribuito solo a un MIG che si trova nella stessa regione della policy di posizionamento.

REST

Per aggiornare un MIG in modo che utilizzi un modello di istanza che specifica una policy di posizionamento spread e applicare automaticamente le proprietà del modello e della policy di posizionamento alle VM esistenti nel MIG, invia una richiesta PATCH a uno dei seguenti metodi:

Ad esempio, per aggiornare un MIG a livello di zona in modo che utilizzi un modello di istanza globale che specifica una policy di posizionamento spread e sostituire le VM esistenti del MIG con nuove VM che specificano le proprietà del modello, invia la seguente richiesta PATCH:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto che hai utilizzato per creare un MIG esistente, la policy di posizionamento spread e il modello di istanza che specifica la policy di posizionamento spread.

  • ZONE: la zona in cui si trova il MIG. Puoi applicare la policy di posizionamento distribuito solo a un MIG che si trova nella stessa regione della policy di posizionamento.

  • INSTANCE_GROUP_NAME: il nome di un MIG esistente.

  • INSTANCE_TEMPLATE_NAME: il nome di un modello di istanza globale esistente che specifica una policy di posizionamento spread.

Per ulteriori informazioni sulle opzioni di configurazione per aggiornare le VM in un MIG, consulta Aggiorna e applica nuove configurazioni alle VM in un MIG.

Passaggi successivi