Reduzir a latência usando políticas de posicionamento compacto


Neste documento, explicamos como reduzir a latência de rede entre suas instâncias de máquina virtual (VM) criando e aplicando políticas de posicionamento compacto a elas.

Uma política de posicionamento compacto especifica que as VMs precisam ser colocadas fisicamente mais perto umas das outras. Isso pode ajudar a melhorar o desempenho e reduzir a latência de rede entre as VMs quando, por exemplo, você executa cargas de trabalho de computação de alto desempenho (HPC), machine learning (ML) ou servidor de banco de dados.

É possível aplicar uma política de posicionamento compacto ao:

  • Criar ou atualizar uma VM

  • Criar uma reserva de projeto único

  • Criar um modelo de instância. Em seguida, o modelo de instância aplica a política de posicionamento compacto ao:

    • Criar uma VM

    • Criar ou atualizar um grupo gerenciado de instâncias (MIG)

    • Criar uma reserva de projeto único

Antes de começar

  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. Defina uma região e uma zona padrão.

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

Funções exigidas

Para receber as permissões necessárias para criar e aplicar uma política de posicionamento compacto às VMs, peça ao seu administrador para conceder a você o papel de Administrador da instância do Compute (v1) (roles/compute.instanceAdmin.v1) IAM na VM ou no projeto. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Esse papel predefinido contém as permissões necessárias para criar e aplicar uma política de posicionamento compacto às VMs. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para criar e aplicar uma política de posicionamento compacto às VMs:

  • Para criar políticas de posicionamento: compute.resourcePolicies.create no projeto
  • Para aplicar uma política de posicionamento a uma VM existente: compute.instances.addResourcePolicies no projeto.
  • Para ver os detalhes de uma reserva: compute.instances.get no projeto

Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.

Restrições

Além das restrições gerais das políticas de posicionamento, as políticas de posicionamento compacto também têm as seguintes restrições:

  • Para políticas de posicionamento compacto, é possível usar max-distance (Pré-lançamento) para controlar melhor o distância das VMs. Na tabela a seguir, descrevemos o número compatível de VMs e a política de manutenção do host para cada valor max-distance:

    Valor de max-distance Descrição Número máximo de VMs Política de manutenção de host compatível
    Não especificado Com base na disponibilidade, as VMs são colocadas o mais perto possível uma da outra. 150 Migrar ou encerrar
    3 As VMs são colocadas em clusters adjacentes para baixa latência. 1.500 Migrar ou encerrar
    2 As VMs são colocadas em racks adjacentes e têm uma latência de rede menor do que as VMs colocadas em clusters adjacentes. 150 Encerrar
    1 As VMs são colocadas no mesmo rack e minimizam a latência da rede o máximo possível. 22 Encerrar
  • Só é possível aplicar uma política de posicionamento compacto a séries de máquinas A2, A3, C2, C3, C2D, C3D, G2, H3, N2 e N2D. Se você usar max-distance ao criar uma política de posicionamento compacto, não será possível aplicá-la às séries de máquinas A3, G2, N2 e N2D.

  • Não é possível aplicar políticas de posicionamento compacto a VMs que especificam nós de locatário individual.

  • Se você quiser criar uma política de posicionamento compacto para uma reserva, consulte os requisitos adicionais para reservas.

Criar uma política posicionamento compacto

Para criar uma política de posicionamento compacto, use um dos seguintes métodos:

  • Recomendado: sem uma contagem fixa.

    É possível aplicar uma política de posicionamento compacto que não especifique uma contagem fixa de VMs para um número não especificado de VMs. Isso torna a política de posicionamento compacto eficaz, independente do número de VMs a que você a aplica.

  • Com uma contagem fixa.

    É possível aplicar uma política de posicionamento compacto que especifique uma contagem fixa de VMs apenas a um número exato de VMs. Isso faz com que a política de posicionamento compacto só seja eficaz se for aplicada ao número especificado de VMs.

Sem uma contagem fixa

É possível criar uma política de posicionamento compacto usando a CLI gcloud e a API Compute Engine.

gcloud

Para criar uma política de posicionamento compacto, use o comando gcloud compute resource-policies create group-placement com o flag --collocation=COLLOCATED.

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

Substitua:

  • POLICY_NAME: o nome da política a ser criada.

  • PROJECT_ID: o ID do projeto em que você quer criar a política de posicionamento.

  • REGION: a região em que a política será criada. Se você quiser aplicar a política de posicionamento compacto às VMs existentes, crie a política em uma região que contenha a zona em que as VMs estão localizadas.

Como opção, para melhor controle sobre a distância que separa as VMs quando há requisitos rigorosos de latência de rede, crie uma política de posicionamento compacto usando o comando gcloud beta compute resource-policies create group-placement com os flags --collocation=COLLOCATED e --max-distance.

gcloud beta compute resource-policies create group-placement POLICY_NAME \
    --collocation=COLLOCATED \
    --max-distance=MAX_DISTANCE \
    --project=PROJECT_ID \
    --region=REGION

Substitua:

  • POLICY_NAME: o nome da política de posicionamento compacto a ser criada.

  • MAX_DISTANCE: a configuração da distância máxima para suas VMs. O valor precisa estar entre 1, que especifica a colocação das VMs no mesmo rack e ter a menor latência de rede possível, e 3, que especifica a colocação das VMs em clusters. Dependendo do tipo de máquina e da zona especificados nas VMs em que você aplica uma política de posicionamento compacto:

    • Se uma zona tiver capacidade disponível, uma política de posicionamento compacto com um valor max-distance mais alto (como 3) talvez faça com que as VMs sejam colocadas mais perto umas das outras.

    • Se uma zona não tiver capacidade, uma política de posicionamento compacto com um valor max-distance menor (como 1) aumentará a probabilidade de falha ao aplicar a política a uma ou mais das VMs.

  • PROJECT_ID: o ID do projeto em que você quer criar a política de posicionamento.

  • REGION: a região em que você quer criar a política.

REST

Para criar uma política de posicionamento compacto, faça uma solicitação POST ao método resourcePolicies.insert com o campo collocation definido como COLLOCATED.

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

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

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar a política de posicionamento.

  • REGION: a região em que a política de posicionamento será criada. Se você quiser aplicar a política de posicionamento compacto às VMs existentes, crie a política em uma região que contenha a zona em que as VMs estão localizadas.

  • POLICY_NAME: o nome da política de posicionamento compacto a ser criada.

Como opção, para melhor controle sobre a distância que as VMs são colocadas quando há requisitos rigorosos de latência de rede, crie uma política de posicionamento compacto fazendo uma solicitação POST ao beta.resourcePolicies.insert com o campo collocation definido como COLLOCATED e o campo max-distance.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/resourcePolicies

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "collocation": "COLLOCATED",
    "maxDistance": "MAX_DISTANCE"
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar a política.

  • REGION: a região em que você quer criar a política.

  • POLICY_NAME: o nome da política de posicionamento compacto a ser criada.

  • MAX_DISTANCE: a configuração da distância máxima para suas VMs. O valor precisa estar entre 1, que especifica a colocação das VMs no mesmo rack e ter a menor latência de rede possível, e 3, que especifica a colocação das VMs em clusters. Dependendo do tipo de máquina e da zona especificados nas VMs em que você aplica uma política de posicionamento compacto:

    • Se uma zona tiver capacidade disponível, uma política de posicionamento compacto com um valor max-distance mais alto (como 3) talvez faça com que as VMs sejam colocadas mais perto umas das outras.

    • Se uma zona não tiver capacidade, uma política de posicionamento compacto com um valor max-distance menor (como 1) aumentará a probabilidade de falha ao aplicar a política a uma ou mais das VMs.

Com uma contagem fixa

É possível criar uma política de posicionamento compacto que especifique uma contagem fixa de VMs usando a gcloud CLI e a API Compute Engine.

gcloud

Para criar uma política de posicionamento compacto que especifique uma contagem fixa de VMs, use o comando gcloud compute resource-policies create group-placement com as sinalizações --collocation=COLLOCATED e --vm-count.

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

Substitua:

  • POLICY_NAME: o nome da política a ser criada.

  • PROJECT_ID: o ID do projeto em que você quer criar a política de posicionamento.

  • REGION: a região em que a política será criada. Se você quiser aplicar a política de posicionamento compacto às VMs existentes, crie a política em uma região que contenha a zona em que as VMs estão localizadas.

  • VM_COUNT: o número exato de VMs a que você pode aplicar a política de posicionamento compacto. O valor precisa estar entre 1 e 150, que é o número máximo de VMs a que uma política de posicionamento compacto pode ser aplicada.

Como opção, para melhor controle sobre a distância que separa as VMs quando há requisitos rigorosos de latência de rede, crie uma política de posicionamento compacto usando o comando gcloud beta compute resource-policies create group-placement com os flags --collocation=COLLOCATED, --max-distance e --vm-count.

gcloud beta compute resource-policies create group-placement POLICY_NAME \
    --collocation=COLLOCATED \
    --max-distance=MAX_DISTANCE \
    --project=PROJECT_ID \
    --region=REGION \
    --vm-count=VM_COUNT

Substitua:

  • POLICY_NAME: o nome da política de posicionamento compacto a ser criada.

  • MAX_DISTANCE: a configuração da distância máxima para suas VMs. O valor precisa estar entre 1, que especifica a colocação das VMs no mesmo rack e ter a menor latência de rede possível, e 3, que especifica a colocação das VMs em clusters. Dependendo do tipo de máquina e da zona especificados nas VMs em que você aplica uma política de posicionamento compacto:

    • Se uma zona tiver capacidade disponível, uma política de posicionamento compacto com um valor max-distance mais alto (como 3) talvez faça com que as VMs sejam colocadas mais perto umas das outras.

    • Se uma zona não tiver capacidade, uma política de posicionamento compacto com um valor max-distance menor (como 1) aumentará a probabilidade de falha ao aplicar a política a uma ou mais das VMs.

  • PROJECT_ID: o ID do projeto em que você quer criar a política de posicionamento.

  • REGION: a região em que você quer criar a política.

  • VM_COUNT: o número exato de VMs a que você pode aplicar a política de posicionamento compacto. O valor precisa estar entre 1 e o número máximo de VMs a que é possível aplicar a política de posicionamento com base no valor MAX_DISTANCE especificado.

REST

Para criar uma política de posicionamento compacto que especifique uma contagem fixa de VMs, faça uma solicitação POST para o método resourcePolicies.insert com o collocation definido como COLLOCATED e o campo vmCount.

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

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

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar a política de posicionamento.

  • REGION: a região em que a política de posicionamento será criada. Se você quiser aplicar a política de posicionamento compacto às VMs existentes, crie a política em uma região que contenha a zona em que as VMs estão localizadas.

  • POLICY_NAME: o nome da política de posicionamento compacto a ser criada.

  • VM_COUNT: o número exato de VMs a que você pode aplicar a política de posicionamento compacto. O valor precisa estar entre 1 e 150, que é o número máximo de VMs a que uma política de posicionamento compacto pode ser aplicada.

Como opção, para melhor controle sobre a distância que separa as VMs quando há requisitos rigorosos de latência de rede, crie uma política de posicionamento compacto fazendo uma solicitação POST ao método beta.resourcePolicies.insert com o campo collocation definido como COLLOCATED e os campos max-distance e vmCount.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/resourcePolicies

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

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar a política.

  • REGION: a região em que você quer criar a política.

  • POLICY_NAME: o nome da política de posicionamento compacto a ser criada.

  • MAX_DISTANCE: a configuração da distância máxima para suas VMs. O valor precisa estar entre 1, que especifica a colocação das VMs no mesmo rack e ter a menor latência de rede possível, e 3, que especifica a colocação das VMs em clusters. Dependendo do tipo de máquina e da zona especificados nas VMs em que você aplica uma política de posicionamento compacto:

    • Se uma zona tiver capacidade disponível, uma política de posicionamento compacto com um valor max-distance mais alto (como 3) talvez faça com que as VMs sejam colocadas mais perto umas das outras.

    • Se uma zona não tiver capacidade, uma política de posicionamento compacto com um valor max-distance menor (como 1) aumentará a probabilidade de falha ao aplicar a política a uma ou mais das VMs.

  • VM_COUNT: o número exato de VMs a que você pode aplicar a política de posicionamento compacto. O valor precisa estar entre 1 e o número máximo de VMs a que é possível aplicar a política de posicionamento com base no valor MAX_DISTANCE especificado.

Aplicar políticas de posicionamento compacto

É possível aplicar uma política de posicionamento compacto a uma VM existente ou ao criar VMs, modelos de instância, MIGs ou reservas de VMs.

Para criar um recurso do Compute Engine que especifique uma política de posicionamento compacto, selecione um dos seguintes métodos:

Se você quiser especificar uma política de posicionamento compacto ao criar uma reserva de projeto único especificando as propriedades diretamente, consulte Criar uma reserva para um único projeto.

Depois que uma política de posicionamento compacto for aplicada a uma VM, será possível verificar o local físico de uma VM em relação a outras VMs que especificam a mesma política.

Aplicar uma política de posicionamento compacto a uma VM existente

É possível aplicar uma política de posicionamento compacto a uma VM existente usando a gcloud CLI e a API Compute Engine.

Antes de aplicar uma política de posicionamento compacto a uma VM existente, verifique o seguinte:

Caso contrário, a aplicação da política de posicionamento compacto a uma VM existente vai falhar.

gcloud

Para aplicar uma política de posicionamento compacto a uma VM existente, use o comando gcloud compute instances add-resource-policies com o flag --resource-policies.

gcloud compute instances add-resource-policies VM_NAME \
    --project=PROJECT_ID \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Substitua:

  • VM_NAME: o nome de uma VM existente.

  • PROJECT_ID: o ID do projeto em que a política de posicionamento compacto e a VM estão localizadas.

  • POLICY_NAME: o nome de uma política de posicionamento compacto existente.

  • ZONE: a zona em que a VM está localizada.

REST

Para aplicar uma política de posicionamento compacto a uma VM existente, faça uma solicitação POST ao método instances.addResourcePolicies com o 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"
  ]
}

Substitua:

  • PROJECT_ID: o ID do projeto em que a política de posicionamento compacto e a VM estão localizadas.

  • ZONE: a zona em que a VM está, que precisa estar dentro da região onde a política de posicionamento compacto está localizada.

  • VM_NAME: o nome de uma VM existente.

  • REGION: a região em que a política de posicionamento compacto está localizada.

  • POLICY_NAME: o nome de uma política de posicionamento compacto existente.

Criar uma VM que especifique uma política de posicionamento compacto.

É possível criar uma VM que especifique uma política de posicionamento compacto existente usando a gcloud CLI e a API Compute Engine.

gcloud

Para criar uma VM que especifique uma política de posicionamento compacto, use o comando gcloud compute instances create com o flag --resource-policies.

Por exemplo, para criar uma VM que especifique um tipo de máquina c2d-standard-2, execute o seguinte comando:

gcloud compute instances create VM_NAME \
    --machine-type=c2d-standard-2 \
    --maintenance-policy=MAINTENANCE_POLICY \
    --project=PROJECT_ID \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Substitua:

  • VM_NAME: o nome da VM a ser criada.

  • MAINTENANCE_POLICY: a política de manutenção do host da VM. Se a política de posicionamento compacto especificada usar um valor max-distance de 1 ou 2, você só poderá especificar TERMINATE. Caso contrário, é possível especificar MIGRATE ou TERMINATE.

  • PROJECT_ID: o ID do projeto em que a política de posicionamento compacto está localizada.

  • POLICY_NAME: o nome de uma política de posicionamento compacto existente.

  • ZONE: a zona em que a VM será criada. Só é possível criar uma VM em uma zona que esteja dentro da região da política de posicionamento compacto especificada.

REST

Para criar uma VM que especifique uma política de posicionamento compacto, faça uma solicitação POST para o método instances.insert com o campo resourcePolicies.

Por exemplo, para criar uma VM que especifique um tipo de máquina c2d-standard-2, faça a seguinte solicitação POST:

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

{
  "machineType": "zones/ZONE/machineTypes/c2d-standard-2",
  "name": "VM_NAME",
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ],
  "scheduling": {
    "onHostMaintenance": "MAINTENANCE_POLICY"
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que a política de posicionamento compacto está localizada.

  • ZONE: a zona em que a VM será criada e o tipo de máquina está localizado. Só é possível criar uma VM em uma zona que esteja dentro da região da política de posicionamento compacto especificada.

  • VM_NAME: o nome da VM a ser criada.

  • REGION: a região em que a política de posicionamento compacto está localizada.

  • POLICY_NAME: o nome de uma política de posicionamento compacto existente.

  • MAINTENANCE_POLICY: a política de manutenção do host da VM. Se a política de posicionamento compacto especificada usar um valor max-distance de 1 ou 2, você só poderá especificar TERMINATE. Caso contrário, é possível especificar MIGRATE ou TERMINATE.

Para mais informações sobre as opções de configuração e os papéis do IAM para criar uma VM, consulte Criar e iniciar uma instância de VM.

Criar VMs em massa que especifiquem uma política de posicionamento compacto

É possível criar VMs em massa que especifiquem uma política de posicionamento compacto existente usando a gcloud CLI e a API Compute Engine.

gcloud

Para criar VMs em massa que especifiquem uma política de posicionamento compacto, use o comando gcloud compute instances bulk create com o flag --resource-policies.

Por exemplo, para criar VMs em massa que especifiquem um tipo de máquina c2d-standard-2 e a mesma política de posicionamento compacto, execute o seguinte comando:

gcloud compute instances bulk create \
    --async \
    --count=COUNT \
    --machine-type=c2d-standard-2 \
    --maintenance-policy=MAINTENANCE_POLICY \
    --name-pattern=NAME_PATTERN \
    --project=PROJECT_ID \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Substitua:

  • COUNT: o número de VMs a serem criadas.

  • MAINTENANCE_POLICY: a política de manutenção do host da VM. Se a política de posicionamento compacto especificada usar um valor max-distance de 1 ou 2, você só poderá especificar TERMINATE. Caso contrário, é possível especificar MIGRATE ou TERMINATE.

  • NAME_PATTERN: o padrão de nome das VMs a serem criadas. Use o caractere hash (#) para substituí-lo por uma sequência de números. Por exemplo, especificar vm-# cria VMs com nomes vm-1, vm-2 e assim por diante, até o número de VMs especificado em COUNT.

  • PROJECT_ID: o ID do projeto em que a política de posicionamento compacto está localizada.

  • POLICY_NAME: o nome de uma política de posicionamento compacto existente.

  • ZONE: a zona em que as VMs em massa serão criadas. Só é possível criar VMs em zonas que estejam dentro da região da política de posicionamento compacto que você especificar.

REST

Para criar VMs em massa que especifiquem uma política de posicionamento compacto, crie um POST para o método instances.bulkInsert com o campo resourcePolicies.

Por exemplo, para criar VMs em massa que especifiquem um tipo de máquina c2d-standard-2 e a mesma política de posicionamento compacto, faça a seguinte solicitação POST:

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

{
  "count": "COUNT",
  "machineType": "zones/ZONE/machineTypes/c2d-standard-2",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "resourcePolicies": [
      "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
    ],
    "scheduling": {
      "onHostMaintenance": "MAINTENANCE_POLICY"
    }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que a política de posicionamento compacto está localizada.

  • ZONE: a zona em que as VMs em massa serão criadas e onde o tipo de máquina está localizado. Só é possível criar VMs em zonas que estejam dentro da região da política de posicionamento compacto que você especificar.

  • COUNT: o número de VMs a serem criadas.

  • NAME_PATTERN: o padrão de nome das VMs a serem criadas. Use o caractere hash (#) para substituí-lo por uma sequência de números. Por exemplo, especificar vm-# cria VMs com nomes vm-1, vm-2 e assim por diante, até o número de VMs especificado em COUNT.

  • REGION: a região em que a política de posicionamento compacto está localizada.

  • POLICY_NAME: o nome de uma política de posicionamento compacto existente.

  • MAINTENANCE_POLICY: a política de manutenção do host da VM. Se a política de posicionamento compacto especificada usar um valor max-distance de 1 ou 2, você só poderá especificar TERMINATE. Caso contrário, é possível especificar MIGRATE ou TERMINATE.

Para mais informações sobre as opções de configuração ou os papéis do IAM para criar VMs em massa, consulte Criar VMs em massa.

Criar um modelo de instância que especifique uma política de posicionamento compacto

É possível criar um modelo de instância que especifique uma política de posicionamento compacto existente usando a gcloud CLI e a API Compute Engine.

Depois de criar um modelo de instância, use-o para fazer o seguinte:

gcloud

Para criar um modelo de instância que especifique uma política de posicionamento compacto, use o comando gcloud compute instance-templates create com o flag --resource-policies.

Por exemplo, para criar um modelo de instância que especifique um tipo de máquina c2d-standard-2 e uma política de posicionamento compacto existente, execute o seguinte comando:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=c2d-standard-2 \
    --maintenance-policy=MAINTENANCE_POLICY \
    --project=PROJECT_ID \
    --resource-policies=POLICY_NAME

Substitua:

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.

  • MAINTENANCE_POLICY: a política de manutenção do host da VM. Se a política de posicionamento compacto especificada usar um valor max-distance de 1 ou 2, você só poderá especificar TERMINATE. Caso contrário, é possível especificar MIGRATE ou TERMINATE.

  • PROJECT_ID: o ID do projeto em que está localizada a política de posicionamento compacto que você quer aplicar ao modelo de instância.

  • POLICY_NAME: o nome de uma política de posicionamento compacto existente.

REST

Para criar um modelo de instância que especifique uma política de posicionamento compacto, faça uma solicitação POST para o método instanceTemplates.insert. No corpo da solicitação, especifique o campo resourcePolicies.

Por exemplo, para criar um modelo de instância que especifique um tipo de máquina c2d-standard-2 e uma política de posicionamento compacto existente, execute o seguinte comando POST:

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

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "machineType": "zones/ZONE/machineTypes/c2d-standard-2",
  "properties": {
    "resourcePolicies": {
      "POLICY_NAME"
    },
    "scheduling": {
      "onHostMaintenance": "MAINTENANCE_POLICY"
    }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que está localizada a política de posicionamento compacto que você quer aplicar ao modelo de instância.

  • ZONE: a zona em que o tipo de máquina está localizado.

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.

  • POLICY_NAME: o nome de uma política de posicionamento compacto existente.

  • MAINTENANCE_POLICY: a política de manutenção do host da VM. Se a política de posicionamento compacto especificada usar um valor max-distance de 1 ou 2, você só poderá especificar TERMINATE. Caso contrário, é possível especificar MIGRATE ou TERMINATE.

Para saber mais sobre as opções de configuração para criar um modelo de instância, consulte Criar modelos de instância.

Aplicar uma política de posicionamento compacto às VMs em um MIG

Depois de criar um modelo de instância que especifique uma política de posicionamento compacto, é possível usar o modelo para fazer o seguinte:

Se você quiser aplicar uma política de posicionamento compacto a um MIG, é recomendado criar ou aplicar a política a um MIG regional com a forma de distribuição qualquer zona única. Dessa forma, sempre que um MIG regional precisar ser escalonado horizontalmente criando VMs, ele selecionará a zona em que as VMs serão criadas com base nas suas reservas, cotas e requisitos de hardware.

Criar um MIG que especifique uma política de posicionamento compacto

É possível criar um MIG usando um modelo de instância que especifique uma política de posicionamento compacto usando a gcloud CLI e a API Compute Engine.

gcloud

Para criar um MIG utilizando um modelo de instância que especifique uma política de posicionamento compacto, utilize o comando gcloud compute instance-groups managed create com o flag --template.

Por exemplo, para criar um MIG regional com formato de distribuição de qualquer zona única, execute o seguinte 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

Substitua:

  • MIG_NAME: o nome do MIG que será criado.

  • PROJECT_ID: o ID do projeto em que a política de posicionamento compacto e o modelo de instância que especifica a política de posicionamento estão localizados.

  • REGION: a região em que o MIG será criado, que precisa corresponder à região em que a política de posicionamento compacto está localizada.

  • SIZE: o tamanho do MIG.

  • INSTANCE_TEMPLATE_NAME: o nome de um modelo de instância existente que especifica uma política de posicionamento compacto.

REST

Para criar um MIG usando um modelo de instância que especifique uma política de posicionamento compacto, faça uma solicitação POST aos métodos instanceGroupManagers.insert ou regionInstanceGroupManagers.insert com o campo instanceTemplate definido como o nome do modelo existente.

Por exemplo, para criar um MIG regional com propriedades de VM padrão e o formato de distribuição em qualquer zona única, faça a seguinte solicitação POST:

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

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

Substitua:

  • PROJECT_ID: o ID do projeto em que a política de posicionamento compacto e o modelo de instância que especifica a política de posicionamento estão localizados.

  • REGION: a região em que o MIG será criado, que precisa corresponder à região em que a política de posicionamento compacto está localizada.

  • MIG_NAME: o nome do MIG que será criado.

  • INSTANCE_TEMPLATE_NAME: o nome de um modelo de instância existente que especifica uma política de posicionamento compacto.

  • SIZE: o tamanho do MIG.

Para mais informações sobre as opções de configuração e os papéis do IAM para criar MIGs, consulte Cenários básicos para a criação de MIGs.

Aplicar uma política posicionamento compacto a um MIG existente

É possível aplicar uma política de posicionamento compacto a um MIG existente usando um modelo de instância que especifique a mesma política de posicionamento usando a gcloud CLI e a API Compute Engine.

gcloud

Para atualizar um MIG para utilizar um modelo de instância que especifique uma política de posicionamento compacto, use o comando gcloud compute instance-groups managed rolling-action start-update com o flag --version=template.

Por exemplo, para atualizar um MIG regional para utilizar um modelo de instância que especifique uma política de posicionamento compacto e substituir as VMs atuais do MIG por novas VMs que especifiquem as propriedades do modelo, execute o seguinte comando: :

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

Substitua:

  • MIG_NAME: o nome de um MIG existente.

  • PROJECT_ID: o ID do projeto em que o MIG, a política de posicionamento compacto e o modelo de instância que especifica a política de posicionamento estão localizados.

  • REGION: a região em que o MIG está localizado. Só é possível aplicar a política de posicionamento compacto a um MIG que esteja na mesma região.

  • INSTANCE_TEMPLATE_NAME: o nome de um modelo de instância existente que especifica uma política de posicionamento compacto.

REST

Para atualizar um MIG para utilizar um modelo de instância que especifique uma política de posicionamento compacto e aplicar automaticamente as propriedades do modelo e da política de posicionamento às VMs existentes no MIG, faça uma solicitação PATCH ao instanceGroupManagers.insert ou regionInstanceGroupManagers.insert com o campo instanceTemplate.

Por exemplo, para atualizar um MIG regional para utilizar um modelo de instância que especifique uma política de posicionamento compacto e substituir as VMs existentes do MIG por novas VMs que especifiquem as propriedades do modelo, faça o seguinte: 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"
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que o MIG, a política de posicionamento compacto e o modelo de instância que especifica a política de posicionamento estão localizados.

  • REGION: a região em que o MIG está localizado. Só é possível aplicar a política de posicionamento compacto a um MIG que esteja na mesma região.

  • MIG_NAME: o nome de um MIG existente.

  • INSTANCE_TEMPLATE_NAME: o nome de um modelo de instância existente que especifica uma política de posicionamento compacto.

Para mais informações sobre as opções de configuração e os papéis do IAM para atualizar as VMs em um MIG, consulte Atualizar e aplicar novas configurações às VMs em um MIG.

Verificar o local físico de uma VM

Depois de aplicar uma política de posicionamento compacto a uma VM, será possível ver como ela afetou a localização física em relação a outras VMs que especificam a mesma política. Isso ajuda a determinar se a política de posicionamento compacto foi aplicada corretamente a uma VM e mapear quais VMs estão mais próximas umas das outras.

É possível verificar a localização física de uma VM que especifica uma política de posicionamento usando a gcloud CLI e a API Compute Engine.

gcloud

Para visualizar o local físico de uma VM que especifica uma política de posicionamento compacto, use o comando gcloud compute instances describe com o flag --format.

gcloud compute instances describe VM_NAME \
    --format="table[box,title=VM-Position](resourcePolicies.scope():sort=1,resourceStatus.physicalHost:label=location)" \
    --project=PROJECT_ID \
    --zone=ZONE

Substitua:

  • VM_NAME: o nome de uma VM existente.

  • PROJECT_ID: o ID do projeto em que a VM está localizada.

  • ZONE: a zona em que a VM está localizada.

O resultado será assim:

VM-Position

RESOURCE_POLICIES: us-central1/resourcePolicies/example-policy']
PHYSICAL_HOST: /CCCCCCC/BBBBBB/AAAA

O valor do campo PHYSICAL_HOST é composto de três partes. Cada parte representa o cluster, o rack e o host em que a VM está localizada.

Ao comparar a posição de duas VMs que especificam a mesma política de posicionamento compacto, quanto mais partes no campo PHYSICAL_HOST as VMs compartilharem, mais próximas elas estarão uma da outra. Por exemplo, se duas VMs especificarem um dos seguintes valores de amostra para o campo PHYSICAL_HOST:

  • /CCCCCCC/xxxxxx/xxxx: as duas VMs são colocadas no mesmo cluster, o que equivale a um valor max-distance de 2. As VMs colocadas no mesmo cluster têm baixa latência de rede.

  • /CCCCCCC/BBBBBB/xxxx: as duas VMs são colocadas no mesmo rack, o que equivale a um valor max-distance de 1. As VMs colocadas no mesmo rack têm uma latência de rede menor do que as VMs colocadas no mesmo cluster.

  • /CCCCCCC/BBBBBB/AAAA: as duas VMs compartilham o mesmo host. As VMs colocadas no mesmo host minimizam a latência de rede o máximo possível.

REST

Para visualizar o local físico de uma VM que especifica uma política de posicionamento compacto, faça uma solicitação GET para o método instances.get.

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

Substitua:

  • PROJECT_ID: o ID do projeto em que a VM está localizada.

  • ZONE: a zona em que a VM está localizada.

  • VM_NAME: o nome de uma VM existente que especifica uma política de posicionamento.

O resultado será assim:

{
...
"resourcePolicies": [
  "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/resourcePolicies/example-policy"
],
"resourceStatus": {
  "physicalHost": "/xxxxxxxx/xxxxxx/xxxxx"
},
...
}

O valor do campo physicalHost é composto de três partes. Cada parte representa o cluster, o rack e o host em que a VM está localizada.

Ao comparar a posição de duas VMs que especificam a mesma política de posicionamento compacto, quanto mais partes no campo physicalHost as VMs compartilharem, mais próximas elas estarão uma da outra. Por exemplo, se duas VMs especificarem um dos seguintes valores de amostra para o campo physicalHost:

  • /CCCCCCC/xxxxxx/xxxx: as duas VMs são colocadas no mesmo cluster, o que equivale a um valor max-distance de 2. As VMs colocadas no mesmo cluster têm baixa latência de rede.

  • /CCCCCCC/BBBBBB/xxxx: as duas VMs são colocadas no mesmo rack, o que equivale a um valor max-distance de 1. As VMs colocadas no mesmo rack têm uma latência de rede menor do que as VMs colocadas no mesmo cluster.

  • /CCCCCCC/BBBBBB/AAAA: as duas VMs compartilham o mesmo host. As VMs colocadas no mesmo host minimizam a latência de rede o máximo possível.

A seguir