Criar e aplicar políticas de distribuição de distribuição a VMs,Criar e aplicar políticas de distribuição de distribuição a VMs


Este documento descreve como melhorar a confiabilidade de suas instâncias de máquina virtual (VM) criando e aplicando políticas de distribuição de distribuição a elas. Para saber mais sobre políticas de canais, incluindo restrições e preços, consulte Visão geral das políticas de canais .

Uma política de distribuição de distribuição especifica que suas VMs devem 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 e replicadas em grande escala, como Hadoop Distributed File System (HDFS), Cassandra ou Kafka.

Antes de começar

  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    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.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

Funções obrigatórias

Para obter as permissões necessárias para criar e aplicar uma política de posicionamento de propagação às VMs, peça ao administrador para conceder a você a função do IAM Compute Instance Admin (v1) ( roles/compute.instanceAdmin.v1 ) em seu projeto. Para obter mais informações sobre a concessão de funções, consulte Gerenciar acesso a projetos, pastas e organizações .

Esta função predefinida contém as permissões necessárias para criar e aplicar uma política de distribuição de distribuição às VMs. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias :

Permissões necessárias

As seguintes permissões são necessárias para criar e aplicar uma política de distribuição de distribuição às VMs:

  • Para criar políticas de posicionamento: compute.resourcePolicies.create no projeto
  • Para aplicar uma política de posicionamento a VMs existentes: 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
    • 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 legada à 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 ao usar uma rede legada: 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 ao usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
    • Para definir metadados de instância de VM para a VM: compute.instances.setMetadata no projeto
    • Para definir tags para a VM: compute.instances.setTags na VM
    • Para definir rótulos 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 somente leitura ou leitura-gravação: compute.disks.use no disco
    • Para anexar um disco existente 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

Você também poderá obter essas permissões com funções personalizadas ou outras funções predefinidas .

Crie uma política de posicionamento de spread

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

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

gcloud

Para criar uma política de posicionamento de propagação, use o 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 o seguinte:

  • POLICY_NAME : o nome da política de veiculação de spread.

  • DOMAIN_COUNT : o número distinto de domínios de disponibilidade nos quais colocar suas VMs. O valor deve estar entre 1 e 8 .

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

DESCANSAR

Para criar uma política de posicionamento de spread, 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 o seguinte:

  • PROJECT_ID : o ID do projeto no qual será criada a política de veiculação.

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

  • POLICY_NAME : o nome da política de veiculação de spread.

  • DOMAIN_COUNT : o número distinto de domínios de disponibilidade nos quais colocar suas VMs. O valor deve estar entre 1 e 8 .

Aplicar uma política de posicionamento de spread

Você pode aplicar uma política de distribuição de posicionamento a uma VM ou MIG existente ou ao criar VMs, modelos de instância ou MIGs.

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

Depois de aplicar uma política de posicionamento de propagação a uma VM, você poderá verificar o domínio de disponibilidade no qual a VM está localizada visualizando os detalhes da VM e verificando o valor do campo availabilityDomain .

Aplicar a política a uma VM existente

Antes de aplicar uma política de distribuição de posicionamento a uma VM existente, considere o seguinte:

  • Se a sua política de colocação de propagação especificar vários domínios de disponibilidade, então você poderá aplicar a política a uma VM sem interrompê-la. No entanto, a VM poderá precisar ser realocada para um domínio de disponibilidade diferente. Durante esse processo, o Compute Engine interrompe ou migra a VM com base na política de manutenção do host .

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

Se você quiser especificar o domínio de disponibilidade no qual colocar sua VM, aplique a política de posicionamento à VM atualizando suas propriedades . Ao atualizar as propriedades da VM, certifique-se de incluir os campos resourcePolicies e scheduling.availabilityDomain .

Para aplicar uma política de posicionamento de propagação a uma VM existente, selecione uma das seguintes opções:

gcloud

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

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

Substitua o seguinte:

  • VM_NAME : o nome de uma VM existente.

  • POLICY_NAME : o nome de uma política de veiculação de spread existente.

  • ZONE : a zona onde a VM está localizada.

DESCANSAR

Para aplicar uma política de distribuição de distribuição a uma VM existente, faça uma solicitação POST para o 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 o seguinte:

  • PROJECT_ID : o ID do projeto onde a política de posicionamento de spread e a VM estão localizadas.

  • ZONE : a zona onde a VM está localizada.

  • VM_NAME : o nome de uma VM existente.

  • REGION : a região onde está localizada a política de colocação de spread.

  • POLICY_NAME : o nome de uma política de veiculação de spread existente.

Aplicar a política ao criar uma VM

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

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

gcloud

Para criar uma VM que especifique uma política de posicionamento de propagação, 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 o seguinte:

  • 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 veiculação de spread existente.

  • ZONE : a zona na qual criar a VM.

Opcionalmente, para especificar o domínio de disponibilidade no qual criar a VM, inclua o sinalizador --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 no qual colocar sua VM. O valor deve estar entre 1 e o número de domínios especificado na política de distribuição de distribuição. Para verificar o número de domínios em uma política de posicionamento distribuído, visualize os detalhes da política de posicionamento .

DESCANSAR

Para criar uma VM que especifique uma política de distribuição de distribuição, faça uma solicitação POST para o 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 o seguinte:

  • PROJECT_ID : o ID do projeto onde a política de veiculação de spread está localizada.

  • ZONE : a zona onde criar a VM e onde o tipo de máquina está localizado. Você só pode especificar uma zona dentro da região da política de posicionamento de spread.

  • 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 obter mais informações sobre os projetos de imagem suportados, consulte Imagens públicas .

  • IMAGE : especifique um dos seguintes:

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

    • Uma família de imagens , que deve ser formatada como family/ IMAGE_FAMILY . Isso especifica a imagem do sistema operacional mais recente e não obsoleta. Por exemplo, se você especificar family/debian-12 , a versão mais recente da família de imagens Debian 12 será usada. Para obter mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens .

  • REGION : a região onde está localizada a política de colocação de spread.

  • POLICY_NAME : o nome de uma política de veiculação de spread existente.

Opcionalmente, para especificar o domínio de disponibilidade no qual criar a VM, inclua o campo 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 no qual colocar sua VM. O valor deve estar entre 1 e o número de domínios especificado na política de distribuição de distribuição. Para verificar o número de domínios em uma política de posicionamento distribuído, visualize os detalhes da política de posicionamento .

Para obter 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 especifiquem uma política de distribuição de distribuição, certifique-se do seguinte:

  • Só é possível criar VMs em massa que especifiquem uma política de posicionamento de propagação na mesma região que a política de posicionamento.

  • Ao criar VMs em massa com uma política de distribuição de distribuição, você pode especificar opcionalmente o domínio de disponibilidade no qual criar suas VMs. Evite criar todas as suas VMs em um único domínio. Caso contrário, você não reduz o risco de um único erro de hardware afetar todas as suas VMs.

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

gcloud

Para criar VMs em massa que especifiquem uma política de distribuição de distribuição, use o comando gcloud compute instances bulk create com a sinalização --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 o seguinte:

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

  • MACHINE_TYPE : o tipo de máquina para as VMs.

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

  • POLICY_NAME : o nome de uma política de veiculação de spread existente.

  • ZONE : a zona na qual criar as VMs em massa.

Opcionalmente, para especificar o domínio de disponibilidade no qual criar as VMs em massa, inclua o sinalizador --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 no qual colocar sua VM. O valor deve estar entre 1 e o número de domínios especificado na política de distribuição de distribuição. Para verificar o número de domínios em uma política de posicionamento distribuído, visualize os detalhes da política de posicionamento .

DESCANSAR

Para criar VMs em massa que especifiquem uma política de distribuição de distribuição, faça 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 as VMs, faça uma solicitação POST da seguinte maneira:

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": [
      "POLICY_NAME"
    ]
  }
}

Substitua o seguinte:

  • PROJECT_ID : o ID do projeto onde a política de veiculação de spread está localizada.

  • ZONE : a zona na qual criar as VMs em massa.

  • 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 em um nome de VM, use uma sequência de caracteres hash ( # ). Por exemplo, usar vm-# para o padrão de nome gera VMs com nomes começando com vm-1 , vm-2 e continuando até o número de VMs especificado por COUNT .

  • MACHINE_TYPE : o tipo de máquina para as VMs.

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

  • IMAGE : especifique um dos seguintes:

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

    • Uma família de imagens , que deve ser formatada como family/ IMAGE_FAMILY . Isso especifica a imagem do sistema operacional mais recente e não obsoleta. Por exemplo, se você especificar family/debian-12 , a versão mais recente da família de imagens Debian 12 será usada. Para obter 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 veiculação de spread existente.

Opcionalmente, para especificar o domínio de disponibilidade no qual criar as VMs em massa, inclua o campo availabilityDomain no corpo da solicitação.

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

Substitua DOMAIN_NUMBER pelo número do domínio de disponibilidade no qual colocar sua VM. O valor deve estar entre 1 e o número de domínios especificado na política de distribuição de distribuição. Para verificar o número de domínios em uma política de posicionamento distribuído, visualize os detalhes da política de posicionamento .

Para obter 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 de spread, certifique-se do seguinte:

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

  • Ao criar um modelo de instância, você pode especificar opcionalmente o domínio de disponibilidade no qual criar VMs. Evite criar todas as suas VMs em um único domínio. Caso contrário, você não reduz o risco de um único erro de hardware afetar todas as suas VMs.

Depois de criar um modelo de instância que especifique uma política de posicionamento de propagação, você poderá usar o modelo para fazer o seguinte:

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

gcloud

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

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

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

Substitua o seguinte:

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

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

  • POLICY_NAME : o nome de uma política de veiculação de spread existente.

Opcionalmente, para especificar o domínio de disponibilidade no qual criar as VMs, inclua o sinalizador --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 no qual criar suas VMs. O valor deve 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, visualize os detalhes da política de posicionamento .

DESCANSAR

Para criar um modelo de instância que especifique uma política de posicionamento de propagação, 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 de propagação, faça uma solicitação 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"
    ]
  }
}

Substitua o seguinte:

  • PROJECT_ID : o ID do projeto onde a política de veiculação de spread 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 obter mais informações sobre os projetos de imagem suportados, consulte Imagens públicas .

  • IMAGE : especifique um dos seguintes:

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

    • Uma família de imagens , que deve ser formatada como family/ IMAGE_FAMILY . Isso especifica a imagem do sistema operacional mais recente e não obsoleta. Por exemplo, se você especificar family/debian-12 , a versão mais recente da família de imagens Debian 12 será usada. Para obter 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 para as VMs criadas usando o modelo de instância.

  • POLICY_NAME : o nome de uma política de veiculação de spread existente.

Opcionalmente, para especificar o domínio de disponibilidade no qual criar as VMs, inclua o campo 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 no qual criar suas VMs. O valor deve 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, visualize os detalhes da política de posicionamento .

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

Aplicar a política às VMs em um MIG

Depois de criar um modelo de instância que especifique uma política de posicionamento de propagação, você poderá usar o modelo para fazer o seguinte:

Aplicar a política ao criar um MIG

Você só poderá criar VMs que especifiquem uma política de posicionamento espalhado se as VMs estiverem localizadas na mesma região que a política de posicionamento.

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

gcloud

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

Por exemplo, para criar um MIG zonal usando um modelo de instância global que especifica uma política de posicionamento de propagação, 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 ser criado.

  • 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 de propagação.

  • ZONE : a zona na qual será criado o MIG, que deve estar dentro da região onde está localizada a política de colocação de spread.

DESCANSAR

Para criar um MIG usando um modelo de instância que especifica uma política de posicionamento de propagação, faça uma solicitação POST para 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 de propagação, 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 o seguinte:

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

  • ZONE : a zona na qual será criado o MIG, que deve estar dentro da região onde está localizada a política de colocação de spread.

  • INSTANCE_GROUP_NAME : o nome do MIG a ser criado.

  • 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 de propagação.

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

Aplicar a política a um MIG existente

Você só poderá aplicar uma política de posicionamento espalhado a um MIG existente se o MIG estiver localizado na mesma região que a política de posicionamento ou, para MIGs zonais, em uma zona dentro da mesma região que a política de posicionamento.

Para atualizar um MIG para usar um modelo de instância que especifique uma política de posicionamento de propagação, 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 de propagação, 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 distribuição de distribuição e substituir as VMs existentes do MIG por novas VMs que especifiquem as propriedades do modelo, execute o seguinte comando:

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

Substitua o seguinte:

  • INSTANCE_GROUP_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 de propagação.

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

DESCANSAR

Para atualizar um MIG para usar um modelo de instância que especifique uma política de posicionamento de propagação e aplicar automaticamente as propriedades do modelo e da política de posicionamento às VMs existentes no MIG, faça uma solicitação PATCH para um dos seguintes métodos:

Por exemplo, para atualizar um MIG zonal para usar um modelo de instância global que especifique uma política de distribuição de distribuição e substituir as VMs existentes do MIG por novas VMs que especifiquem as propriedades do modelo, faça a seguinte solicitação PATCH :

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

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

Substitua o seguinte:

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

  • ZONE : a zona onde o MIG está localizado. Você só pode aplicar a política de posicionamento de spread a um MIG localizado na mesma região que a 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 existente que especifica uma política de posicionamento de propagação.

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

O que vem a seguir?

,

Este documento descreve como melhorar a confiabilidade de suas instâncias de máquina virtual (VM) criando e aplicando políticas de distribuição de distribuição a elas. Para saber mais sobre políticas de canais, incluindo restrições e preços, consulte Visão geral das políticas de canais .

Uma política de distribuição de distribuição especifica que suas VMs devem 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 e replicadas em grande escala, como Hadoop Distributed File System (HDFS), Cassandra ou Kafka.

Antes de começar

  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    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.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

Funções obrigatórias

Para obter as permissões necessárias para criar e aplicar uma política de posicionamento de propagação às VMs, peça ao administrador para conceder a você a função do IAM Compute Instance Admin (v1) ( roles/compute.instanceAdmin.v1 ) em seu projeto. Para obter mais informações sobre a concessão de funções, consulte Gerenciar acesso a projetos, pastas e organizações .

Esta função predefinida contém as permissões necessárias para criar e aplicar uma política de distribuição de distribuição às VMs. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias :

Permissões necessárias

As seguintes permissões são necessárias para criar e aplicar uma política de distribuição de distribuição às VMs:

  • Para criar políticas de posicionamento: compute.resourcePolicies.create no projeto
  • Para aplicar uma política de posicionamento a VMs existentes: 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
    • 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 legada à 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 ao usar uma rede legada: 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 ao usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
    • Para definir metadados de instância de VM para a VM: compute.instances.setMetadata no projeto
    • Para definir tags para a VM: compute.instances.setTags na VM
    • Para definir rótulos 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 somente leitura ou leitura-gravação: compute.disks.use no disco
    • Para anexar um disco existente 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

Você também poderá obter essas permissões com funções personalizadas ou outras funções predefinidas .

Crie uma política de posicionamento de spread

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

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

gcloud

Para criar uma política de posicionamento de propagação, use o 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 o seguinte:

  • POLICY_NAME : o nome da política de veiculação de spread.

  • DOMAIN_COUNT : o número distinto de domínios de disponibilidade nos quais colocar suas VMs. O valor deve estar entre 1 e 8 .

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

DESCANSAR

Para criar uma política de posicionamento de spread, 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 o seguinte:

  • PROJECT_ID : o ID do projeto no qual será criada a política de veiculação.

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

  • POLICY_NAME : o nome da política de veiculação de spread.

  • DOMAIN_COUNT : o número distinto de domínios de disponibilidade nos quais colocar suas VMs. O valor deve estar entre 1 e 8 .

Aplicar uma política de posicionamento de spread

Você pode aplicar uma política de distribuição de posicionamento a uma VM ou MIG existente ou ao criar VMs, modelos de instância ou MIGs.

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

Depois de aplicar uma política de posicionamento de propagação a uma VM, você poderá verificar o domínio de disponibilidade no qual a VM está localizada visualizando os detalhes da VM e verificando o valor do campo availabilityDomain .

Aplicar a política a uma VM existente

Antes de aplicar uma política de distribuição de posicionamento a uma VM existente, considere o seguinte:

  • Se a sua política de colocação de propagação especificar vários domínios de disponibilidade, então você poderá aplicar a política a uma VM sem interrompê-la. No entanto, a VM poderá precisar ser realocada para um domínio de disponibilidade diferente. Durante esse processo, o Compute Engine interrompe ou migra a VM com base na política de manutenção do host .

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

Se você quiser especificar o domínio de disponibilidade no qual colocar sua VM, aplique a política de posicionamento à VM atualizando suas propriedades . Ao atualizar as propriedades da VM, certifique-se de incluir os campos resourcePolicies e scheduling.availabilityDomain .

Para aplicar uma política de posicionamento de propagação a uma VM existente, selecione uma das seguintes opções:

gcloud

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

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

Substitua o seguinte:

  • VM_NAME : o nome de uma VM existente.

  • POLICY_NAME : o nome de uma política de veiculação de spread existente.

  • ZONE : a zona onde a VM está localizada.

DESCANSAR

Para aplicar uma política de distribuição de distribuição a uma VM existente, faça uma solicitação POST para o 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 o seguinte:

  • PROJECT_ID : o ID do projeto onde a política de posicionamento de spread e a VM estão localizadas.

  • ZONE : a zona onde a VM está localizada.

  • VM_NAME : o nome de uma VM existente.

  • REGION : a região onde está localizada a política de colocação de spread.

  • POLICY_NAME : o nome de uma política de veiculação de spread existente.

Aplicar a política ao criar uma VM

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

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

gcloud

Para criar uma VM que especifique uma política de posicionamento de propagação, 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 o seguinte:

  • 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 veiculação de spread existente.

  • ZONE : a zona na qual criar a VM.

Opcionalmente, para especificar o domínio de disponibilidade no qual criar a VM, inclua o sinalizador --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 no qual colocar sua VM. O valor deve estar entre 1 e o número de domínios especificado na política de distribuição de distribuição. Para verificar o número de domínios em uma política de posicionamento distribuído, visualize os detalhes da política de posicionamento .

DESCANSAR

Para criar uma VM que especifique uma política de distribuição de distribuição, faça uma solicitação POST para o 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 o seguinte:

  • PROJECT_ID : o ID do projeto onde a política de veiculação de spread está localizada.

  • ZONE : a zona onde criar a VM e onde o tipo de máquina está localizado. Você só pode especificar uma zona dentro da região da política de posicionamento de spread.

  • 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 obter mais informações sobre os projetos de imagem suportados, consulte Imagens públicas .

  • IMAGE : especifique um dos seguintes:

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

    • Uma família de imagens , que deve ser formatada como family/ IMAGE_FAMILY . Isso especifica a imagem do sistema operacional mais recente e não obsoleta. Por exemplo, se você especificar family/debian-12 , a versão mais recente da família de imagens Debian 12 será usada. Para obter mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens .

  • REGION : a região onde está localizada a política de colocação de spread.

  • POLICY_NAME : o nome de uma política de veiculação de spread existente.

Opcionalmente, para especificar o domínio de disponibilidade no qual criar a VM, inclua o campo 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 no qual colocar sua VM. O valor deve estar entre 1 e o número de domínios especificado na política de distribuição de distribuição. Para verificar o número de domínios em uma política de posicionamento distribuído, visualize os detalhes da política de posicionamento .

Para obter 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 especifiquem uma política de distribuição de distribuição, certifique-se do seguinte:

  • Só é possível criar VMs em massa que especifiquem uma política de posicionamento de propagação na mesma região que a política de posicionamento.

  • Ao criar VMs em massa com uma política de distribuição de distribuição, você pode especificar opcionalmente o domínio de disponibilidade no qual criar suas VMs. Evite criar todas as suas VMs em um único domínio. Caso contrário, você não reduz o risco de um único erro de hardware afetar todas as suas VMs.

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

gcloud

Para criar VMs em massa que especifiquem uma política de distribuição de distribuição, use o comando gcloud compute instances bulk create com a sinalização --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 o seguinte:

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

  • MACHINE_TYPE : o tipo de máquina para as VMs.

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

  • POLICY_NAME : o nome de uma política de veiculação de spread existente.

  • ZONE : a zona na qual criar as VMs em massa.

Opcionalmente, para especificar o domínio de disponibilidade no qual criar as VMs em massa, inclua o sinalizador --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 no qual colocar sua VM. O valor deve estar entre 1 e o número de domínios especificado na política de distribuição de distribuição. Para verificar o número de domínios em uma política de posicionamento distribuído, visualize os detalhes da política de posicionamento .

DESCANSAR

Para criar VMs em massa que especifiquem uma política de distribuição de distribuição, faça 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 as VMs, faça uma solicitação POST da seguinte maneira:

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": [
      "POLICY_NAME"
    ]
  }
}

Substitua o seguinte:

  • PROJECT_ID : o ID do projeto onde a política de veiculação de spread está localizada.

  • ZONE : a zona na qual criar as VMs em massa.

  • 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 em um nome de VM, use uma sequência de caracteres hash ( # ). Por exemplo, usar vm-# para o padrão de nome gera VMs com nomes começando com vm-1 , vm-2 e continuando até o número de VMs especificado por COUNT .

  • MACHINE_TYPE : o tipo de máquina para as VMs.

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

  • IMAGE : Especifique um dos seguintes:

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

    • Uma família de imagens , que deve ser formatada como family/ IMAGE_FAMILY . Isso especifica a imagem do sistema operacional mais recente e não deprecida. Por exemplo, se você especificar family/debian-12 , a versão mais recente da família Debian 12 Image é usada. Para obter mais informações sobre o uso de famílias da imagem, consulte as melhores práticas das famílias .

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

Opcionalmente, para especificar o domínio de disponibilidade no qual criar as VMs a granel, inclua o campo de availabilityDomain no corpo da solicitação.

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

Substitua DOMAIN_NUMBER pelo número do domínio de disponibilidade para colocar sua VM. O valor deve estar entre 1 e o número de domínios especificados na política de posicionamento do spread. Para verificar o número de domínios em uma política de colocação de spread, visualize os detalhes da política de colocação .

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

Aplique 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 de spread, verifique se o seguinte:

  • Se você deseja criar um modelo de instância regional, crie o modelo na mesma região que a política de colocação de spread. Caso contrário, a criação do modelo de instância falha.

  • Ao criar um modelo de instância, você pode especificar opcionalmente o domínio de disponibilidade para criar VMs. Evite criar todas as suas VMs em um único domínio. Caso contrário, você não mitigará o risco de um único erro de hardware afetando todas as suas VMs.

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

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

gcloud

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

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

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

Substitua o seguinte:

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

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

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

Opcionalmente, para especificar o domínio de disponibilidade no qual criar as VMs, inclua o sinalizador --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 para criar suas VMs. O valor deve estar entre 1 e o número de domínios especificados na política de colocação. Para verificar o número de domínios em uma política de colocação de spread, visualize os detalhes da política de colocação .

DESCANSAR

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

No órgão de solicitação, especifique o campo resourcePolicies .

Por exemplo, para criar um modelo de instância global que especifica uma política de posicionamento de spread, faça uma solicitação 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"
    ]
  }
}

Substitua o seguinte:

  • PROJECT_ID : o ID do projeto em que a política de colocação de spread 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 obter mais informações sobre os projetos de imagem suportados, consulte Imagens públicas .

  • IMAGE : Especifique um dos seguintes:

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

    • Uma família de imagens , que deve ser formatada como family/ IMAGE_FAMILY . Isso especifica a imagem do sistema operacional mais recente e não deprecida. Por exemplo, se você especificar family/debian-12 , a versão mais recente da família Debian 12 Image é usada. Para obter mais informações sobre o uso de famílias da imagem, consulte as melhores práticas das famílias .

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

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

Opcionalmente, para especificar o domínio de disponibilidade no qual criar as VMs, inclua o campo de domínio 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 para criar suas VMs. O valor deve estar entre 1 e o número de domínios especificados na política de colocação. Para verificar o número de domínios em uma política de colocação de spread, visualize os detalhes da política de colocação .

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

Aplique a política às VMs em um MIG

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

Aplique a política ao criar um MIG

Você só pode criar VMs que especificam uma política de posicionamento de spread se as VMs estiverem localizadas na mesma região que a política de colocação.

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

gcloud

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

Por exemplo, para criar um MIG zonal usando um modelo de instância global que especifica uma política de colocação de spread, 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 para 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 de spread.

  • ZONE : a zona para criar o MIG, que deve estar dentro da região onde está localizada a política de colocação de spread.

DESCANSAR

Para criar um MIG usando um modelo de instância que especifica uma política de posicionamento de spread, 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 colocação de spread, faça uma solicitação 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 em que a política de colocação de spread e o modelo de instância que especificam a política de colocação estão localizados.

  • ZONE : a zona para criar o MIG, que deve estar dentro da região onde está localizada a política de colocação de spread.

  • INSTANCE_GROUP_NAME : o nome do MIG para 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 de spread.

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

Aplique a política a um MIG existente

Você só pode aplicar uma política de colocação de spread a um MIG existente se o MIG estiver localizado na mesma região que a política de colocação ou, para o Zonal Migs, em uma zona na mesma região que a política de colocação.

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

gcloud

Para atualizar um MIG para usar um modelo de instância que especifica uma política de posicionamento de spread, 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 colocação de spread e substitua as VMs existentes do MIG por novas VMs que especificam as propriedades do modelo, execute o seguinte comando:

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

Substitua o seguinte:

  • INSTANCE_GROUP_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 de spread.

  • ZONE : a zona onde o MIG está localizado. Você só pode aplicar a política de colocação de spread a um MIG localizado na mesma região que a política de colocação.

DESCANSAR

Para atualizar um MIG para usar um modelo de instância que especifica uma política de posicionamento de spread e aplique automaticamente as propriedades do modelo e a política de colocação às VMs existentes no MIG, faça uma solicitação PATCH a um dos seguintes métodos:

Por exemplo, para atualizar um MIG zonal para usar um modelo de instância global que especifica uma política de colocação de spread e substitua as VMs existentes do MIG por novas VMs que especificam as propriedades do modelo, faça a seguinte solicitação PATCH :

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

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

Substitua o seguinte:

  • PROJECT_ID : o ID do projeto que você usou para criar um MIG existente, a política de colocação de spread e o modelo de instância que especifica a política de posicionamento de spread.

  • ZONE : a zona onde o MIG está localizado. Você só pode aplicar a política de colocação de spread a um MIG localizado na mesma região que a política de colocação.

  • INSTANCE_GROUP_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 de spread.

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

O que vem a seguir?