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.

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.

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Funções exigidas

Para ter as permissões necessárias para criar e aplicar uma política de posicionamento compacto às VMs, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esses papéis predefinidos 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 VMs atuais: compute.instances.addResourcePolicies no projeto
  • Para criar VMs:
    • compute.instances.create no projeto
    • Para usar uma imagem personalizada para criar a VM: compute.images.useReadOnly na imagem
    • Usar um snapshot para criar a VM: compute.snapshots.useReadOnly no snapshot
    • Usar um modelo de instância para criar a VM: compute.instanceTemplates.useReadOnly no modelo de instância
    • Atribuir uma rede legada à VM: compute.networks.use no projeto
    • Especificar um endereço IP estático para a VM: compute.addresses.use no projeto
    • Atribuir um endereço IP externo à VM ao usar uma rede legada: compute.networks.useExternalIp no projeto
    • Especificar uma sub-rede para a VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
    • Atribuir um endereço IP externo à VM ao usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
    • Definir os metadados da instância de VM para a VM: compute.instances.setMetadata no projeto
    • Definir tags para a VM: compute.instances.setTags na VM
    • Definir rótulos para a VM: compute.instances.setLabels na VM
    • Definir uma conta de serviço para a VM usar: compute.instances.setServiceAccount na VM
    • Criar um disco para a VM: compute.disks.create no projeto
    • Anexar um disco atual no modo somente leitura ou de leitura e gravação: compute.disks.use no disco
    • Anexar um disco atual no modo somente leitura: compute.disks.useReadOnly no disco
  • Para criar uma reserva: compute.reservations.create no projeto
  • Para criar um modelo de instância: compute.instanceTemplates.create no projeto
  • Para criar um grupo gerenciado de instâncias (MIG): compute.instanceGroupManagers.create no projeto
  • Para ver os detalhes de uma reserva: compute.instances.get no projeto

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

Criar uma política de colocação de compactação

A menos que você queira aplicar uma política de posicionamento compacto a VMs N2 ou N2D, o Google Cloud recomenda especificar um valor de distância máxima ao criar a política. Para mais informações, consulte Como funcionam as políticas de posicionamento compacto.

Para criar uma política de posicionamento compacto, selecione uma das seguintes opções:

gcloud

  • Para aplicar a política de posicionamento compacto a VMs N2 ou N2D, crie a política usando o Comando gcloud compute resource-policies create group-placement com a flag --collocation=collocated.

    gcloud compute resource-policies create group-placement POLICY_NAME \
        --collocation=collocated \
        --region=REGION
    

    Substitua:

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

    • REGION: a região em que a política de posicionamento será criada.

  • Para aplicar a política de posicionamento compacto a qualquer outra VM com suporte, crie a política usando o Comando gcloud beta compute resource-policies create group-placement com as flags --collocation=collocated e --max-distance.

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

    Substitua:

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

    • 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. Se você quiser aplicar a política de posicionamento compacto a uma reserva, não poderá especificar um valor de 1.

    • REGION: a região em que a política de posicionamento será criada.

REST

  • Para aplicar a política de posicionamento compacto a VMs N2 ou N2D, crie a política fazendo uma solicitação POST ao método resourcePolicies.insert. No corpo da solicitação, inclua o campo collocation e defina-o 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.

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

  • Para aplicar a política de posicionamento compacto a qualquer outra VM com suporte, crie a política fazendo uma solicitação POST para o método beta.resourcePolicies.insert. No corpo da solicitação, inclua o seguinte:

    • O campo collocation definido como COLLOCATED.

    • O campo maxDistance.

    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 de posicionamento.

    • REGION: a região em que a política de posicionamento será criada.

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

    • 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. Se você quiser aplicar a política de posicionamento compacto a uma reserva, não poderá especificar um valor de 1.

Aplicar uma política de posicionamento compacto

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

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

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

Aplicar a política a uma VM

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 vai falhar. Se a VM já especificar uma política de posicionamento e você quiser substituí-la, consulte Substituir uma política de posicionamento em uma VM.

Para aplicar uma política de posicionamento compacto a uma VM, selecione uma das seguintes opções:

gcloud

  1. Pare a VM.

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

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

    Substitua:

    • VM_NAME: o nome de uma VM existente.

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

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

  3. Reinicie a VM.

REST

  1. Pare a VM.

  2. Para aplicar uma política de posicionamento compacto a uma VM, faça uma solicitação POST ao método instances.addResourcePolicies.

    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á 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.

  3. Reinicie a VM.

Aplicar a política ao criar uma VM

Só é possível criar uma VM que especifique uma política de posicionamento compacto na mesma região da política de posicionamento.

Para criar uma VM que especifique uma política de posicionamento compacto, selecione uma das seguintes opções:

gcloud

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

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=MAINTENANCE_POLICY \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Substitua:

  • VM_NAME: o nome da VM a ser criada.

  • MACHINE_TYPE: um tipo de máquina compatível com políticas de posicionamento compacto.

  • MAINTENANCE_POLICY: a política de manutenção do host da VM. Se a política de posicionamento compacto que você especificar usar um valor máximo de distância de 1 ou 2, só será possível especificar TERMINATE. Caso contrário, é possível especificar MIGRATE ou TERMINATE.

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

  • ZONE: a zona em que a instância de VM será criada.

REST

Para criar uma VM que especifique uma política de posicionamento compacto, faça uma solicitação POST ao método instances.insert. No corpo da solicitação, inclua os campos onHostMaintenance e resourcePolicies..

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

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "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 especificar uma zona dentro da região da política de posicionamento compacto.

  • VM_NAME: o nome da VM a ser criada.

  • MACHINE_TYPE: um tipo de máquina compatível com políticas de posicionamento compacto.

  • IMAGE_PROJECT: o projeto de imagem que contém a imagem, por exemplo, debian-cloud. Para mais informações sobre os projetos de imagem com suporte, consulte Imagens públicas.

  • IMAGE: especifique uma destas opções:

    • Uma versão específica da imagem do SO. Por exemplo: debian-12-bookworm-v20240617

    • Uma família de imagens, que precisa ser formatada como family/IMAGE_FAMILY. Especifica a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar family/debian-12, a versão mais recente na família de imagens do Debian 12 será usada. Para mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

  • 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 que você especificar usar um valor máximo de distância de 1 ou 2, só será possível especificar TERMINATE. Caso contrário, é possível especificar MIGRATE ou TERMINATE.

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

Aplicar a política ao criar VMs em massa

Só é possível criar VMs em massa com uma política de posicionamento compacto na mesma região que a política de posicionamento.

Para criar VMs em massa que especifiquem uma política de posicionamento compacto, selecione uma das seguintes opções:

gcloud

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

Por exemplo, para criar VMs em massa em uma única zona e especificar um padrão de nome para as VMs, execute o seguinte comando:

gcloud compute instances bulk create \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=MAINTENANCE_POLICY \
    --name-pattern=NAME_PATTERN \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Substitua:

  • COUNT: o número de VMs a serem criadas, que não podem ser maior que o número máximo permitido de VMs da política de posicionamento compacto especificada.

  • MACHINE_TYPE: um tipo de máquina compatível com políticas de posicionamento compacto.

  • MAINTENANCE_POLICY: a política de manutenção do host da VM. Se a política de posicionamento compacto que você especificar usar um valor máximo de distância de 1 ou 2, só será possível especificar TERMINATE. Caso contrário, é possível especificar MIGRATE ou TERMINATE.

  • NAME_PATTERN: o padrão de nome para as VMs. Para substituir uma sequência de números no nome de uma VM, use uma sequência de caracteres hash (#). Por exemplo, usar vm-# para o padrão de nome gera VMs com nomes que começam com vm-1, vm-2 e continuam até o número de VMs especificado por COUNT.

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

  • ZONE: a zona em que as VMs em massa serão criadas.

REST

Para criar VMs em massa que especifiquem uma política de posicionamento compacto, faça uma solicitação POST para o método instances.bulkInsert. No corpo da solicitação, inclua os campos onHostMaintenance e resourcePolicies..

Por exemplo, para criar VMs em massa em uma única zona e especificar um padrão de nome para elas, faça uma solicitação POST da seguinte maneira:

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

{
  "count": "COUNT",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "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.

  • COUNT: o número de VMs a serem criadas, que não podem ser maior que o número máximo permitido de VMs da política de posicionamento compacto especificada.

  • NAME_PATTERN: o padrão de nome para as VMs. Para substituir uma sequência de números no nome de uma VM, use uma sequência de caracteres hash (#). Por exemplo, usar vm-# para o padrão de nome gera VMs com nomes que começam com vm-1, vm-2 e continuam até o número de VMs especificado por COUNT.

        with names starting with `vm-1`, `vm-2`, and continuing up to the number
    

    de VMs especificadas por COUNT.

  • MACHINE_TYPE: um tipo de máquina compatível com políticas de posicionamento compacto.

  • IMAGE_PROJECT: o projeto de imagem que contém a imagem, por exemplo, debian-cloud. Para mais informações sobre os projetos de imagem com suporte, consulte Imagens públicas.

  • IMAGE: especifique uma destas opções:

    • Uma versão específica da imagem do SO. Por exemplo: debian-12-bookworm-v20240617

    • Uma família de imagens, que precisa ser formatada como family/IMAGE_FAMILY. Especifica a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar family/debian-12, a versão mais recente na família de imagens do Debian 12 será usada. Para mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

  • 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 que você especificar usar um valor máximo de distância de 1 ou 2, só será possível especificar TERMINATE. Caso contrário, é possível especificar MIGRATE ou TERMINATE.

Para mais informações sobre as opções de configuração para criar VMs em massa, consulte Criar VMs em massa.

Aplicar a política ao criar uma reserva

Se você quiser criar uma reserva de projeto único sob demanda que especifique uma política de posicionamento compacto, crie uma reserva especificamente segmentada. Ao criar VMs para consumir a reserva, verifique o seguinte:

  • As VMs precisam especificar a mesma política de posicionamento compacto aplicada à reserva.

  • As VMs precisam visar especificamente a reserva para consumi-la. Para mais informações, consulte Consumir VMs de uma reserva específica.

Para criar uma reserva de projeto único com uma política de posicionamento compacto, selecione um dos seguintes métodos:

Para criar uma reserva de projeto único com uma política de posicionamento compacto, especificando propriedades diretamente, selecione uma das seguintes opções:

gcloud

Para criar uma reserva de projeto único com uma política de posicionamento compacto, especificando propriedades diretamente, use o comando gcloud compute reservations create com flags --require-specific-reservation e --resource-policies=policy.

gcloud compute reservations create RESERVATION_NAME \
    --machine-type=MACHINE_TYPE \
    --require-specific-reservation \
    --resource-policies=policy=POLICY_NAME \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

Substitua:

  • RESERVATION_NAME: o nome da reserva.

  • MACHINE_TYPE: um tipo de máquina compatível com políticas de posicionamento compacto.

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

  • NUMBER_OF_VMS: o número de VMs a serem reservadas, que não podem ser maior que o número máximo permitido de VMs da política de posicionamento compacto especificada.

  • ZONE: a zona em que as VMs serão reservadas. Você só pode reservar VMs em uma zona dentro da região da política de posicionamento compacto especificada.

REST

Para criar uma reserva de projeto único com uma política de posicionamento compacto, especificando propriedades diretamente, faça uma solicitação POST ao método reservations.insert. No corpo da solicitação, inclua o campo resourcePolicies e o campo specificReservationRequired definido como true.

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

{
  "name": "RESERVATION_NAME",
  "resourcePolicies": {
    "policy" : "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  },
  "specificReservation": {
    "count": "NUMBER_OF_VMS",
    "instanceProperties": {
      "machineType": "MACHINE_TYPE",
    }
  },
  "specificReservationRequired": true
}

Substitua:

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

  • ZONE: a zona em que as VMs serão reservadas. Você só pode reservar VMs em uma zona dentro da região da política de posicionamento compacto especificada.

  • RESERVATION_NAME: o nome da reserva.

  • 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.

  • NUMBER_OF_VMS: o número de VMs a serem reservadas, que não podem ser maior que o número máximo permitido de VMs da política de posicionamento compacto especificada.

  • MACHINE_TYPE: um tipo de máquina compatível com políticas de posicionamento compacto.

Para mais informações sobre as opções de configuração para criar reservas de projeto único, consulte Crie uma reserva para um único projeto.

Aplicar a política ao criar um modelo de instância

Se você quiser criar um modelo de instância regional, crie o modelo na mesma região da política de posicionamento compacto. Caso contrário, a criação do modelo de instância falhará.

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

Para criar um modelo de instância que especifique uma política de posicionamento compacto, selecione uma das seguintes opções:

gcloud

Para criar um modelo de instância que especifique uma política de posicionamento compacta, use o comando gcloud compute instance-templates create com as flags --maintenance-policy e --resource-policies.

Por exemplo, para criar um modelo de instância global que especifique uma política de posicionamento compacto, execute o seguinte comando:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=MAINTENANCE_POLICY \
    --resource-policies=POLICY_NAME

Substitua:

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

  • MACHINE_TYPE: um tipo de máquina compatível com políticas de posicionamento compacto.

  • MAINTENANCE_POLICY: a política de manutenção do host da VM. Se a política de posicionamento compacto que você especificar usar um valor máximo de distância de 1 ou 2, só será possível especificar TERMINATE. Caso contrário, é possível especificar MIGRATE ou TERMINATE.

  • 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 um dos seguintes métodos:

No corpo da solicitação, inclua os campos onHostMaintenance e resourcePolicies..

Por exemplo, para criar um modelo de instância global que especifique uma política de posicionamento compacto, faça uma solicitação POST da seguinte maneira:

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"
    ],
    "scheduling": {
      "onHostMaintenance": "MAINTENANCE_POLICY"
    }
  }
}

Substitua:

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

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

  • IMAGE_PROJECT: o projeto de imagem que contém a imagem, por exemplo, debian-cloud. Para mais informações sobre os projetos de imagem com suporte, consulte Imagens públicas.

  • IMAGE: especifique uma destas opções:

    • Uma versão específica da imagem do SO. Por exemplo: debian-12-bookworm-v20240617

    • Uma família de imagens, que precisa ser formatada como family/IMAGE_FAMILY. Especifica a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar family/debian-12, a versão mais recente na família de imagens do Debian 12 será usada. Para mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

  • MACHINE_TYPE: um tipo de máquina compatível com políticas de posicionamento compacto.

  • 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 que você especificar usar um valor máximo de distância de 1 ou 2, só será possível 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 a política a 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:

.

Aplicar a política ao criar um MIG

Só é possível criar VMs que especificam uma política de posicionamento compacto se elas estiverem localizadas na mesma região da política de posicionamento.

Para criar um MIG usando um modelo de instância que especifique uma política de posicionamento compacto, selecione uma das seguintes opções:

gcloud

Para criar um MIG usando um modelo de instância que especifica uma política de posicionamento compacto, use o comando gcloud compute instance-groups managed create.

Por exemplo, para criar um MIG zonal usando um modelo de instância global que especifique uma política de posicionamento compacto, execute o seguinte comando:

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size=SIZE \
    --template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

Substitua:

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

  • SIZE: o tamanho do MIG.

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

  • ZONE: a zona em que o MIG será criado, precisa estar na região em que a política de posicionamento compacto está localizada.

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 a um dos seguintes métodos:

Por exemplo, para criar um MIG zonal usando um modelo de instância global que especifica uma política de posicionamento compacto, faça uma solicitação POST da seguinte maneira:

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

{
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": SIZE,
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
    }
  ]
}

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 estão localizados.

  • ZONE: a zona em que o MIG será criado, precisa estar na região em que a política de posicionamento compacto está localizada.

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

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

  • SIZE: o tamanho do MIG.

Para mais informações sobre as opções de configuração para criar MIGs, consulte Cenários básicos para criar MIGs.

Aplicar a política a um MIG atual

Só é possível aplicar uma política de posicionamento compacto a um MIG se ele estiver localizado na mesma região da política de posicionamento ou, no caso de MIGs zonais, em uma zona na mesma região.

Para atualizar um MIG para usar um modelo de instância que especifique uma política de posicionamento compacto selecione uma das seguintes opções:

gcloud

Para atualizar um MIG para usar 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.

Por exemplo, para atualizar um MIG zonal 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 \
    --version=template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

Substitua:

  • MIG_NAME: o nome de um MIG existente.

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

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

REST

Para atualizar um MIG para usar 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 atuais no MIG, faça uma solicitação PATCH a um dos métodos a seguir:

Por exemplo, para atualizar um MIG zonal para utilizar um modelo de instância global que especifica uma política de posicionamento compacto e substituir as VMs existentes do MIG por novas VMs que especificam as propriedades do modelo, faça a solicitação PATCH a seguir:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
}

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.

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

  • MIG_NAME: o nome de um MIG existente.

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

Para mais informações sobre as opções de configuração para atualizar as VMs em um MIG, consulte Atualizar e aplicar novas configurações a 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.

Para verificar o local físico de uma VM que especifica uma política de posicionamento em relação a outras VMs, selecione uma das seguintes opções:

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)" \
    --zone=ZONE

Substitua:

  • VM_NAME: o nome de uma VM existente.

  • 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 de distância máxima 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 de distância máxima 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 de distância máxima 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 de distância máxima 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