Como definir políticas de colocação de instância

É possível controlar onde suas instâncias estão fisicamente localizadas em relação a uma zona. As políticas de colocação a seguir estão disponíveis:

  • Extensão: use políticas de extensão quando quiser que as instâncias sejam distribuídas entre si para reduzir o impacto de possíveis falhas do sistema host.
  • Compactação: use políticas compactação quando quiser que as instâncias fiquem localizadas próximas umas das outras, o que possibilita baixa latência de rede entre as instâncias.

Antes de começar

Restrições

As políticas de colocação têm as seguintes restrições:

  • Extensão:
    • Até oito instâncias por política
    • Pode se aplicar a um número dinâmico de instâncias
    • Suporte apenas para tipos de máquina N1, N2, N2D e C2
  • Compactação:
    • Até 22 instâncias em cada política
    • Aplica-se a um número fixo de instâncias
    • Suporte apenas para tipos de máquinas C2
    • Não é compatível com a Migração em tempo real, e as instâncias com políticas de colocação precisam ser definidas como TERMINATE na manutenção do host
  • Propagação e compactação:

Como definir e aplicar uma política de colocação

Para controlar onde suas instâncias estão localizadas em relação a outras, use o seguinte processo:

  1. Crie uma política de colocação com a configuração de colocação que suas instâncias precisam. É possível criar um dos seguintes tipos de política:
    • As políticas de colocação de extensão colocam estritamente suas instâncias de VM na infraestrutura de data center subjacente para que as instâncias não compartilhem o mesmo host ou sistema de energia. Isso reduz o impacto de falhas de host ou de energia.
    • As políticas de colocação de Compactação aproximam suas instâncias de VM para possibilitar baixa latência de rede entre as instâncias.
  2. Aplique a política de colocação a uma ou mais instâncias. As instâncias que compartilham a mesma política são colocadas em relação umas às outras com base em 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 ferramenta 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ítica
  • DOMAIN_COUNT: o número de conjuntos distintos de hardware de host e redes físicas que esta política usará para separar instâncias
  • REGION: a região em que você planeja criar instâncias de VM que usam essa política
  • PROJECT_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

{
  "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ítica
  • POLICY_NAME: o nome da nova política
  • DOMAIN_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 e o número de instâncias de VM que você planeja incluir nessa política.

gcloud

Use a ferramenta gcloud para criar a política.

gcloud compute resource-policies create group-placement POLICY_NAME \
        --collocation COLLOCATED \
        --vm-count VM_COUNT \
        --region REGION \
        --project PROJECT_ID

Substitua:

  • POLICY_NAME: o nome da nova política
  • VM_COUNT: o número de instâncias de VM a serem incluídas nessa política Para políticas de compactação, você precisa aplicar a política exatamente a esse número de instâncias
  • REGION: a região em que você planeja criar instâncias de VM que usam essa política
  • PROJECT_ID: o código 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

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "vmCount": VM_COUNT,
    "collocation": "COLLOCATED"
  }
}

Substitua:

  • PROJECT_ID: o código do projeto
  • REGION: a região em que você planeja criar instâncias de VM que usam essa política
  • POLICY_NAME: o nome da nova política
  • VM_COUNT: o número de instâncias de VM a serem incluídas nessa política Para políticas de compactação, você precisa aplicar a política exatamente a esse número de instâncias.

Como aplicar políticas de colocação a instâncias

É possível aplicar políticas de colocação a novas instâncias.

Como aplicar uma política de colocação a uma nova instância

Depois de criar a política de colocação, aplique-a a uma ou mais instâncias. As instâncias que compartilham a mesma política são colocadas em relação umas às outras com base em como você definiu a política.

gcloud

Para aplicar uma política de colocação a uma instância, inclua a sinalização --resource-policies ao criar uma nova instância: Para políticas de colocação compactas, inclua --maintenance-policy=TERMINATE --no-restart-on-failure:

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

Substitua:

  • VM_NAME: o nome da nova instância
  • ZONE: a zona em que você quer criar a nova instância. 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 colocação que você quer aplicar a essa instância. É possível aplicar mais de uma política de colocação a uma instância.
  • IMAGE_FAMILY: uma das famílias de imagens disponíveis
  • IMAGE_PROJECT: o projeto de imagem que contém a imagem
  • PROJECT_ID: o código do projeto

API

Para aplicar uma política de colocação a uma instância, inclua a propriedade resourcePolicies ao criar uma nova instância. Para políticas de colocação compactas, inclua "onHostMaintenance": "TERMINATE" e "automaticRestart": false:

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

{
  "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: o código do projeto
  • ZONE: a zona em que você quer criar a nova instância. Essa zona precisa estar na mesma região em que a política de colocação está localizada.
  • VM_NAME: o nome da nova instância
  • MACHINE_TYPE: o tipo de máquina da instância
  • 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 colocação
  • POLICY_NAME: o nome da política de colocação que você quer aplicar a essa instância. É possível aplicar mais de uma política de colocação a uma instância.

A seguir