Reduza a latência usando políticas de posicionamento compactas

Este documento descreve como reduzir a latência da rede entre as suas instâncias do Compute Engine criando e aplicando políticas de posicionamento compactas às mesmas. Para saber mais sobre as políticas de posicionamento, incluindo as respetivas séries de máquinas suportadas, restrições e preços, consulte o artigo Vista geral das políticas de posicionamento.

Uma política de posicionamento compacta especifica que as suas instâncias devem ser posicionadas fisicamente mais próximas umas das outras. Isto pode ajudar a melhorar o desempenho e reduzir a latência da rede entre as suas instâncias quando, por exemplo, executa cargas de trabalho de computação de alto desempenho (HPC), aprendizagem automática (ML) ou servidor de base de dados.

Antes de começar

  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

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

    gcloud

    1. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

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

Funções necessárias

Para receber as autorizações de que precisa para criar e aplicar uma política de posicionamento compacto a instâncias de computação, peça ao seu administrador para lhe conceder as seguintes funções de IAM no seu projeto:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Estas funções predefinidas contêm as autorizações necessárias para criar e aplicar uma política de posicionamento compacta a instâncias de computação. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

As seguintes autorizações são necessárias para criar e aplicar uma política de posicionamento compacto a instâncias de computação:

  • Para criar políticas de posicionamento: compute.resourcePolicies.create no projeto
  • Para aplicar uma política de posicionamento a instâncias existentes: compute.instances.addResourcePolicies no projeto
  • Para criar instâncias:
    • compute.instances.create no projeto
    • Para usar uma imagem personalizada para criar a VM: compute.images.useReadOnly na imagem
    • Para usar um instantâneo para criar a VM: compute.snapshots.useReadOnly no instantâneo
    • Para usar um modelo de instância para criar a VM: compute.instanceTemplates.useReadOnly no modelo de instância
    • Para atribuir uma rede antiga à VM: compute.networks.use no projeto
    • Para especificar um endereço IP estático para a VM: compute.addresses.use no projeto
    • Para atribuir um endereço IP externo à VM quando usar uma rede antiga: compute.networks.useExternalIp no projeto
    • Para especificar uma sub-rede para a VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
    • Para atribuir um endereço IP externo à VM quando usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
    • Para definir os metadados da instância de VM para a VM: compute.instances.setMetadata no projeto
    • Para definir etiquetas para a VM: compute.instances.setTags na VM
    • Para definir etiquetas para a VM: compute.instances.setLabels na VM
    • Para definir uma conta de serviço para a VM usar: compute.instances.setServiceAccount na VM
    • Para criar um novo disco para a VM: compute.disks.create no projeto
    • Para anexar um disco existente no modo de leitura ou leitura/escrita: compute.disks.use no disco
    • Para anexar um disco existente no modo de 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 de instâncias geridas (MIG): compute.instanceGroupManagers.create no projeto
  • Para ver os detalhes de uma instância: compute.instances.get no projeto

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Crie uma política de posicionamento compacta

Antes de criar uma política de posicionamento compacta, considere o seguinte:

  • Se quiser aplicar uma política de posicionamento compacta a uma instância de computação que não seja N2 ou N2D, recomendamos que especifique um valor de distância máximo.

  • Só pode aplicar políticas de posicionamento compactas a instâncias A4 ou A3 Ultra implementadas através das funcionalidades fornecidas pelo Cluster Director. Para mais informações, consulte o artigo Cluster Director na documentação do AI Hypercomputer.

  • Por predefinição, não pode aplicar políticas de posicionamento compactas com um valor de distância máxima a instâncias A3 Mega, A3 High ou A3 Edge. Para pedir acesso a esta funcionalidade, contacte o seu gestor de contas técnicas (TAM) atribuído ou a equipa de vendas.

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

gcloud

  • Para aplicar a política de posicionamento compacto a instâncias N2 ou N2D, crie a política através do 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 o seguinte:

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

    • REGION: a região na qual criar a política de posicionamento.

  • Para aplicar a política de posicionamento compacto a quaisquer outras instâncias suportadas, crie a política através do 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 o seguinte:

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

    • MAX_DISTANCE: a configuração de distância máxima para as suas instâncias. O valor tem de estar entre 1, que especifica que as instâncias devem ser colocadas no mesmo rack para ter a latência de rede mais baixa possível, e 3, que especifica que as instâncias devem ser colocadas em clusters adjacentes. Se quiser aplicar a política de posicionamento compacto a uma reserva ou a uma instância Ultra A4 ou A3, não pode especificar um valor de 1.

    • REGION: a região na qual criar a política de posicionamento.

REST

  • Para aplicar a política de posicionamento compacto a instâncias N2 ou N2D, crie a política fazendo um pedido POST ao método resourcePolicies.insert. No corpo do pedido, 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 o seguinte:

    • PROJECT_ID: o ID do projeto onde quer criar a política de posicionamento.

    • REGION: a região na qual criar a política de posicionamento.

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

  • Para aplicar a política de posicionamento compacto a quaisquer outras instâncias suportadas, crie a política fazendo um pedido POST ao método beta.resourcePolicies.insert. No corpo do pedido, inclua o seguinte:

    • O campo collocation está 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 o seguinte:

    • PROJECT_ID: o ID do projeto onde quer criar a política de posicionamento.

    • REGION: a região na qual criar a política de posicionamento.

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

    • MAX_DISTANCE: a configuração de distância máxima para as suas instâncias. O valor tem de estar entre 1, que especifica que as instâncias devem ser colocadas no mesmo rack para ter a latência de rede mais baixa possível, e 3, que especifica que as instâncias devem ser colocadas em clusters adjacentes. Se quiser aplicar a política de posicionamento compacto a uma reserva ou a uma instância Ultra A4 ou A3, não pode especificar um valor de 1.

Aplique uma política de posicionamento compacta

Pode aplicar uma política de posicionamento compacto a uma instância de computação existente ou a um grupo de instâncias geridas (MIG), ou quando cria instâncias, modelos de instâncias, MIGs ou reservas de instâncias.

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 compacta a uma instância, pode validar a localização física da instância em relação a outras instâncias que especifiquem a mesma política de posicionamento.

Aplique a política a uma instância existente

Antes de aplicar uma política de posicionamento compacto a uma instância de computação existente, certifique-se do seguinte:

Caso contrário, a aplicação da política de posicionamento compacto à instância falha. Se a instância já especificar uma política de posicionamento e quiser substituí-la, consulte Substitua uma política de posicionamento numa instância.

Para aplicar uma política de posicionamento compacta a uma instância existente, selecione uma das seguintes opções:

gcloud

  1. Pare a instância.

  2. Para aplicar uma política de posicionamento compacta a uma instância existente, use o comando gcloud compute instances add-resource-policies.

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

    Substitua o seguinte:

    • INSTANCE_NAME: o nome de uma instância existente.

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

    • ZONE: a zona onde a instância está localizada.

  3. Reinicie a instância.

REST

  1. Pare a instância.

  2. Para aplicar uma política de posicionamento compacta a uma instância existente, faça um pedido POST ao método instances.addResourcePolicies.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/addResourcePolicies
    
    {
      "resourcePolicies": [
        "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
      ]
    }
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto onde se encontram a política de posicionamento compacta e a instância.

    • ZONE: a zona onde a instância está localizada.

    • INSTANCE_NAME: o nome de uma instância existente.

    • REGION: a região onde se encontra a política de posicionamento compacto.

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

  3. Reinicie a instância.

Aplique a política ao criar uma instância

Só pode criar uma instância de computação que especifique uma política de posicionamento compacta na mesma região que a política de posicionamento.

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

gcloud

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

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

Substitua o seguinte:

  • INSTANCE_NAME: o nome da instância a criar.

  • MACHINE_TYPE: um tipo de máquina suportado para políticas de posicionamento compactas.

  • MAINTENANCE_POLICY: a política de manutenção do anfitrião da instância. Se a política de posicionamento compacta que especificar usar um valor de distância máximo de 1 ou 2, ou o tipo de máquina escolhido não suportar a migração em direto, só pode especificar TERMINATE. Caso contrário, pode especificar MIGRATE ou TERMINATE.

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

  • ZONE: a zona na qual criar a instância.

REST

Para criar uma instância que especifique uma política de posicionamento compacta, faça um pedido POST ao método instances.insert. No corpo do pedido, inclua os campos onHostMaintenance e resourcePolicies

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

{
  "name": "INSTANCE_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 o seguinte:

  • PROJECT_ID: o ID do projeto onde se encontra a política de posicionamento compacta.

  • ZONE: a zona onde criar a instância e onde o tipo de máquina está localizado. Só pode especificar uma zona na região da política de posicionamento compacto.

  • INSTANCE_NAME: o nome da instância a criar.

  • MACHINE_TYPE: um tipo de máquina suportado para políticas de posicionamento compactas.

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

  • IMAGE: especifique uma das seguintes opções:

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

    • Uma família de imagens, que tem de estar formatada como family/IMAGE_FAMILY. Isto especifica a imagem do SO não descontinuada mais recente. Por exemplo, se especificar family/debian-12, é usada a versão mais recente na família de imagens do Debian 12. Para mais informações sobre a utilização de famílias de imagens, consulte o artigo Práticas recomendadas para famílias de imagens.

  • REGION: a região onde se encontra a política de posicionamento compacto.

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

  • MAINTENANCE_POLICY: a política de manutenção do anfitrião da instância. Se a política de posicionamento compacta que especificar usar um valor de distância máximo de 1 ou 2, ou o tipo de máquina escolhido não suportar a migração em direto, só pode especificar TERMINATE. Caso contrário, pode especificar MIGRATE ou TERMINATE.

Para mais informações sobre as opções de configuração para criar uma instância, consulte o artigo Crie e inicie uma instância.

Aplique a política ao criar instâncias em massa

Só pode criar instâncias de computação em massa com uma política de posicionamento compacta na mesma região que a política de posicionamento.

Para criar instâncias em massa que especifiquem uma política de posicionamento compacta, selecione uma das seguintes opções:

gcloud

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

Por exemplo, para criar instâncias em massa numa única zona e especificar um padrão de nome para as instâncias, 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 o seguinte:

  • COUNT: o número de instâncias a criar, que não pode ser superior ao número máximo de instâncias suportadas da política de posicionamento compacta especificada.

  • MACHINE_TYPE: um tipo de máquina suportado para políticas de posicionamento compactas.

  • MAINTENANCE_POLICY: a política de manutenção do anfitrião da instância. Se a política de posicionamento compacta que especificar usar um valor de distância máximo de 1 ou 2, ou o tipo de máquina escolhido não suportar a migração em direto, só pode especificar TERMINATE. Caso contrário, pode especificar MIGRATE ou TERMINATE.

  • NAME_PATTERN: o padrão de nome para as instâncias. Para substituir uma sequência de números num nome de instância, use uma sequência de carateres de cardinal (#). Por exemplo, usar vm-# para o padrão de nome gera instâncias com nomes que começam por vm-1, vm-2 e continuam até ao número de instâncias especificado por COUNT.

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

  • ZONE: a zona na qual criar as instâncias em massa.

REST

Para criar instâncias em massa que especifiquem uma política de posicionamento compacta, faça um pedido POST ao método instances.bulkInsert. No corpo do pedido, inclua os campos onHostMaintenance e resourcePolicies

Por exemplo, para criar instâncias em massa numa única zona e especificar um padrão de nome para as instâncias, faça um pedido POST da seguinte forma:

POST https://compute.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 o seguinte:

  • PROJECT_ID: o ID do projeto onde se encontra a política de posicionamento compacta.

  • ZONE: a zona na qual criar as instâncias em massa.

  • COUNT: o número de instâncias a criar, que não pode ser superior ao número máximo suportado de instâncias da política de posicionamento compacto especificada.

  • NAME_PATTERN: o padrão de nome para as instâncias. Para substituir uma sequência de números num nome de instância, use uma sequência de carateres de cardinal (#). Por exemplo, usar vm-# para o padrão de nome gera instâncias com nomes que começam por vm-1, vm-2 e continuam até ao número de instâncias especificado por COUNT.

  • MACHINE_TYPE: um tipo de máquina suportado para políticas de posicionamento compactas.

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

  • IMAGE: especifique uma das seguintes opções:

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

    • Uma família de imagens, que tem de estar formatada como family/IMAGE_FAMILY. Isto especifica a imagem do SO não descontinuada mais recente. Por exemplo, se especificar family/debian-12, é usada a versão mais recente na família de imagens do Debian 12. Para mais informações sobre a utilização de famílias de imagens, consulte o artigo Práticas recomendadas para famílias de imagens.

  • REGION: a região onde se encontra a política de posicionamento compacto.

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

  • MAINTENANCE_POLICY: a política de manutenção do anfitrião da instância. Se a política de posicionamento compacta que especificar usar um valor de distância máximo de 1 ou 2, ou o tipo de máquina escolhido não suportar a migração em direto, só pode especificar TERMINATE. Caso contrário, pode especificar MIGRATE ou TERMINATE.

Para mais informações sobre as opções de configuração para criar instâncias em massa, consulte o artigo Crie instâncias em massa.

Aplique a política durante a criação de uma reserva

Se quiser criar uma reserva de projeto único a pedido que especifique uma política de posicionamento compacta, tem de criar uma reserva especificamente segmentada. Quando criar instâncias para consumir a reserva, certifique-se do seguinte:

  • As instâncias têm de especificar a mesma política de posicionamento compacta aplicada à reserva.

  • As instâncias têm de segmentar especificamente a reserva para a consumir. Para mais informações, consulte o artigo Consuma instâncias de uma reserva específica.

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

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

gcloud

Para criar uma reserva de projeto único com uma política de posicionamento compacta especificando propriedades diretamente, use o comando gcloud compute reservations create com as 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_INSTANCES \
    --zone=ZONE

Substitua o seguinte:

  • RESERVATION_NAME: o nome da reserva.

  • MACHINE_TYPE: um tipo de máquina suportado para políticas de posicionamento compactas.

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

  • NUMBER_OF_INSTANCES: o número de instâncias a reservar, que não pode ser superior ao número máximo de instâncias suportado da política de posicionamento compacta especificada.

  • ZONE: a zona na qual reservar instâncias. Só pode reservar instâncias numa zona na região da política de posicionamento compacto especificada.

REST

Para criar uma reserva de projeto único com uma política de posicionamento compacta, especificando as propriedades diretamente, faça um pedido POST ao método reservations.insert. No corpo do pedido, 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_INSTANCES",
    "instanceProperties": {
      "machineType": "MACHINE_TYPE",
    }
  },
  "specificReservationRequired": true
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde se encontra a política de posicionamento compacta.

  • ZONE: a zona na qual reservar instâncias. Só pode reservar instâncias numa zona na região da política de posicionamento compacto especificada.

  • RESERVATION_NAME: o nome da reserva.

  • REGION: a região onde se encontra a política de posicionamento compacto.

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

  • NUMBER_OF_INSTANCES: o número de instâncias a reservar, que não pode ser superior ao número máximo de instâncias suportado da política de posicionamento compacta especificada.

  • MACHINE_TYPE: um tipo de máquina suportado para políticas de posicionamento compactas.

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

Aplique a política durante a criação de um modelo de instância

Se quiser criar um modelo de instância regional, tem de criar o modelo na mesma região que a política de posicionamento compacta. Caso contrário, a criação do modelo de instância falha.

Depois de criar um modelo de instância que especifica uma política de posicionamento compacta, pode usar o modelo para fazer o seguinte:

Para criar um modelo de instância que especifique uma política de posicionamento compacta, 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 compacta, 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 o seguinte:

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

  • MACHINE_TYPE: um tipo de máquina suportado para políticas de posicionamento compactas.

  • MAINTENANCE_POLICY: a política de manutenção do anfitrião da instância. Se a política de posicionamento compacta que especificar usar um valor de distância máximo de 1 ou 2, ou o tipo de máquina escolhido não suportar a migração em direto, só pode especificar TERMINATE. Caso contrário, pode especificar MIGRATE ou TERMINATE.

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

REST

Para criar um modelo de instância que especifique uma política de posicionamento compacta, faça um pedido POST a um dos seguintes métodos:

No corpo do pedido, inclua os campos onHostMaintenance e resourcePolicies

Por exemplo, para criar um modelo de instância global que especifique uma política de posicionamento compacta, faça um pedido POST da seguinte forma:

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 o seguinte:

  • PROJECT_ID: o ID do projeto onde se encontra a política de posicionamento compacta.

  • 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 imagens suportados, consulte o artigo Imagens públicas.

  • IMAGE: especifique uma das seguintes opções:

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

    • Uma família de imagens, que tem de estar formatada como family/IMAGE_FAMILY. Isto especifica a imagem do SO não descontinuada mais recente. Por exemplo, se especificar family/debian-12, é usada a versão mais recente na família de imagens do Debian 12. Para mais informações sobre a utilização de famílias de imagens, consulte o artigo Práticas recomendadas para famílias de imagens.

  • MACHINE_TYPE: um tipo de máquina suportado para políticas de posicionamento compactas.

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

  • MAINTENANCE_POLICY: a política de manutenção do anfitrião da instância. Se a política de posicionamento compacta que especificar usar um valor de distância máximo de 1 ou 2, ou o tipo de máquina escolhido não suportar a migração em direto, só pode especificar TERMINATE. Caso contrário, pode especificar MIGRATE ou TERMINATE.

Para mais informações sobre as opções de configuração para criar um modelo de instância, consulte o artigo Crie modelos de instâncias.

Aplique a política a instâncias num MIG

Depois de criar um modelo de instância que especifique uma política de posicionamento compacta, pode usar o modelo para fazer o seguinte:

Aplique a política durante a criação de um MIG

Só pode criar instâncias de computação que especifiquem uma política de posicionamento compacta se as instâncias estiverem localizadas na mesma região que a política de posicionamento.

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

gcloud

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

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

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

Substitua o seguinte:

  • INSTANCE_GROUP_NAME: o nome do MIG a criar.

  • SIZE: o tamanho do MIG.

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

  • ZONE: a zona na qual criar o GIG, que tem de estar na região onde se encontra a política de posicionamento compacto.

REST

Para criar um MIG com um modelo de instância que especifique uma política de posicionamento compacta, faça um pedido POST a um dos seguintes métodos:

Por exemplo, para criar um MIG zonal com um modelo de instância global que especifica uma política de posicionamento compacta, faça um pedido POST da seguinte forma:

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 o seguinte:

  • PROJECT_ID: o ID do projeto onde se encontram a política de posicionamento compacta e o modelo de instância que especifica a política de posicionamento.

  • ZONE: a zona na qual criar o GIG, que tem de estar na região onde se encontra a política de posicionamento compacta.

  • INSTANCE_GROUP_NAME: o nome do MIG a criar.

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

  • SIZE: o tamanho do MIG.

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

Aplique a política a um MIG existente

Só pode aplicar uma política de posicionamento compacta a um GIG existente se o GIG estiver localizado na mesma região que a política de posicionamento ou, para GIGs zonais, numa zona na mesma região que a política de posicionamento.

Para atualizar um MIG de modo a usar um modelo de instância que especifica uma política de posicionamento compacta, selecione uma das seguintes opções:

gcloud

Para atualizar um MIG de modo a usar um modelo de instância que especifica uma política de posicionamento compacta, use o comando gcloud compute instance-groups managed rolling-action start-update.

Por exemplo, para atualizar um MIG zonal para usar um modelo de instância que especifica uma política de posicionamento compacta e substituir as instâncias existentes do MIG por novas instâncias que especificam 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 o seguinte:

  • MIG_NAME: o nome de um MIG existente.

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

  • ZONE: a zona onde o MIG está localizado. Só pode aplicar a política de posicionamento compacta a um MIG localizado na mesma região que a política de posicionamento.

REST

Para atualizar um GIG de modo a usar um modelo de instância que especifica uma política de posicionamento compacta e aplicar automaticamente as propriedades do modelo e da política de posicionamento às instâncias existentes no GIG, faça um pedido a um dos seguintes métodos:PATCH

Por exemplo, para atualizar um MIG zonal de modo a usar um modelo de instância global que especifica uma política de posicionamento compacta e substituir as instâncias existentes do MIG por novas instâncias que especificam as propriedades do modelo, faça o seguinte pedido PATCH:

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

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

Substitua o seguinte:

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

  • ZONE: a zona onde o MIG está localizado. Só pode aplicar a política de posicionamento compacta a um MIG localizado na mesma região que a política de posicionamento.

  • MIG_NAME: o nome de um MIG existente.

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

Para mais informações sobre as opções de configuração para atualizar as instâncias num MIG, consulte o artigo Atualize e aplique novas configurações a instâncias num MIG.

Valide a localização física de uma instância

Depois de aplicar uma política de posicionamento compacto a uma instância de computação, pode ver a localização física da instância em relação a outras instâncias. Esta comparação está limitada a instâncias localizadas no seu projeto e que especificam a mesma política de posicionamento compacto. A visualização da localização física de uma instância ajuda a fazer o seguinte:

  • Confirme se a política foi aplicada com êxito.

  • Identificar as instâncias mais próximas umas das outras.

Para ver a localização física de uma instância em relação a outras instâncias que especificam a mesma política de posicionamento compacto, selecione uma das seguintes opções:

gcloud

Para ver a localização física de uma instância que especifica uma política de posicionamento compacto, use o comando gcloud compute instances describe com a flag --format.

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

Substitua o seguinte:

  • INSTANCE_NAME: o nome de uma instância existente que especifica uma política de posicionamento compacta.

  • ZONE: a zona onde a instância está localizada.

O resultado é semelhante ao seguinte:

VM-Position

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

O valor do campo PHYSICAL_HOST é composto por três partes. Estas partes representam cada uma o cluster, o rack e o anfitrião onde a instância está localizada.

Quando compara a posição de duas instâncias que usam a mesma política de posicionamento compacta no seu projeto, quanto mais partes do campo PHYSICAL_HOST as instâncias partilharem, mais próximas estão fisicamente uma da outra. Por exemplo, suponha que duas instâncias especificam um dos seguintes valores de exemplo para o campo PHYSICAL_HOST:

  • /CCCCCCC/xxxxxx/xxxx: as duas instâncias são colocadas no mesmo cluster, o que equivale a um valor de distância máximo de 2. As instâncias colocadas no mesmo cluster têm uma latência de rede baixa.

  • /CCCCCCC/BBBBBB/xxxx: as duas instâncias são colocadas no mesmo rack, o que equivale a um valor de distância máximo de 1. As instâncias colocadas no mesmo rack têm uma latência de rede inferior à das instâncias colocadas no mesmo cluster.

  • /CCCCCCC/BBBBBB/AAAA: as duas instâncias partilham o mesmo anfitrião. As instâncias colocadas no mesmo anfitrião minimizam a latência da rede o máximo possível.

REST

Para ver a localização física de uma instância que especifica uma política de posicionamento compacta, faça um pedido GET ao método instances.get.

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

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde a instância se encontra.

  • ZONE: a zona onde a instância está localizada.

  • INSTANCE_NAME: o nome de uma instância existente que especifica uma política de posicionamento compacta.

O resultado é semelhante ao seguinte:

{
  ...
  "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 por três partes. Estas partes representam cada uma o cluster, o rack e o anfitrião onde a instância está localizada.

Quando compara a posição de duas instâncias que usam a mesma política de posicionamento compacta no seu projeto, quanto mais partes do campo physicalHost as instâncias partilharem, mais próximas estão fisicamente uma da outra. Por exemplo, suponha que duas instâncias especificam um dos seguintes valores de exemplo para o campo physicalHost:

  • /CCCCCCC/xxxxxx/xxxx: as duas instâncias são colocadas no mesmo cluster, o que equivale a um valor de distância máximo de 2. As instâncias colocadas no mesmo cluster têm uma latência de rede baixa.

  • /CCCCCCC/BBBBBB/xxxx: as duas instâncias são colocadas no mesmo rack, o que equivale a um valor de distância máximo de 1. As instâncias colocadas no mesmo rack têm uma latência de rede inferior à das instâncias colocadas no mesmo cluster.

  • /CCCCCCC/BBBBBB/AAAA: as duas instâncias partilham o mesmo anfitrião. As instâncias colocadas no mesmo anfitrião minimizam a latência da rede o máximo possível.

O que se segue?