É possível controlar onde as instâncias de máquina virtual (VM, na sigla em inglês) estão localizadas fisicamente em relação a uma zona. As políticas de posicionamento a seguir estão disponíveis:
- Políticas de posicionamento distribuído. Use políticas de posicionamento distribuído quando quiser que as VMs sejam distribuídas longe umas das outras para reduzir o impacto de falhas do sistema host.
- Políticas de posicionamento compacto. Use políticas de posicionamento compacto quando quiser que as VMs fiquem próximas umas das outras para diminuir a latência de rede entre as VMs.
Antes de começar
- Para usar os exemplos de linha de comando deste guia, faça o seguinte:
- Instale ou atualize para a versão mais recente da Google Cloud CLI.
- Defina uma região e uma zona padrão.
- Para usar os exemplos da API deste guia, configure o acesso a ela.
Suporte e restrições
As políticas de posicionamento têm o seguinte suporte e restrições:
- Políticas de posicionamento distribuído:
- Suporte para até oito VMs por política.
- Aplica a um número dinâmico de VMs.
- Suporte apenas para tipos de máquina N1, N2, N2D e C2
- Permite a migração em tempo real.
- Políticas de posicionamento compacto:
- Suporte a até 150 VMs em cada política.
- Compatível apenas com tipos de máquinas A2, C2, C2D, N2 e N2D.
- Não é possível fazer migração em tempo real.
- Aplica a VMs definidas como
TERMINATE
para eventos de manutenção do host. - Não é possível aplicar a VMs existentes.
- Políticas de posicionamento compactado e distribuído:
- Não pode ser aplicado a recursos reservados ou nós de locatário individual.
Criar uma política de posicionamento
Para controlar onde as VMs estão localizadas em relação umas a outras, use o seguinte processo:
- Crie uma política de posicionamento compacto ou distribuído com a configuração de
posicionamento necessária para as VMs.
- As políticas de posicionamento distribuído colocam as instâncias de VM estritamente em infraestruturas de data center básicas para que as VMs não compartilhem o mesmo sistema de host ou de energia. Isso reduz o impacto de falhas de host ou de energia.
- As políticas de posicionamento compacto colocam as instâncias de VM perto umas das outras para possibilitar baixa latência de rede entre as VMs.
- Aplique a política de colocação a uma ou mais instâncias. As VMs que compartilham a mesma política são posicionadas dependendo de como você definiu a política.
Criar uma política de canais de distribuição
Para criar uma política de colocação de extensão em que as instâncias estão localizadas em vários domínios de disponibilidade distintos, especifique o número de domínios de disponibilidade que essa política precisa usar para separar instâncias.
gcloud
Use a CLI gcloud para criar a política.
gcloud compute resource-policies create group-placement POLICY_NAME \ --availability-domain-count DOMAIN_COUNT \ --region REGION \ --project PROJECT_ID
Substitua:
POLICY_NAME
: o nome da nova políticaDOMAIN_COUNT
: o número de conjuntos distintos de hardware de host e redes físicas que esta política usará para separar VMs.REGION
: a região em que você planeja criar instâncias de VM que usam essa políticaPROJECT_ID
: o ID do projeto.
API
Crie uma política de colocação de extensão usando o
método resourcePolicies.insert
nas APIs e serviços do Console do Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies
No corpo da solicitação, forneça detalhes da política de posicionamento:
{ "name": "POLICY_NAME", "groupPlacementPolicy": { "availabilityDomainCount": DOMAIN_COUNT } }
Substitua:
PROJECT_ID
: o ID do projeto.REGION
: a região em que você planeja criar instâncias de VM que usam essa políticaPOLICY_NAME
: o nome da nova políticaDOMAIN_COUNT
: o número de conjuntos distintos de hardware de host e redes físicas que esta política usará para separar instâncias
Criar uma política de colocação de compactação
Para criar uma política de colocação de compactação em que as instâncias estejam localizadas mais próximas
umas das outras e na mesma infraestrutura de rede, especifique uma política COLLOCATED
.
gcloud
Use a CLI gcloud para criar a política.
gcloud compute resource-policies create group-placement POLICY_NAME \ --collocation COLLOCATED \ --region REGION \ --project PROJECT_ID
Substitua:
POLICY_NAME
: o nome da nova políticaREGION
: a região em que você planeja criar instâncias de VM que usam essa políticaPROJECT_ID
: o ID do projeto.
API
Crie uma política de colocação de compactação usando o
método resourcePolicies.insert
nas APIs e serviços do Console do Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies
No corpo da solicitação, forneça detalhes da política de posicionamento:
{ "name": "POLICY_NAME", "groupPlacementPolicy": { "collocation": "COLLOCATED" } }
Substitua:
PROJECT_ID
: o ID do projeto.REGION
: a região em que você planeja criar instâncias de VM que usam essa políticaPOLICY_NAME
: o nome da nova política
Aplicar políticas de posicionamento a instâncias
Use os procedimentos a seguir para aplicar políticas de colocação em instâncias novas e atuais.
Como aplicar uma política de posicionamento a uma nova instância
Depois de criar a política de colocação, aplique-a a uma ou mais instâncias. As VMs que compartilham a mesma política são posicionadas dependendo de comocomo você definiu a política.
gcloud
Para aplicar uma política de colocação a uma VM, inclua a
sinalização --resource-policies
ao criar VMs
individualmente
ou em massa.
Para políticas de posicionamento compacto, é necessário incluir as
sinalizações --maintenance-policy=TERMINATE
e --no-restart-on-failure
.
Por exemplo, para criar uma VM que use uma política de colocação de compactação, use o seguinte comando:
gcloud compute instances create VM_NAME \ --zone ZONE \ --resource-policies POLICY_NAME \ --image-family IMAGE_FAMILY \ --image-project IMAGE_PROJECT \ --project PROJECT_ID \ --maintenance-policy=TERMINATE \ --no-restart-on-failure \ --async
Substitua:
VM_NAME
: o nome da nova VM;ZONE
: a zona em que você quer criar a nova VM.Essa zona precisa estar na mesma região em que a política de colocação está localizada.
POLICY_NAME
: o nome da política de posicionamento que você quer aplicar a essa VM.É possível aplicar mais de uma política de posicionamento a uma VM.
IMAGE_FAMILY
: uma das famílias de imagens disponíveis.IMAGE_PROJECT
: o projeto de imagem que contém a imagem.PROJECT_ID
: ID do projeto
API
Para aplicar uma política de colocação a uma VM, inclua a
sinalização --resource-policies
ao criar VMs
individualmente
ou em massa.
Por exemplo, para criar uma única VM, use o seguinte comando:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
No corpo da solicitação, forneça a política de recursos. Para políticas de
posicionamento compacto, é necessário incluir os argumentos "onHostMaintenance": "TERMINATE"
e "automaticRestart": false
:
{ "name": "VM_NAME", "machineType": "machineTypes/MACHINE_TYPE" "networkInterfaces": [{ "accessConfigs": [{ "type": "ONE_TO_ONE_NAT", "name": "External NAT" }], "network": "global/networks/default" }], "scheduling": { "onHostMaintenance": "TERMINATE", "automaticRestart": false }, "disks": [{ "autoDelete": "true", "boot": "true", "type": "PERSISTENT", "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" } }], "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ] }
Substitua:
PROJECT_ID
: ID do projetoZONE
: a zona em que você quer criar a nova VM;Essa zona precisa estar na mesma região em que a política de colocação está localizada.
VM_NAME
: o nome da nova VM;MACHINE_TYPE
: o tipo de máquina da VM;IMAGE_PROJECT
: o projeto de imagem que contém a imagem;IMAGE_FAMILY
: uma das famílias de imagens disponíveis;REGION
: a região em que você criou a política de posicionamento;POLICY_NAME
: o nome da política de posicionamento que você quer aplicar a essa VM.É possível aplicar mais de uma política de posicionamento a uma VM.
Como aplicar uma política de posicionamento em uma instância existente
Se você criar uma política de posicionamento distribuído, é possível aplicá-la a uma ou mais VMs existentes sem reiniciar a VM.
gcloud
Aplique uma política de propagação de posição em uma instância atual usando o
comando add-resource-policies
.
Para políticas de posicionamento compacto, é necessário incluir
as sinalizações --maintenance-policy=TERMINATE
e --no-restart-on-failure
.
gcloud compute instances add-resource-policies VM_NAME \ --zone ZONE \ --resource-policies POLICY_NAME \ --project PROJECT_ID [--maintenance-policy=TERMINATE] \ [--no-restart-on-failure]
Substitua:
VM_NAME
: O nome da VM.ZONE
: a zona da VM;Essa zona precisa estar na mesma região em que a política de posicionamento está localizada.
POLICY_NAME
: o nome da política de posicionamento que você quer aplicar a essa VM.É possível aplicar mais de uma política de posicionamento a uma VM.
PROJECT_ID
: ID do projeto
API
Aplique uma política de propagação de posição em uma instância atual usando
o método addResourcePolicies
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/addResourcePolicies
No corpo da solicitação, forneça a política de recursos. Para políticas de
posicionamento compacto, é necessário incluir os argumentos "onHostMaintenance": "TERMINATE"
e "automaticRestart": false
.
{ "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ] "scheduling": { "onHostMaintenance": "TERMINATE", "automaticRestart": false }, }
Substitua:
PROJECT_ID
: ID do projetoZONE
: a zona em que você quer criar a nova VM;Essa zona precisa estar na mesma região em que a política de colocação está localizada.
VM_NAME
: o nome da nova VM;REGION
: a região em que você planeja criar instâncias de VM que usam essa políticaPOLICY_NAME
: o nome da política de posicionamento que você quer aplicar a essa VM.É possível aplicar mais de uma política de posicionamento a uma VM.
Visualizar políticas de posicionamento
É possível visualizar as políticas de posicionamento aplicadas a uma VM e os detalhes de uma política de posicionamento específica usando a CLI gcloud e a API Compute Engine.
Visualizar a política de posicionamento de uma VM
gcloud
Para visualizar a política de posicionamento de recursos de uma VM, use o comando gcloud compute instances
describe
:
gcloud compute instances describe VM_NAME
Substitua VM_NAME
pelo nome da VM.
Se uma política de posicionamento estiver disponível, a saída conterá o
campo resourcePolicies
:
resourcePolicies: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGIONS/resourcePolicies/POLICY_NAME
API
Para visualizar a política de posicionamento de recursos de uma VM, use o método
instances.get
:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Substitua:
PROJECT_ID
: ID do projetoZONE
: a zona que contém a VM;VM_NAME
: o nome da VM.
Se uma política de posicionamento estiver disponível, o campo resourcePolicies
retornará
as políticas de recursos da VM.
"resourcePolicies": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/VM_NAME" ],
Ver detalhes de uma política de posicionamento
gcloud
Para ver os detalhes de uma política de posicionamento , use o comando gcloud compute
resource-policies describe
:
gcloud compute resource-policies describe POLICY_NAME
Substitua POLICY_NAME
pelo nome da política
de posicionamento.
Se a política de posicionamento estiver disponível, a saída conterá os detalhes da política de posicionamento:
... groupPlacementPolicy: availabilityDomainCount: 2 kind: compute#resourcePolicy name: POLICY_NAME region: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION ...
API
Para visualizar detalhes de uma política de posicionamento, use o método
resourcePolicies.get
:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME
Substitua:
PROJECT_ID
: ID do projetoREGION
: a região que contém a VM;POLICY_NAME
: o nome da política de posicionamento.
Se a política de posicionamento estiver disponível, o corpo da resposta conterá os detalhes da política:
... "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION", "name": "POLICY_NAME", "groupPlacementPolicy": { "availabilityDomainCount": 2 }, "kind": "compute#resourcePolicy" ...
A seguir
- Verifique o status da instância para ver quando ela está pronta para uso.
- Conecte-se à instância.
- Leia dicas sobre como projetar um sistema robusto capaz de processar interrupções de serviço.