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


Neste documento, explicamos como criar uma política de posicionamento de posicionamento distribuído e como aplicá-la a uma ou mais instâncias de máquina virtual (VM) para melhorar a confiabilidade.

Uma política de posicionamento difundida especifica que as VMs precisam ser colocadas fisicamente distantes umas das outras colocando-as em domínios de disponibilidade diferentes. Use uma política de posicionamento difundida para garantir que as VMs sejam colocadas em hardware distinto, reduzindo o impacto de falhas de hardware subjacentes ou otimizando a migração em tempo real.

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

  • Criar ou atualizar uma VM

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

    • criar uma VM

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

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:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

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

Esse papel predefinido contém as permissões necessárias para criar e aplicar uma política de posicionamento 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 uma VM existente: compute.instances.addResourcePolicies no projeto.

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

Restrições

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

  • Só é possível aplicar uma política de posicionamento expandida a oito VMs, no máximo.

  • Não é possível aplicar políticas de posicionamento expandidas às reservas de VMs.

  • Não é possível verificar o local físico das VMs.

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

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

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 \
    --project=PROJECT_ID \
    --region=REGION

Substitua:

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

  • DOMAIN_COUNT: o número distinto de domínios de disponibilidade em que as VMs são colocadas. Cada domínio tem a própria fonte independente de energia, refrigeração e rede. O valor precisa estar entre 2 e 8, que é o número máximo de VMs em que uma política de posicionamento expandida pode ser aplicada.

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

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

REST

Para criar uma política de posicionamento expandida, faça uma solicitação POST ao método resourcePolicies.insert com 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 você quer criar a política.

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

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

  • DOMAIN_COUNT: o número distinto de domínios de disponibilidade em que as VMs são colocadas. Cada domínio tem a própria fonte independente de energia, refrigeração e rede. O valor precisa estar entre 2 e 8, que é o número máximo de VMs em que uma política de posicionamento expandida pode ser aplicada.

Aplicar políticas de posicionamento expandidas

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

Para criar um recurso do Compute Engine que especifique uma política de posicionamento expandida ou aplicar essa política a uma VM atual, selecione um dos seguintes métodos:

Aplicar uma política de colocação de extensão a uma VM existente

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

gcloud

Para aplicar uma política de posicionamento expandida a uma VM atual, use o comando gcloud compute instances add-resource-policies com a sinalização --resource-policies.

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

Substitua:

  • VM_NAME: o nome de uma VM atual.

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

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

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

REST

Para aplicar uma política de posicionamento expandida a uma VM atual, faça uma solicitação POST ao método instances.addResourcePolicies com o campo resourcePolicies.

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

{
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

Substitua:

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

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

  • VM_NAME: o nome de uma VM atual.

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

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

Criar uma VM que especifique uma política de posicionamento expandida

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

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.

Por exemplo, para criar uma VM que tenha propriedades padrão e especifique uma política de posicionamento expandida, execute o seguinte comando:

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

Substitua:

  • VM_NAME: o nome da VM a ser criada.

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

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

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

REST

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

Por exemplo, para criar uma VM que tenha propriedades padrão e especifique uma política de posicionamento de dispersão, faça a seguinte solicitação POST:

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

{
  "name": "VM_NAME",
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

Substitua:

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

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

  • VM_NAME: o nome da VM a ser criada.

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

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

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

Criar VMs em massa que especificam uma política de posicionamento expandida

É possível criar VMs em massa que especificam uma política de posicionamento expandida atual usando a CLI gcloud e a API Compute Engine.

gcloud

Para criar VMs em massa que especifiquem uma política de posicionamento expandida, use o comando gcloud compute instances bulk create com as sinalizações --async e --resource-policies.

Por exemplo, para criar VMs em massa com propriedades padrão e especificando a mesma política de posicionamento expandida, execute o seguinte comando:

gcloud compute instances bulk create \
    --async \
    --count=COUNT \
    --name-pattern=NAME_PATTERN \
    --project=PROJECT_ID \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Substitua:

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

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

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

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

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

REST

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

Por exemplo, para criar VMs em massa com propriedades padrão e especificando a mesma política de posicionamento expandida, faça a seguinte solicitação POST:

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

{
  "count": "COUNT",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "resourcePolicies": [
      "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
    ]
  }
}

Substitua:

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

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

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

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

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

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

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

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

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

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

gcloud

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

Por exemplo, para criar um modelo de instância que tenha propriedades de VM padrão e inclua uma política de posicionamento expandida, use o seguinte comando:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --project=PROJECT_ID \
    --resource-policies=POLICY_NAME

Substitua:

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

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

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

REST

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

Por exemplo, para criar um modelo de instância que tenha propriedades de VM padrão e especifique uma política de posicionamento expandida, faça a seguinte solicitação POST:

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

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "resourcePolicies": {
      "POLICY_NAME"
    }
  }
}

Substitua:

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

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

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

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

Aplicar uma política de posicionamento expandida às 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:

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

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

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

gcloud

Para criar um MIG usando um modelo de instância que especifique uma política de posicionamento expandida, use o comando gcloud compute instance-groups managed create com a sinalização --template definida como o nome do o modelo existente.

Por exemplo, para criar um MIG regional com propriedades de VM padrão e o formato de distribuição de qualquer zona única, execute o seguinte comando:

gcloud compute instance-groups managed create MIG_NAME \
    --project=PROJECT_ID \
    --region=REGION \
    --size=SIZE \
    --target-distribution-shape=any-single-zone \
    --template=INSTANCE_TEMPLATE_NAME

Substitua:

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

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

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

  • SIZE: o tamanho do MIG.

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

REST

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

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

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

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

Substitua:

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

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

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

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

  • SIZE: o tamanho do MIG.

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

Aplicar uma política posicionamento expandida a uma VM existente

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

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 regional 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 MIG_NAME \
    --project=PROJECT_ID \
    --region=REGION \
    --type=proactive \
    --version=template=INSTANCE_TEMPLATE_NAME

Substitua:

  • MIG_NAME: o nome de um MIG atual.

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

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

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

REST

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

Por exemplo, para atualizar um MIG regional 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, faça o seguinte: PATCH:

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

{
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "updatePolicy": {
    "type": "PROACTIVE"
  }
}

Substitua:

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

  • REGION: a região em que o MIG está localizado.

  • MIG_NAME: o nome de um MIG atual.

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

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

A seguir