Criar e aplicar políticas de posicionamento distribuído às VMs


Este documento descreve como melhorar a confiabilidade das instâncias de máquina virtual (VM) criando e aplicando políticas de posicionamento distribuído a elas.

Uma política de posicionamento difundida especifica que as VMs precisam ser distribuídas em diferentes domínios de disponibilidade. Essa distribuição ajuda a mitigar interrupções específicas do local, como erros de hardware, e é útil ao executar cargas de trabalho distribuídas, replicadas e em grande escala, como o Hadoop Distributed File System (HDFS), Cassandra ou Kafka.

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 distribuído às VMs, peça ao administrador para conceder a você o papel de Administrador da instância do Compute (v1) (roles/compute.instanceAdmin.v1) 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.

Esse papel predefinido contém as permissões necessárias para criar e aplicar uma política de posicionamento expandida à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 expandida à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 um modelo de instância: compute.instanceTemplates.create no projeto
  • Para criar um grupo gerenciado de instâncias (MIG): compute.instanceGroupManagers.create no projeto

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

Criar uma política de canais de distribuição

A menos que você queira testar a aplicação da política de posicionamento distribuído às suas VMs, o Google Cloud recomenda criar políticas de posicionamento distribuído com dois ou mais domínios de disponibilidade. Isso reduz o risco de todas as VMs serem afetadas por um único erro de hardware. Para mais informações, consulte Sobre as políticas de posicionamento distribuído.

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

gcloud

Para criar uma política de posicionamento expandida, use o comando gcloud compute resource-policies create group-placement com a sinalização --availability-domain-count.

gcloud compute resource-policies create group-placement POLICY_NAME \
    --availability-domain-count=DOMAIN_COUNT \
    --region=REGION

Substitua:

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

  • DOMAIN_COUNT: o número distinto de domínios de disponibilidade em que as VMs são colocadas. O valor precisa estar entre 1 e 8.

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

REST

Para criar uma política de posicionamento expandida, faça uma solicitação POST para o método resourcePolicies.insert. No corpo da solicitação, inclua o campo availabilityDomainCount.

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

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "availabilityDomainCount": DOMAIN_COUNT
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que a política de posicionamento será criada.

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

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

  • DOMAIN_COUNT: o número distinto de domínios de disponibilidade em que as VMs são colocadas. O valor precisa estar entre 1 e 8.

Aplicar uma política de canais de distribuição

É possível aplicar uma política de posicionamento expandida a uma VM ou MIG ou ao criar VMs, modelos de instâncias ou MIGs.

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

Depois de aplicar uma política de posicionamento distribuída a uma VM, é possível verificar o domínio de disponibilidade em que a VM está localizada conferindo os detalhes da VM e o valor do campo availabilityDomain.

Aplicar a política a uma VM

Antes de aplicar uma política de posicionamento distribuído a uma VM, considere o seguinte:

  • Se a política de posicionamento distribuído especificar vários domínios de disponibilidade, é possível aplicar a política a uma VM sem interromper a VM. No entanto, talvez a VM precise ser realocada para um domínio de disponibilidade diferente. Durante esse processo, o Compute Engine interrompe ou migra em tempo real a VM com base na política de manutenção do host.

  • A VM e a política de posicionamento de propagação precisam estar na mesma região. Por exemplo, se a política de posicionamento estiver na região us-central1, a VM precisará estar em uma zona em us-central1. Se você precisar migrar uma VM para outra região, consulte Mova uma VM entre zonas ou regiões.

Se você quiser especificar o domínio de disponibilidade em que vai colocar a VM, aplique a política de posicionamento à VM atualizando as propriedades dela. Ao atualizar as propriedades da VM, inclua os campos resourcePolicies e scheduling.availabilityDomain.

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

gcloud

Para aplicar uma política de posicionamento distribuído 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 expandida.

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

REST

Para aplicar uma política de posicionamento distribuído 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 distribuído 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 distribuído está localizada.

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

Aplicar a política ao criar uma VM

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

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

gcloud

Para criar uma VM que especifique uma política de posicionamento expandida, use o comando gcloud compute instances create com a sinalização --resource-policies.

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

Substitua:

  • VM_NAME: o nome da VM a ser criada.

  • MACHINE_TYPE: o tipo de máquina da VM.

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

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

Opcionalmente, para especificar o domínio de disponibilidade em que a VM será criada, inclua a flag --availability-domain.

gcloud compute instances create VM_NAME \
    --availability-domain=DOMAIN_NUMBER \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Substitua DOMAIN_NUMBER pelo número do domínio de disponibilidade onde colocar a VM. O valor precisa estar entre 1 e o número de domínios especificados na política de posicionamento distribuído. Para verificar o número de domínios em uma política de posicionamento distribuído, confira os detalhes da política de posicionamento.

REST

Para criar uma VM que especifique uma política de posicionamento distribuído, faça uma solicitação POST ao método instances.insert. No corpo da solicitação, inclua o campo 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"
  ]
}

Substitua:

  • PROJECT_ID: o ID do projeto em que a política de posicionamento distribuído 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 distribuído.

  • VM_NAME: o nome da VM a ser criada.

  • MACHINE_TYPE: o tipo de máquina da VM.

  • 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 distribuído está localizada.

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

Opcionalmente, para especificar o domínio de disponibilidade em que a VM será criada, inclua a flag availabilityDomain no corpo da solicitação.

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": {
    "availabilityDomain": DOMAIN_NUMBER
  }
}

Substitua DOMAIN_NUMBER pelo número do domínio de disponibilidade onde colocar a VM. O valor precisa estar entre 1 e o número de domínios especificados na política de posicionamento distribuído. Para verificar o número de domínios em uma política de posicionamento distribuído, confira os detalhes da política de posicionamento.

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

Antes de criar VMs em massa que especificam uma política de posicionamento distribuído, verifique o seguinte:

  • Só é possível criar VMs em massa que especificam uma política de posicionamento distribuído na mesma região da política de posicionamento.

  • Ao criar VMs em massa com uma política de posicionamento distribuída, é possível especificar o domínio de disponibilidade em que as VMs serão criadas. Evite criar todas as suas VMs em um só domínio. Caso contrário, você não reduz o risco de um único erro de hardware que afeta todas as VMs.

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

gcloud

Para criar VMs em massa que especifiquem uma política de posicionamento distribuído, use o comando gcloud compute instances bulk create com o flag --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 \
    --name-pattern=NAME_PATTERN \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Substitua:

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

  • MACHINE_TYPE: o tipo de máquina das VMs.

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

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

Opcionalmente, para especificar o domínio de disponibilidade em que as VMs serão criadas em massa, inclua a flag --availability-domain.

gcloud compute instances bulk create \
    --availability-domain=DOMAIN_NUMBER \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern=NAME_PATTERN \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Substitua DOMAIN_NUMBER pelo número do domínio de disponibilidade onde colocar a VM. O valor precisa estar entre 1 e o número de domínios especificados na política de posicionamento distribuído. Para verificar o número de domínios em uma política de posicionamento distribuído, confira os detalhes da política de posicionamento.

REST

Para criar VMs em massa que especifiquem uma política de posicionamento distribuído, crie um POST para o método instances.bulkInsert. No corpo da solicitação, inclua o campo 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": [
      "POLICY_NAME"
    ]
  }
}

Substitua:

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

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

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

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

  • MACHINE_TYPE: o tipo de máquina das VMs.

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

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

Opcionalmente, para especificar o domínio de disponibilidade em que as VMs serão criadas em massa, inclua a flag availabilityDomain no corpo da solicitação.

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": [
      "POLICY_NAME"
    ],
    "scheduling": {
      "availabilityDomain": DOMAIN_NUMBER
    }
  }
}

Substitua DOMAIN_NUMBER pelo número do domínio de disponibilidade onde colocar a VM. O valor precisa estar entre 1 e o número de domínios especificados na política de posicionamento distribuído. Para verificar o número de domínios em uma política de posicionamento distribuído, confira os detalhes da política de posicionamento.

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 um modelo de instância

Antes de criar um modelo de instância que especifique uma política de posicionamento distribuído, verifique o seguinte:

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

  • Ao criar um modelo de instância, é possível especificar o domínio de disponibilidade em que as VMs serão criadas. Evite criar todas as suas VMs em um só domínio. Caso contrário, você não reduz o risco de um único erro de hardware que afeta todas as VMs.

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

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

gcloud

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

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

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

Substitua:

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

  • MACHINE_TYPE: o tipo de máquina das VMs criadas usando o modelo de instância.

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

Opcionalmente, para especificar o domínio de disponibilidade em que as VMs serão criadas, inclua a flag --availability-domain.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --availability-domain=DOMAIN_NUMBER  \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME

Substitua DOMAIN_NUMBER pelo número do domínio de disponibilidade em que você quer criar as VMs. O valor precisa estar entre 1 e o número de domínios especificados na política de posicionamento. Para verificar o número de domínios em uma política de posicionamento distribuído, confira os detalhes da política de posicionamento.

REST

Para criar um modelo de instância que especifique uma política de posicionamento distribuído, faça uma solicitação POST para um dos seguintes métodos:

No corpo da solicitação, especifique o campo resourcePolicies.

Por exemplo, para criar um modelo de instância global que especifique uma política de posicionamento distribuído, 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"
    ]
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que a política de posicionamento distribuído 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: o tipo de máquina das VMs criadas usando o modelo de instância.

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

Opcionalmente, para especificar o domínio de disponibilidade em que as VMs serão criadas, inclua a flag availabilityDomain no corpo da solicitação.

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": {
      "availabilityDomain": DOMAIN_NUMBER
    }
  }
}

Substitua DOMAIN_NUMBER pelo número do domínio de disponibilidade em que você quer criar as VMs. O valor precisa estar entre 1 e o número de domínios especificados na política de posicionamento. Para verificar o número de domínios em uma política de posicionamento distribuído, confira os detalhes da política de posicionamento.

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 especifica uma política de posicionamento expandida, é 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 distribuído 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 distribuído, selecione uma das seguintes opções:

gcloud

Para criar um MIG usando um modelo de instância que especifica uma política de posicionamento distribuído, 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 distribuído, 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 expandida.

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

REST

Para criar um MIG usando um modelo de instância que especifique uma política de posicionamento distribuído 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 distribuído, 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 distribuído 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 distribuído está localizada.

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

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 distribuído 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 expandida, 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 especifique uma política de posicionamento expandida e substituir as VMs atuais do MIG por novas VMs que especifiquem as propriedades do modelo, execute o comando abaixo:

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

Substitua:

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

  • ZONE: a zona em que o MIG está localizado. Só é possível aplicar a política de posicionamento distribuído 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 distribuído 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 usar um modelo de instância global que especifique uma política de posicionamento expandida e substituir as VMs atuais do MIG por novas VMs que especifiquem 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/INSTANCE_GROUP_NAME

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

Substitua:

  • PROJECT_ID: o ID do projeto usado para criar um MIG atual, a política de posicionamento distribuído e o modelo de instância que especifica a política de posicionamento distribuído.

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

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

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.

A seguir