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 diffuso 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 siano posizionate su hardware distinto, riducendo l'impatto dei guasti hardware sottostanti o ottimizzando la migrazione live.
Puoi applicare un criterio di posizionamento distribuito quando:
Crea o aggiorna una VM
Creare un modello di istanza. Il modello di istanza applica quindi il criterio di posizionamento distribuito quando:
Crea una VM
Crea o aggiorna un gruppo di istanze gestite
Prima di iniziare
-
Configurare l'autenticazione.
Seleziona la scheda relativa a come intendi utilizzare gli esempi di questa pagina:
Console
Quando utilizzi la console Google Cloud per accedere ai servizi e alle API Google Cloud, non è necessario configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI, quindi inizializzalo eseguendo il comando seguente:
gcloud init
- Imposta una regione e una zona predefinite.
REST
Per utilizzare gli esempi di API REST su questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci allgcloud CLI.
Installa Google Cloud CLI, quindi inizializzalo eseguendo il comando seguente:
gcloud init
-
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
) sulla VM o sul progetto.
Per saperne di più sulla concessione dei ruoli, vedi 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 richieste, 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
nel progetto -
Per applicare un criterio di posizionamento a una VM esistente:
compute.instances.addResourcePolicies
nel progetto
Potresti anche essere in grado di ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Limitazioni
Oltre alle restrizioni generali per i criteri di posizionamento, i criteri di posizionamento distribuiti sono soggetti alle seguenti limitazioni:
Puoi applicare un criterio di posizionamento distribuito 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 utilizzando l'interfaccia a riga di comando gcloud CLI'API Compute Engine.
gcloud
Per creare un criterio di posizionamento distribuito, usa 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 \
--project=PROJECT_ID \
--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 inserire le VM. Il valore deve essere compreso tra1
e8
, ovvero il numero massimo di VM a cui puoi applicare un criterio di posizionamento distribuito.PROJECT_ID
: l'ID del progetto in cui vuoi creare il criterio.REGION
: la regione in cui creare il criterio.
REST
Per creare un criterio di posizionamento distribuito, effettua una richiesta POST
al metodo resourcePolicies.insert
con 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 inserire le VM. Ogni dominio ha la propria sorgente di energia, raffreddamento e networking. Il valore deve essere compreso tra1
e8
, ovvero il numero massimo di VM a cui puoi applicare un criterio di posizionamento distribuito.
Applica criteri di posizionamento esteso
Puoi applicare un criterio di posizionamento distribuito a una VM esistente o quando crei VM, modelli di istanza o MIG.
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:
Applica un criterio di posizionamento distribuito a una VM esistente.
Crea una VM che specifichi un criterio di posizionamento distribuito.
Crea in blocco VM che specificano un criterio di posizionamento distribuito.
Crea un modello di istanza che specifichi un criterio di posizionamento distribuito.
Applica un criterio di posizionamento distribuito alle VM in un gruppo di istanze gestite.
Applica un criterio di posizionamento distribuito a una VM esistente
Puoi applicare un criterio di posizionamento distribuito a una VM esistente utilizzando l'interfaccia a riga di comando gcloud CLI'API Compute Engine.
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 \
--project=PROJECT_ID \
--resource-policies=POLICY_NAME \
--zone=ZONE
Sostituisci quanto segue:
VM_NAME
: il nome di una VM esistente.PROJECT_ID
: l'ID del progetto in cui si trovano il criterio di posizionamento distribuito e la VM.POLICY_NAME
: il nome di un criterio di posizionamento distribuito esistente.ZONE
: la zona in cui esiste la VM, che deve trovarsi all'interno dell'area geografica in cui si trova il criterio di posizionamento della distribuzione.
REST
Per applicare un criterio di posizionamento distribuito a una VM esistente, effettua una richiesta POST
al metodo instances.addResourcePolicies
con 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 esiste la VM, che deve trovarsi all'interno dell'area geografica in cui si trova il criterio di posizionamento della distribuzione.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 specifichi un criterio di posizionamento distribuito esistente utilizzando l'interfaccia a riga di comando gcloud CLI'API Compute Engine.
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 specifica un criterio di posizionamento distribuito, esegui questo comando:
gcloud compute instances create VM_NAME \
--project=PROJECT_ID \
--resource-policies=POLICY_NAME \
--zone=ZONE
Sostituisci quanto segue:
VM_NAME
: il nome della VM da creare.PROJECT_ID
: l'ID del progetto in cui si trova il criterio di posizionamento distribuito.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 che si trova 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, effettua una richiesta POST
al metodo instances.insert
con il campo resourcePolicies
.
Ad esempio, per creare una VM con proprietà predefinite e 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 che si trova 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 ulteriori informazioni sulle opzioni di configurazione e sui ruoli IAM per creare una VM, consulta Creare e avviare un'istanza VM.
Crea in blocco VM che specificano un criterio di posizionamento distribuito
Puoi creare in blocco VM che specificano un criterio di posizionamento distribuito esistente utilizzando l'interfaccia a riga di comando gcloud CLI'API Compute Engine.
gcloud
Per creare in blocco VM che specificano un criterio di posizionamento distribuito, utilizza il comando gcloud compute instances bulk create
con i flag --async
e --resource-policies
.
Ad esempio, per creare in blocco VM che hanno tutte proprietà predefinite e specificare lo stesso criterio di posizionamento distribuito, esegui questo comando:
gcloud compute instances bulk create \
--async \
--count=COUNT \
--name-pattern=NAME_PATTERN \
--project=PROJECT_ID \
--resource-policies=POLICY_NAME \
--zone=ZONE
Sostituisci quanto segue:
COUNT
: il numero di VM da creare.NAME_PATTERN
: il pattern di nome per le VM da creare. Utilizza il carattere hash (#
) per sostituirlo con una sequenza di numeri. Ad esempio, se specifichivm-#
, vengono create VM con i nomivm-1
,vm-2
e così via, fino al numero di VM specificato inCOUNT
.PROJECT_ID
: l'ID del progetto in cui si trova il criterio di posizionamento distribuito.POLICY_NAME
: il nome di un criterio di posizionamento distribuito esistente.ZONE
: la zona in cui creare collettivamente le VM. Puoi creare VM solo in zone che si trovano all'interno della regione del criterio di posizionamento distribuito specificato.
REST
Per creare in blocco VM che specificano un criterio di posizionamento distribuito, crea un POST
nel metodo instances.bulkInsert
con il campo resourcePolicies
.
Ad esempio, per creare in blocco VM che hanno tutte proprietà predefinite e specificare lo stesso criterio di posizionamento distribuito, effettua la seguente richiesta POST
:
POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert
{
"count": "COUNT",
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"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 collettivamente le VM. Puoi creare VM solo in zone che si trovano all'interno della regione del criterio di posizionamento distribuito specificato.COUNT
: il numero di VM da creare.NAME_PATTERN
: il pattern di nome per le VM da creare. Utilizza il carattere hash (#
) per sostituirlo con una sequenza di numeri. Ad esempio, se specifichivm-#
per, vengono create VM con i nomivm-1
,vm-2
e così via, fino al numero di VM specificato inCOUNT
.REGION
: la regione in cui si trova il criterio di posizionamento distribuito.POLICY_NAME
: il nome di un criterio di posizionamento distribuito esistente.
Per ulteriori informazioni sulle opzioni di configurazione o sui ruoli IAM per creare VM in blocco, consulta Creare VM in blocco.
Crea un modello di istanza che specifichi un criterio di posizionamento distribuito
Puoi creare un modello di istanza che specifica un criterio di posizionamento distribuito esistente utilizzando l'interfaccia a riga di comando gcloud CLI'API Compute Engine.
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 con proprietà predefinite delle VM e che includa un criterio di posizionamento distribuito, esegui questo comando:
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--project=PROJECT_ID \
--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 distribuito esistente.
REST
Per creare un modello di istanza che specifichi un criterio di posizionamento distribuito,
invia una richiesta POST
al
metodo instanceTemplates.insert
.
Nel corpo della richiesta, specifica il campo resourcePolicies
.
Ad esempio, per creare un modello di istanza con proprietà predefinite delle VM e specificare 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 criterio di posizionamento distribuito che vuoi applicare al modello di istanza.INSTANCE_TEMPLATE_NAME
: il nome del modello di istanza.POLICY_NAME
: il nome di un criterio di posizionamento distribuito esistente.
Per ulteriori informazioni 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:
Crea un gruppo di istanze gestite che specifichi lo stesso criterio di posizionamento distribuito.
Applica il criterio di posizionamento distribuito a un gruppo di istanze gestite esistente.
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 a qualsiasi zona. In questo modo, ogni volta che un gruppo di istanze gestite a livello di regione deve 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 specifica un criterio di posizionamento distribuito utilizzando l'interfaccia a riga di comando gcloud CLI'API Compute Engine.
gcloud
Per creare un gruppo di istanze gestite utilizzando un modello di istanza che specifica 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 \
--project=PROJECT_ID \
--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.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.SIZE
: le dimensioni 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 specifica un criterio di posizionamento distribuito, effettua una richiesta POST
ai metodi instanceGroupManagers.insert
o regionInstanceGroupManagers.insert
con il campo instanceTemplate
impostato sul nome del modello esistente.
Ad esempio, per creare un gruppo di istanze gestite a livello di regione con proprietà VM predefinite e la forma di distribuzione any-single-zone, 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
: le dimensioni del gruppo di istanze gestite.
Per ulteriori informazioni sulle opzioni di configurazione e sui ruoli IAM per creare i 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 l'interfaccia a riga di comando gcloud CLI'API Compute Engine.
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 \
--project=PROJECT_ID \
--region=REGION \
--type=proactive \
--version=template=INSTANCE_TEMPLATE_NAME
Sostituisci quanto segue:
MIG_NAME
: il nome di un gruppo di istanze gestite esistente.PROJECT_ID
: l'ID del progetto in cui si trovano il MIG, il criterio di posizionamento distribuito e il modello di istanza che specifica il criterio di posizionamento.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 applicare automaticamente le proprietà del modello e il criterio di posizionamento alle VM esistenti nel gruppo di istanze gestite, effettua una richiesta PATCH
a instanceGroupManagers.insert
o a regionInstanceGroupManagers.insert
.
Ad esempio, per aggiornare un gruppo di istanze gestite a livello di regione in modo da usare un modello di istanza che specifica 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 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.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 ulteriori informazioni 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?
Scopri come visualizzare i criteri di posizionamento.
Scopri come sostituire, rimuovere o eliminare i criteri di posizionamento.
Scopri come fare quanto segue con una VM che specifica un criterio di posizionamento:
Scopri di più sul processo di migrazione live durante gli eventi di manutenzione.