Crea e applica criteri di posizionamento distribuito alle VM

Questo documento spiega come creare un criterio di posizionamento distribuito e applicarlo a una o più istanze di macchine virtuali (VM) per una maggiore affidabilità.

Un criterio di posizionamento distribuito specifica che le VM devono essere fisicamente distanti l'una dall'altra posizionandole in domini di disponibilità diversi. Utilizza un criterio di posizionamento distribuito per assicurarti che le VM vengano posizionate su hardware diversi, riducendo l'impatto di guasti hardware sottostanti o ottimizzando la migrazione live.

Puoi applicare un criterio di posizionamento distribuito se:

  • Creare o aggiornare una VM.
  • Creare un modello di istanza. Il modello di istanza applica quindi il criterio di posizionamento distribuito quando lo utilizzi per:
    • Creare una VM.
    • Crea o aggiorna un gruppo di istanze gestite.

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.

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

    gcloud

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    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, devi utilizzare le credenziali che fornisci a gcloud CLI.

        Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

        gcloud init

      Per maggiori informazioni, consulta Autenticazione per REST nella documentazione sull'autenticazione di Google Cloud.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare e applicare un criterio di posizionamento distribuito alle VM, chiedi all'amministratore di concederti il ruolo IAM Amministratore istanze Compute (v1) (roles/compute.instanceAdmin.v1) per la VM o il progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questo ruolo predefinito contiene le autorizzazioni necessarie per creare e applicare un criterio di posizionamento distribuito alle VM. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

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

  • Per creare criteri di posizionamento: compute.resourcePolicies.create sul progetto
  • Per applicare un criterio di posizionamento a una VM esistente: compute.instances.addResourcePolicies sul progetto

Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.

Limitazioni

Oltre alle limitazioni generali per i criteri di posizionamento, i criteri di posizionamento distribuito presentano le seguenti restrizioni:

  • Puoi applicare un criterio di posizionamento distribuito solo a un massimo di 8 VM.

  • Non puoi applicare criteri di posizionamento distribuito alle prenotazioni di VM.

  • Non puoi verificare la località fisica delle VM.

Crea un criterio di posizionamento distribuito

Puoi creare un criterio di posizionamento distribuito usando gcloud CLI e REST.

gcloud

Per creare un criterio 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 del criterio di posizionamento distribuito da creare.

  • DOMAIN_COUNT: il numero distinto di domini di disponibilità in cui posizionare le VM. Ogni dominio ha alimentazione, raffreddamento e networking indipendenti. Il valore deve essere compreso tra 2 e 8, ovvero il numero massimo di VM a cui puoi applicare un criterio di posizionamento distribuito.

  • REGION: la regione in cui creare il criterio.

REST

Per creare un criterio 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 vuoi creare il criterio.

  • REGION: la regione in cui vuoi creare il criterio.

  • POLICY_NAME: il nome del criterio di posizionamento distribuito da creare.

  • DOMAIN_COUNT: il numero distinto di domini di disponibilità in cui posizionare le VM. Ogni dominio ha alimentazione, raffreddamento e networking indipendenti. Il valore deve essere compreso tra 2 e 8, ovvero il numero massimo di VM a cui puoi applicare un criterio di posizionamento distribuito.

Applica criteri di posizionamento distribuito

Puoi applicare un criterio di posizionamento distribuito a una VM esistente oppure quando crei VM, modelli di istanza o gruppi di istanze gestite.

Per creare una risorsa Compute Engine che specifichi un criterio di posizionamento distribuito o applicare il criterio di posizionamento distribuito a una VM esistente, seleziona uno dei seguenti metodi:

Applicare un criterio di posizionamento distribuito a una VM esistente

Puoi applicare un criterio di posizionamento distribuito a una VM esistente utilizzando gcloud CLI e REST.

gcloud

Per applicare un criterio di posizionamento distribuito a una VM esistente, utilizza il comando gcloud compute instances add-resource-policies con il flag --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 un criterio di posizionamento distribuito esistente.

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

REST

Per applicare un criterio di posizionamento distribuito a una VM esistente, effettua una richiesta POST al metodo instances.addResourcePolicies. Nel corpo della richiesta, includi il campo resourcePolicies.

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 il criterio di posizionamento distribuito e la VM.

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

  • VM_NAME: il nome di una VM esistente.

  • REGION: la regione in cui si trova il criterio di posizionamento distribuito.

  • POLICY_NAME: il nome di un criterio di posizionamento distribuito esistente.

Crea una VM che specifichi un criterio di posizionamento distribuito

Puoi creare una VM che specifica un criterio di posizionamento distribuito esistente utilizzando gcloud CLI e REST.

gcloud

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

Ad esempio, per creare una VM con proprietà predefinite e che specifichi un criterio di posizionamento distribuito, esegui questo comando:

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

Sostituisci quanto segue:

  • VM_NAME: il nome della VM da creare.

  • POLICY_NAME: il nome di un criterio di posizionamento distribuito esistente.

  • ZONE: la zona in cui creare la VM. Puoi creare una VM solo in una zona all'interno della regione in cui si trova il criterio di posizionamento distribuito specificato.

REST

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

Ad esempio, per creare una VM con proprietà predefinite e che specifica un criterio di posizionamento distribuito, effettua la seguente richiesta POST:

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

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui si trova il criterio di posizionamento distribuito.

  • ZONE: la zona in cui creare la VM. Puoi creare una VM solo in una zona all'interno della regione in cui si trova il criterio di posizionamento distribuito specificato.

  • VM_NAME: il nome della VM da creare.

  • REGION: la regione in cui si trova il criterio di posizionamento distribuito.

  • POLICY_NAME: il nome di un criterio di posizionamento distribuito esistente.

Per saperne di più sulle opzioni di configurazione e sui ruoli IAM per creare una VM, consulta Creare e avviare un'istanza VM.

Crea un modello di istanza che specifichi un criterio di posizionamento distribuito

Puoi creare un modello di istanza che specifichi un criterio di posizionamento distribuito esistente utilizzando gcloud CLI e REST.

Dopo aver creato un modello di istanza, puoi utilizzarlo per:

gcloud

Per creare un modello di istanza che specifichi un criterio di posizionamento distribuito, utilizza il comando gcloud compute instance-templates create con il flag --resource-policies.

Ad esempio, per creare un modello di istanza globale con proprietà VM predefinite e che includa un criterio di posizionamento distribuito, esegui questo comando:

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

Sostituisci quanto segue:

  • INSTANCE_TEMPLATE_NAME: il nome del modello di istanza.

  • PROJECT_ID: l'ID del progetto in cui si trova il criterio di posizionamento distribuito che vuoi applicare al modello di istanza.

  • POLICY_NAME: il nome di un criterio di posizionamento differenziato esistente.

REST

Per creare un modello di istanza che specifichi un criterio di posizionamento distribuito, effettua una richiesta POST al metodo instanceTemplates.insert. Nel corpo della richiesta, includi il campo resourcePolicies.

Ad esempio, per creare un modello di istanza globale con proprietà VM predefinite e che specifica un criterio di posizionamento distribuito, effettua la seguente richiesta POST:

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

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "resourcePolicies": {
      "POLICY_NAME"
    }
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui si trova il modello di istanza a cui vuoi applicare il criterio di posizionamento distribuito.

  • INSTANCE_TEMPLATE_NAME: il nome del modello di istanza.

  • POLICY_NAME: il nome di un criterio di posizionamento distribuito esistente.

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

Applica un criterio di posizionamento distribuito alle VM in un gruppo di istanze gestite

Dopo aver creato un modello di istanza che specifica un criterio di posizionamento distribuito, puoi utilizzarlo per:

Se vuoi applicare un criterio di posizionamento distribuito a un gruppo di istanze gestite, ti consigliamo di creare o applicare il criterio a un gruppo di istanze gestite a livello di regione con la forma di distribuzione qualsiasi zona singola. In questo modo, ogni volta che un gruppo di istanze gestite a livello di regione ha bisogno di fare lo scale out creando VM, seleziona la zona in cui creare le VM in base alle quote e ai requisiti hardware.

Crea un gruppo di istanze gestite che specifichi un criterio di posizionamento distribuito

Puoi creare un gruppo di istanze gestite utilizzando un modello di istanza che specifichi un criterio di posizionamento distribuito utilizzando gcloud CLI e REST.

gcloud

Per creare un gruppo di istanze gestite mediante un modello di istanza che specifichi un criterio di posizionamento distribuito, utilizza il comando gcloud compute instance-groups managed create con il flag --template impostato sul nome del modello esistente.

Ad esempio, per creare un gruppo di istanze gestite a livello di regione con proprietà VM predefinite e forma di distribuzione any-single-zone, esegui questo comando:

gcloud compute instance-groups managed create MIG_NAME \
    --region=REGION \
    --size=SIZE \
    --target-distribution-shape=any-single-zone \
    --template=INSTANCE_TEMPLATE_NAME

Sostituisci quanto segue:

  • MIG_NAME: il nome del gruppo di istanze gestite da creare.

  • REGION: la regione in cui creare il gruppo di istanze gestite, che deve corrispondere a quella in cui si trova il criterio di posizionamento distribuito.

  • SIZE: la dimensione del gruppo di istanze gestite.

  • INSTANCE_TEMPLATE_NAME: il nome di un modello di istanza esistente che specifica un criterio di posizionamento distribuito.

REST

Per creare un gruppo di istanze gestite utilizzando un modello di istanza che specifichi un criterio di posizionamento distribuito, effettua una richiesta POST ai metodi instanceGroupManagers.insert o regionInstanceGroupManagers.insert. Nel corpo della richiesta, includi il campo instanceTemplate e impostalo sul nome del modello esistente.

Ad esempio, per creare un gruppo di istanze gestite a livello di regione con proprietà VM predefinite e forma di distribuzione qualsiasi-zona singola, effettua la seguente richiesta POST:

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

{
  "name": "MIG_NAME",
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "targetSize": SIZE,
  "distributionPolicy": {
    "targetShape": "ANY_SINGLE_ZONE"
  }
}

Sostituisci quanto segue:

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

  • REGION: la regione in cui creare il gruppo di istanze gestite, che deve corrispondere a quella in cui si trova il criterio di posizionamento distribuito.

  • MIG_NAME: il nome del gruppo di istanze gestite da creare.

  • INSTANCE_TEMPLATE_NAME: il nome di un modello di istanza esistente che specifica un criterio di posizionamento distribuito.

  • SIZE: la dimensione del gruppo di istanze gestite.

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

Applica un criterio di posizionamento distribuito a un gruppo di istanze gestite esistente

Puoi applicare un criterio di posizionamento distribuito a un gruppo di istanze gestite esistente utilizzando un modello di istanza che specifichi lo stesso criterio di posizionamento utilizzando gcloud CLI e REST.

gcloud

Per aggiornare un gruppo di istanze gestite in modo che utilizzi un modello di istanza che specifichi un criterio di posizionamento distribuito, utilizza il comando gcloud compute instance-groups managed rolling-action start-update.

Ad esempio, per aggiornare un gruppo di istanze gestite a livello di regione in modo da utilizzare un modello di istanza che specifichi un criterio di posizionamento distribuito e sostituire le VM esistenti del gruppo di istanze gestite con nuove VM che specificano le proprietà del modello, esegui questo comando:

gcloud compute instance-groups managed rolling-action start-update MIG_NAME \
    --region=REGION \
    --type=proactive \
    --version=template=INSTANCE_TEMPLATE_NAME

Sostituisci quanto segue:

  • MIG_NAME: il nome di un gruppo di istanze gestite esistente.

  • REGION: la regione in cui si trova il gruppo di istanze gestite. Puoi applicare il criterio di posizionamento distribuito solo a un gruppo di istanze gestite che si trova nella stessa regione.

  • INSTANCE_TEMPLATE_NAME: il nome di un modello di istanza esistente che specifica un criterio di posizionamento distribuito.

REST

Per aggiornare un gruppo di istanze gestite in modo che utilizzi un modello di istanza che specifichi un criterio di posizionamento distribuito e che applichi automaticamente le proprietà del modello e del criterio di posizionamento alle VM esistenti nel gruppo di istanze gestite, effettua una richiesta PATCH ai metodi instanceGroupManagers.insert o regionInstanceGroupManagers.insert.

Ad esempio, per aggiornare un gruppo di istanze gestite a livello di regione in modo da utilizzare un modello di istanza che specifichi un criterio di posizionamento distribuito e sostituire le VM esistenti del gruppo di istanze gestite con nuove VM che specificano le proprietà del modello, effettua la seguente richiesta PATCH:

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

{
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "updatePolicy": {
    "type": "PROACTIVE"
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto che hai utilizzato per creare un gruppo di istanze gestite esistente, il criterio di posizionamento distribuito e il modello di istanza che specifica il criterio di posizionamento distribuito.

  • REGION: la regione in cui si trova il gruppo di istanze gestite. Puoi applicare il criterio di posizionamento distribuito solo a un gruppo di istanze gestite che si trova nella stessa regione.

  • MIG_NAME: il nome di un gruppo di istanze gestite esistente.

  • INSTANCE_TEMPLATE_NAME: il nome di un modello di istanza esistente che specifica un criterio di posizionamento distribuito.

Per saperne di più sulle opzioni di configurazione e sui ruoli IAM per aggiornare le VM in un gruppo di istanze gestite, consulta Aggiornare e applicare nuove configurazioni alle VM in un gruppo di istanze gestite.

Che cosa succede dopo?