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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
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. 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.
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 entre2
e8
, 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.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 entre2
e8
, que é o número máximo de VMs em que uma política de posicionamento expandida pode ser aplicada.- Aplicar uma política de posicionamento expandida a uma VM existente.
- Crie uma VM que especifique uma política de posicionamento expandida.
- Criar VMs em massa que especificam uma política de posicionamento expandida.
- Crie um modelo de instância que especifique uma política de posicionamento expandida.
- Aplicar uma política de posicionamento expandida às VMs em um MIG.
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.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.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.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.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, especificarvm-#
cria VMs com nomesvm-1
,vm-2
e assim por diante, até o número de VMs especificado emCOUNT
.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.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, especificarvm-#
para cria VMs com nomesvm-1
,vm-2
e assim por diante, até o número de VMs especificado emCOUNT
.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.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.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.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.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.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.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.Saiba como consultar as políticas de posicionamento.
Saiba como substituir, remover ou excluir políticas de posicionamento.
Aprenda a fazer o seguinte com uma VM que especifica uma política de posicionamento:
Saiba mais sobre o processo de migração em tempo real durante eventos de manutenção.
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:
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:
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:
REST
Para criar uma política de posicionamento expandida, faça uma solicitação
POST
ao métodoresourcePolicies.insert
com o campoavailabilityDomainCount
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "POLICY_NAME", "groupPlacementPolicy": { "availabilityDomainCount": DOMAIN_COUNT } }
Substitua:
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:
REST
Para aplicar uma política de posicionamento expandida a uma VM atual, faça uma solicitação
POST
ao métodoinstances.addResourcePolicies
com o camporesourcePolicies
.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:
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:
REST
Para criar uma VM que especifique uma política de posicionamento expandida, faça uma solicitação
POST
para o métodoinstances.insert
com o camporesourcePolicies
.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:
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:
REST
Para criar VMs em massa que especifiquem uma política de posicionamento expandida, crie um
POST
para o métodoinstances.bulkInsert
com o camporesourcePolicies
.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:
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:
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étodoinstanceTemplates.insert
. No corpo da solicitação, especifique o camporesourcePolicies
.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:
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:
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étodosinstanceGroupManagers.insert
ouregionInstanceGroupManagers.insert
com o campoinstanceTemplate
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:
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:
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
aoinstanceGroupManagers.insert
ouregionInstanceGroupManagers.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:
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
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2024-09-24 UTC.
-