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 policy di posizionamento distribuito. Per saperne di più sulle policy di posizionamento, incluse le relative limitazioni e i prezzi, vedi la rispettiva panoramica.

Una policy di posizionamento distribuito specifica che le istanze devono essere distribuite in diversi domini di disponibilità. Questa distribuzione contribuisce a mitigare le interruzioni specifiche per località, come gli errori hardware, ed è utile per l'esecuzione di workload distribuiti, replicati e 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 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:

    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.

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

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

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare e applicare una policy di posizionamento distribuito alle istanze, chiedi all'amministratore di concederti il ruolo IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) sul 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 istanze. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per creare e applicare una policy di posizionamento distribuito alle istanze, sono necessarie le seguenti autorizzazioni:

  • Per creare policy di posizionamento: compute.resourcePolicies.create sul progetto
  • Per applicare una policy di posizionamento a istanze esistenti: compute.instances.addResourcePolicies sul progetto
  • Per creare istanze:
    • 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 da utilizzare per la VM: 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 istanze, 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 istanze siano interessate da un singolo errore hardware. Per saperne di più, vedi le informazioni sulle policy di posizionamento distribuito.

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

gcloud

Per creare una policy di posizionamento distribuito, 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 distribuito

  • DOMAIN_COUNT: il numero distinto di domini di disponibilità in cui posizionare le istanze. 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, effettua 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 la policy di posizionamento

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

  • POLICY_NAME: il nome della policy di posizionamento distribuito

  • DOMAIN_COUNT: il numero distinto di domini di disponibilità in cui posizionare le istanze. 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 istanze, template di istanze 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 visualizzando i dettagli della VM e controllando il valore del campo availabilityDomain.

Applica la policy 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 che quest'ultima debba essere arrestata. 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 alle sue policy di manutenzione dell'host.

  • La VM e la policy di posizionamento distribuito 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 all'interno di us-central1. Se devi eseguire la migrazione di una VM in un'altra regione, vedi Sposta una VM tra zone o regioni.

Se vuoi specificare il dominio di disponibilità in cui posizionare 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 un 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 distribuito 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 policy di posizionamento distribuito 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 policy di posizionamento distribuito

  • POLICY_NAME: il nome di una policy di posizionamento distribuito esistente

Applica la policy durante la creazione di una VM

Puoi creare una VM che specifica una policy di posizionamento distribuito solo 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 distribuito esistente

  • ZONE: la zona in cui creare la VM

Se vuoi, per 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 posizionare la VM. Il valore deve essere compreso tra 1 e il numero di domini specificati nella policy di posizionamento distribuito. Per verificare il numero di domini in una policy di posizionamento distribuito, visualizza i dettagli della policy.

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 distribuito

  • 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 della policy di posizionamento distribuito.

  • VM_NAME: il nome della VM da creare

  • MACHINE_TYPE: il tipo di macchina per la VM

  • IMAGE_PROJECT: il progetto immagine che contiene l'immagine, ad esempio debian-cloud. Per saperne di più sui progetti di immagini supportati, consulta 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. In questo modo, viene specificata 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 policy di posizionamento distribuito

  • POLICY_NAME: il nome di una policy di posizionamento distribuito esistente

Se vuoi, 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 posizionare la VM. Il valore deve essere compreso tra 1 e il numero di domini specificati nella policy di posizionamento distribuito. Per verificare il numero di domini in una policy di posizionamento distribuito, visualizza i dettagli della policy.

Per saperne di più sulle opzioni di configurazione per la creazione di una VM, vedi Crea e avvia un'istanza VM.

Applica la policy durante la creazione di istanze in blocco

Prima di creare istanze in blocco che specificano una policy di posizionamento distribuito, assicurati di eseguire quanto segue:

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

  • Quando crei più istanze in blocco con una policy di posizionamento distribuito, puoi facoltativamente specificare il dominio di disponibilità in cui creare le istanze. Evita di creare tutte le istanze in un unico dominio. Altrimenti non sei in grado di ridurre il rischio che un singolo errore hardware influisca su tutte le tue istanze.

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

gcloud

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

Ad esempio, per creare istanze in blocco in un'unica zona e specificare un pattern del nome per le istanze, 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 istanze da creare.

  • MACHINE_TYPE: il tipo di macchina per le istanze.

  • NAME_PATTERN: il pattern del nome per le istanze. Per sostituire una sequenza di numeri nel nome di una VM, utilizza una sequenza di caratteri hash (#). Ad esempio, l'utilizzo di vm-# per il pattern del nome genera istanze con nomi che iniziano con vm-1, vm-2 e via di seguito fino al numero di istanze specificato da COUNT.

  • POLICY_NAME: il nome di una policy di posizionamento distribuito esistente

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

Se vuoi, per specificare il dominio di disponibilità in cui creare le istanze 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 posizionare la VM. Il valore deve essere compreso tra 1 e il numero di domini specificati nella policy di posizionamento distribuito. Per verificare il numero di domini in una policy di posizionamento distribuito, visualizza i dettagli della policy.

REST

Per creare in blocco istanze che specificano una policy di posizionamento distribuito, esegui POST al metodo instances.bulkInsert. Nel corpo della richiesta, includi il campo resourcePolicies.

Ad esempio, per creare in blocco più istanze in un'unica zona e specificare un pattern di nomi per le istanze, invia una richiesta POST nel modo seguente:

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 distribuito

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

  • COUNT: il numero di istanze da creare.

  • NAME_PATTERN: il pattern del nome per le istanze. Per sostituire una sequenza di numeri nel nome di una VM, utilizza una sequenza di caratteri hash (#). Ad esempio, l'utilizzo di vm-# per il pattern del nome genera istanze con nomi che iniziano con vm-1, vm-2 e via di seguito fino al numero di istanze specificato da COUNT.

  • MACHINE_TYPE: il tipo di macchina per le istanze.

  • IMAGE_PROJECT: il progetto di immagini che contiene l'immagine, ad esempio debian-cloud. Per saperne di più sui progetti di immagini supportati, consulta 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. In questo modo, viene specificata 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 distribuito esistente

Se vuoi, per specificare il dominio di disponibilità in cui creare le istanze 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 posizionare la VM. Il valore deve essere compreso tra 1 e il numero di domini specificati nella policy di posizionamento distribuito. Per verificare il numero di domini in una policy di posizionamento distribuito, visualizza i dettagli della policy.

Per saperne di più sulle opzioni di configurazione per la creazione di istanze in blocco, vedi Crea istanze in blocco.

Applica la policy durante la creazione di un template di istanza

Prima di creare un template di istanza che specifica una policy di posizionamento distribuito, considera quanto segue:

  • Se vuoi creare un template di istanza regionale, il template e la policy di posizionamento distribuito devono trovarsi nella stessa regione. In caso contrario, la creazione del template di istanza non andrà a buon fine.

  • Evita di creare tutte le istanze all'interno di un unico dominio di disponibilità. Altrimenti non sei in grado di ridurre il rischio che un singolo errore hardware influisca su tutte le tue istanze.

Dopo aver creato un template di istanza che specifica una policy di posizionamento distribuito, puoi utilizzarlo per eseguire queste operazioni:

Per creare un template di istanza regionale e una nuova policy di posizionamento distribuito con otto domini di disponibilità, utilizza la console Google Cloud . Per creare un template di istanza globale o regionale e specificare una policy di posizionamento distribuito esistente, utilizza gcloud CLI o l'API REST:

Console

  1. Nella console Google Cloud , vai alla pagina Template di istanza.

    Vai a Template di istanza

  2. Fai clic su Crea modello istanza. Viene visualizzata la pagina Crea un template di istanza.

  3. Nel campo Regione, specifica la regione in cui vuoi creare la policy di posizionamento distribuito e il template di istanza.

  4. Nella sezione Configurazione macchina, specifica una serie e un tipo di macchina.

  5. Nella sezione Placement policy (Policy di posizionamento), nell'elenco Placement policy (Policy di posizionamento), seleziona Spread (Distribuzione).

  6. Fai clic su Crea.

gcloud

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

Ad esempio, per creare un template di istanza globale che specifica una policy di posizionamento distribuito, 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 template di istanza.

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

  • POLICY_NAME: il nome di una policy di posizionamento distribuito esistente

Se vuoi, per specificare il dominio di disponibilità in cui creare le istanze, 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 istanze. Il valore deve essere compreso tra 1 e il numero di domini specificati nella policy di posizionamento. Per verificare il numero di domini in una policy di posizionamento distribuito, visualizza i dettagli della policy.

REST

Per creare un template di istanza che specifichi una policy di posizionamento distribuito, invia una richiesta POST a uno dei seguenti metodi:

Nel corpo della richiesta, specifica il campo resourcePolicies.

Ad esempio, per creare un template di istanza globale che specifichi una policy di posizionamento distribuito, effettua 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 distribuito

  • INSTANCE_TEMPLATE_NAME: il nome del template 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, consulta 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. In questo modo, viene specificata 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 istanze create utilizzando il modello di istanza.

  • POLICY_NAME: il nome di una policy di posizionamento distribuito esistente

Se vuoi, per specificare il dominio di disponibilità in cui creare le istanze, 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 istanze. Il valore deve essere compreso tra 1 e il numero di domini specificati nella policy di posizionamento. Per verificare il numero di domini in una policy di posizionamento distribuito, visualizza i dettagli della policy.

Per saperne di più sulle opzioni di configurazione per creare un template di istanza, vedi Crea template di istanza.

Applica la policy alle istanze in un MIG

Dopo aver creato un template di istanza che specifica una policy di posizionamento distribuito, puoi utilizzare il template per:

Applica la policy durante la creazione di un MIG

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

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

gcloud

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

Ad esempio, per creare un MIG a livello di zona utilizzando un template di istanza globale che specifica una policy di posizionamento distribuito, esegui questo 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 gruppo di istanze gestite da creare

  • SIZE: la dimensione del gruppo di istanze gestite

  • INSTANCE_TEMPLATE_NAME: il nome di un template di istanza globale esistente che specifica una policy di posizionamento distribuito

  • ZONE: la zona in cui creare il gruppo di istanze gestite, che deve trovarsi all'interno della regione in cui si trova la policy di posizionamento distribuito

REST

Per creare un MIG utilizzando un template di istanza che specifica una policy di posizionamento distribuito, invia una richiesta POST a uno dei seguenti metodi:

Ad esempio, per creare un MIG a livello di zona utilizzando un template di istanza globale che specifica una policy di posizionamento distribuito, 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 la policy di posizionamento distribuito e il template di istanza che specifica la policy di posizionamento

  • ZONE: la zona in cui creare il gruppo di istanze gestite, che deve rientrare nella regione in cui si trova la policy di posizionamento distribuito

  • INSTANCE_GROUP_NAME: il nome del gruppo di istanze gestite da creare

  • SIZE: la dimensione del gruppo di istanze gestite

  • INSTANCE_TEMPLATE_NAME: il nome di un template di istanza globale esistente che specifica una policy di posizionamento distribuito

Per saperne di più sulle opzioni di configurazione per la creazione di gruppi di istanze gestite, vedi Scenari di base per la creazione di gruppi di istanze gestite (MIG).

Applica la policy a un gruppo di istanze gestite esistente

Puoi applicare una policy di posizionamento distribuito a un MIG esistente solo se quest'ultimo 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 template di istanza che specifica una policy di posizionamento distribuito, seleziona una delle seguenti opzioni:

gcloud

Per aggiornare un MIG in modo che utilizzi un template di istanza che specifica una policy di posizionamento distribuito, 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 template di istanza che specifica una policy di posizionamento distribuito e sostituire le istanze esistenti del MIG con nuove istanze che specificano le proprietà del template, esegui questo 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 gruppo di istanze gestite esistente

  • INSTANCE_TEMPLATE_NAME: il nome di un template di istanza globale esistente che specifica una policy di posizionamento distribuito

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

REST

Per aggiornare un MIG in modo che utilizzi un template di istanza che specifica una policy di posizionamento distribuito e applicare automaticamente le proprietà del template e della policy di posizionamento alle istanze 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 template di istanza globale che specifica una policy di posizionamento distribuito e sostituire le istanze esistenti del MIG con nuove istanze che specificano le proprietà del template, effettua 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 utilizzato per creare un gruppo di istanze gestite esistente, la policy di posizionamento distribuito e il template di istanza che specifica la policy di posizione distribuito

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

  • INSTANCE_GROUP_NAME: il nome di un gruppo di istanze gestite esistente

  • INSTANCE_TEMPLATE_NAME: il nome di un template di istanza globale esistente che specifica una policy di posizionamento distribuito

Per saperne di più sulle opzioni di configurazione per aggiornare le istanze in un MIG, consulta Aggiorna e applica nuove configurazioni alle istanze in un MIG.

Passaggi successivi