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 lontane l'una dall'altra posizionandoli in domini di disponibilità diversi. Un dominio di disponibilità è un hardware isolato e distinto in un data center con sistema di alimentazione, raffreddamento e sorgente di rete. L'utilizzo di un criterio di posizionamento distribuito consente di ridurre l'impatto di un guasto hardware sottostante o di un evento di manutenzione a tutte le tue VM.

Prima di iniziare

  • Se non l'hai già fatto, configura l'autenticazione. Autenticazione è la procedura di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione Compute Engine come segue.

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

        Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

        gcloud init

      Per maggiori informazioni, consulta Autenticazione per l'utilizzo di 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 Ruolo IAM Amministratore istanze Compute (v1) (roles/compute.instanceAdmin.v1) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

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

Autorizzazioni obbligatorie

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

  • Per creare criteri di posizionamento: compute.resourcePolicies.create nel progetto
  • Per applicare un criterio di posizionamento alle VM esistenti: compute.instances.addResourcePolicies nel progetto
  • Per creare le VM:
    • compute.instances.create nel 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 nello snapshot
    • Per utilizzare un modello di istanza per creare la VM: compute.instanceTemplates.useReadOnly nel modello di istanza
    • Per assegnare una rete legacy alla VM,: compute.networks.use nel progetto
    • Per specificare un indirizzo IP statico per la VM: compute.addresses.use nel progetto
    • Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete legacy: compute.networks.useExternalIp nel progetto
    • Per specificare una subnet per la VM: compute.subnetworks.use nel progetto o nella subnet scelta
    • Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete VPC,: compute.subnetworks.useExternalIp nel progetto o nella subnet scelta
    • Per impostare i metadati dell'istanza VM per la VM: compute.instances.setMetadata nel 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 account di servizio che la VM deve utilizzare: compute.instances.setServiceAccount sulla VM
    • Per creare un nuovo disco per la VM: compute.disks.create nel 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 modello di istanza: compute.instanceTemplates.create nel progetto
  • Per creare un gruppo di istanze gestite a livello di zona o di regione: compute.instanceGroupManagers.create nel progetto

Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati e altri ruoli predefiniti.

Crea un criterio di posizionamento distribuito

Quando crei un criterio di posizionamento distribuito, puoi specificare fino a otto di disponibilità in cui posizionare le VM. A meno che tu non voglia testare del criterio di posizionamento distribuito alle VM, Google Cloud consiglia che specifica due o più domini di disponibilità. In questo modo ridurrai il rischio VM interessate da un singolo evento di manutenzione o guasto hardware.

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

gcloud

Per creare un criterio di posizionamento distribuito, utilizza il metodo 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 per creare.

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

  • REGION: la regione in cui creare il criterio.

REST

Per creare un criterio di posizionamento distribuito, invia una richiesta POST a 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 per la creazione del criterio.

  • REGION: la regione in cui vuoi creare .

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

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

Applica criteri di posizionamento distribuito

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

Creare una risorsa Compute Engine che specifichi un posizionamento distribuito o applica il criterio di posizionamento distribuito a una VM esistente, seleziona uno dei utilizza i seguenti metodi:

Applica un criterio di posizionamento distribuito a una VM esistente

Prima di applicare un criterio di posizionamento distribuito a una VM esistente, esamina il seguenti:

  • Se il criterio di posizionamento distribuito ha due o più domini di disponibilità, puoi aggiungerlo a una VM senza arrestarla. Altrimenti, se la tua diffusione il criterio di posizionamento specifica un solo dominio, è necessario prima interrompere la VM prima e applicare il criterio di posizionamento.

  • La VM e il criterio di posizionamento distribuito devono trovarsi nella stessa regione. Ad esempio, se il criterio di posizionamento si trova nella regione us-central1, la VM deve trovarsi in una zona in us-central1. Per eseguire la migrazione di una VM a un'altra regione, quindi Spostare una VM tra zone o regioni.

In caso contrario, l'applicazione del criterio di posizionamento distribuito alla VM non riuscirà. Se la VM specifica già un criterio di posizionamento e vuoi sostituirlo, quindi consulta Sostituire un criterio di posizionamento in una VM .

Per applicare un criterio di posizionamento distribuito a una VM esistente, seleziona una delle le seguenti opzioni:

gcloud

Per applicare un criterio di posizionamento distribuito a una VM esistente, utilizza 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 posizionamento distribuito esistente .

  • ZONE: la zona in cui si trova la VM, che deve essere 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 alla 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 è stata creata la distribuzione il criterio di posizionamento e la VM.

  • ZONE: la zona in cui si trova la VM, che deve essere 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 il criterio di posizionamento distribuito in cui viene localizzato.

  • POLICY_NAME: il nome di un posizionamento distribuito esistente .

Crea una VM con un criterio di posizionamento distribuito

Puoi creare una VM con un criterio di posizionamento distribuito solo in una zona all'interno del nella stessa regione del criterio di posizionamento.

Per creare una VM che specifichi un criterio di posizionamento distribuito, seleziona una delle le seguenti opzioni:

gcloud

Per creare una VM che specifica un criterio di posizionamento distribuito, utilizza 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: tipo di macchina per la VM.

  • POLICY_NAME: il nome di un posizionamento distribuito esistente .

  • ZONE: la zona in cui creare la VM.

REST

Per creare una VM che specifica un criterio di posizionamento distribuito, crea un POST richiesta alla 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",
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui è stata creata la distribuzione criterio di posizionamento.

  • ZONE: la zona in cui creare la VM e in cui del tipo di macchina. Puoi specificare solo un tipo di macchina disponibile all'interno della stessa regione del criterio di posizionamento distribuito.

  • VM_NAME: il nome della VM da creare.

  • MACHINE_TYPE: tipo di macchina per la VM.

  • REGION: la regione in cui il criterio di posizionamento distribuito in cui viene localizzato.

  • POLICY_NAME: il nome di un posizionamento distribuito esistente .

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

Crea un modello di istanza con un criterio di posizionamento distribuito

Se vuoi creare un modello di istanza regionale, devi creare il nella stessa regione del criterio di posizionamento distribuito. Altrimenti, la creazione l'errore del modello di istanza.

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

Per creare un modello di istanza che specifichi un criterio di posizionamento distribuito, seleziona una delle seguenti opzioni:

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 che specifichi una distribuzione criterio di posizionamento, 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 dell'istanza modello.

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

  • POLICY_NAME: il nome di un posizionamento distribuito esistente .

REST

Per creare un modello di istanza che specifichi un criterio di posizionamento distribuito, effettua una richiesta POST a uno dei seguenti metodi:

Nel corpo della richiesta, specifica il campo resourcePolicies.

Ad esempio, per creare un modello di istanza globale che specifichi una distribuzione criterio di posizionamento, 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 è stata creata la distribuzione criterio di posizionamento.

  • INSTANCE_TEMPLATE_NAME: il nome dell'istanza modello.

  • IMAGE o IMAGE_FAMILY: specificane uno dei seguenti:

    • IMAGE: una versione specifica dell'immagine del sistema operativo; della ad esempio debian-10-buster-v20200309.

    • IMAGE_FAMILY: un famiglia di immagini. Questo specifica l'immagine del sistema operativo più recente e non deprecata. Ad esempio, se specifichi family/debian-10, la versione più recente della famiglia di immagini Debian 10 . Per ulteriori informazioni sull'utilizzo delle famiglie di immagini, consulta Best practice per le famiglie di immagini.

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

  • POLICY_NAME: il nome di un posizionamento distribuito esistente .

Per ulteriori informazioni sulle opzioni di configurazione per creare un'istanza vedi il modello Creare modelli di istanza.

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

Dopo crea un modello di istanza che specifichi criterio di posizionamento distribuito, puoi usare il modello per:

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

Crea un gruppo di istanze gestite con un criterio di posizionamento distribuito

Puoi creare VM che specificano un criterio di posizionamento distribuito solo se le VM che si trovano nella stessa regione del criterio di posizionamento.

crea un gruppo di istanze gestite mediante un modello di istanza che specifica un posizionamento distribuito. criterio, seleziona una delle seguenti opzioni:

gcloud

crea un gruppo di istanze gestite utilizzando un modello di istanza che specifica una distribuzione criterio di posizionamento, utilizza Comando gcloud compute instance-groups managed create.

Ad esempio, per creare un gruppo di istanze gestite a livello di regione con proprietà VM predefinite e 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 alla regione in cui si trova il criterio di posizionamento distribuito.

  • SIZE: la dimensione del gruppo di istanze gestite.

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

REST

crea un gruppo di istanze gestite utilizzando un modello di istanza che specifica una distribuzione criterio di posizionamento, invia una richiesta POST instanceGroupManagers.insert o regionInstanceGroupManagers.insert di machine learning.

Ad esempio, per creare un gruppo di istanze gestite a livello di regione con proprietà VM predefinite e qualsiasi-zona-singola, effettua una richiesta POST come segue:

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 è stata creata la distribuzione il criterio di posizionamento e il modello di istanza che specifica il posizionamento .

  • REGION: la regione in cui creare il gruppo di istanze gestite, che deve corrispondere alla regione 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 elemento esistente che specifica un criterio di posizionamento distribuito.

  • SIZE: la dimensione del gruppo di istanze gestite.

Per ulteriori informazioni sulle opzioni di configurazione 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 compatto a un gruppo di istanze gestite esistente solo se il gruppo di istanze gestite viene situato nella stessa regione del criterio di posizionamento o, per i gruppi di istanze gestite a livello di zona, in una zona all'interno della stessa regione del criterio di posizionamento.

Aggiornare un gruppo di istanze gestite in modo che utilizzi un modello di istanza che specifichi un posizionamento distribuito. criterio, seleziona una delle seguenti opzioni:

gcloud

Aggiornare un gruppo di istanze gestite in modo che utilizzi un modello di istanza che specifichi una distribuzione criterio di posizionamento, utilizza 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 che utilizzi un modello di istanza specifica un criterio di posizionamento distribuito e sostituire le VM esistenti un 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 nello stesso regione.

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

REST

Aggiornare un gruppo di istanze gestite in modo che utilizzi un modello di istanza che specifichi una distribuzione criterio di posizionamento e applicare automaticamente le proprietà del modello il criterio di posizionamento alle VM esistenti nel gruppo di istanze gestite, effettua una richiesta PATCH a il instanceGroupManagers.insert o regionInstanceGroupManagers.insert di machine learning.

Ad esempio, per aggiornare un gruppo di istanze gestite a livello di regione in modo che utilizzi un modello di istanza specifica un criterio di posizionamento distribuito e sostituire le VM esistenti gruppo di istanze gestite con nuove VM che specificano le proprietà del modello, apporta le seguenti modifiche Richiesta di 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 nello stesso regione.

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

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

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

Passaggi successivi