Defina um formato de distribuição alvo para VMs num MIG regional

Se usar um grupo de instâncias geridas (GIG) regional, pode definir a forma de distribuição de destino desse GIG para uma das seguintes opções:

  • EVEN (predefinição): o grupo cria e elimina VMs para alcançar e manter o mesmo número de VMs nas zonas selecionadas. Numa distribuição EVEN, o número de VMs não difere em mais de 1 entre duas zonas. Recomendado para cargas de trabalho de publicação altamente disponíveis.
  • EQUILIBRADO: o grupo dá prioridade à criação de VMs em zonas onde os recursos estão disponíveis, ao mesmo tempo que distribui as VMs o mais uniformemente possível pelas zonas selecionadas para minimizar o impacto de uma falha zonal. Recomendado para o fornecimento altamente disponível ou cargas de trabalho em lote.
  • ANY: o grupo escolhe zonas para criar instâncias de VM de modo a cumprir o número de VMs pedido dentro das restrições de recursos atuais e maximizar a utilização de reservas zonais não usadas. Recomendado para cargas de trabalho em lotes que não requerem alta disponibilidade.
  • QUALQUER ZONA ÚNICA: o grupo cria todas as instâncias de VMs numa única zona. A zona é escolhida com base no suporte de hardware, na disponibilidade atual de recursos e quotas, e nas reservas correspondentes. Recomendado em combinação com uma política de posicionamento de instâncias compactas para cargas de trabalho que requerem uma comunicação extensiva entre VMs.

Para usar VMs reservadas num grupo de instâncias gerido regional, crie reservas idênticas com o mesmo nome em cada zona aplicável. Em seguida, segmente essas reservas por nome no modelo de instância do grupo.

Para ajudar a escolher uma forma, consulte a tabela de comparação, exemplos de utilização, e como funcionam as formas de distribuição.

Defina um formato de distribuição de destino quando criar o seu GIG regional ou atualizar o formato de destino de um GIG regional existente.

Antes de começar

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

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

    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. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

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

    2. Set a default region and zone.

    Terraform

    Para usar os exemplos do Terraform nesta página num ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure as credenciais predefinidas da aplicação com as suas credenciais de utilizador.

      Instale a CLI Google Cloud.

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

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Para mais informações, consulte Set up authentication for a local development environment.

    REST

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

      Instale a CLI Google Cloud.

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

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

Limitações

  • Só pode selecionar zonas para o MIG quando o cria.
  • Se especificar recursos no modelo de instância ou na configuração com estado do MIG que não estão disponíveis em todas as zonas selecionadas, aplicam-se as seguintes limitações:

    • Tem de definir o formato de distribuição do alvo como BALANCED, ANY ou ANY_SINGLE_ZONE.
    • Tem de garantir que todos os recursos necessários para o MIG, por exemplo, discos existentes, tipos de máquinas ou GPUs, estão disponíveis em, pelo menos, uma das zonas selecionadas.
    • Se quiser atualizar a configuração do MIG (por exemplo, o modelo de instância) para uma configuração que não pode ser instanciada em todas as zonas selecionadas, tem de remover as instâncias geridas de todas as zonas não suportadas antes de definir a nova configuração.
  • Para definir o formato de distribuição alvo como BALANCED ou ANY_SINGLE_ZONE, tem de desativar a redistribuição proativa de instâncias.

  • Se quiser dimensionar automaticamente um MIG regional, tem de definir a forma de distribuição de destino do grupo como BALANCED ou EVEN.
  • Se definir o formato de distribuição alvo como BALANCED, ANY ou ANY_SINGLE_ZONE, aplicam-se as seguintes limitações:

    • As atualizações do Canary com duas versões não são suportadas.
    • No caso de disponibilidade limitada dos recursos pedidos em toda a região, o grupo pode agendar a criação de instâncias de VM numa zona onde os recursos já estão indisponíveis. Pode tentar diminuir e aumentar o tamanho do grupo para obter os recursos pedidos noutras zonas.
    • As atualizações implementadas que usam o SUBSTITUTE método de substituição tentam criar as novas instâncias atualizadas na mesma zona que as máquinas obsoletas, mesmo que a zona não tenha recursos para satisfazer os requisitos da nova versão. Para mediar este comportamento, pode eliminar as VMs desatualizadas da zona restrita e, em seguida, aumentar o tamanho do grupo pelo número de VMs eliminadas. O grupo cria instâncias a partir do modelo mais recente em zonas onde a capacidade está disponível.
    • Se quiser atualizar o modelo de instância do grupo para um modelo que especifique recursos que não estão disponíveis em todas as zonas selecionadas, tem de remover as instâncias geridas de zonas não suportadas antes de definir o novo modelo.
  • Se definir o formato de distribuição de destino como ANY_SINGLE_ZONE e o grupo tiver VMs existentes numa única zona, só pode criar VMs adicionais nessa zona. Se quiser usar uma zona diferente, primeiro tem de reduzir o grupo para zero VMs.

  • Se precisar de aprovisionar um grupo de VMs de inquilino único, tem de definir o formato de distribuição de destino do GIG como EVEN. Crie os seus grupos de nós nas mesmas zonas que as zonas do GMG e defina as afinidades de nós do GMG no modelo de instância do GMG.

Criar um grupo com um formato de distribuição alvo

Para criar o seu grupo, selecione as respetivas zonas e defina a forma de distribuição do alvo. Use o Google Cloud console, a CLI gcloud, o Terraform ou o REST.

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda à página Grupos de instâncias

  2. Clique em Criar grupo de instâncias para criar um novo grupo de instâncias.
  3. Selecione uma das Novas opções de grupo de instâncias gerido: sem estado (predefinição) ou com estado.
  4. Atribua um nome e, opcionalmente, uma descrição ao grupo de instâncias.
  5. Escolha um modelo de instância para o grupo de instâncias ou crie um novo.
  6. Especifique o número de VMs para este grupo. Para cargas de trabalho de elevada disponibilidade, lembre-se de aprovisionar VMs suficientes para suportar a sua aplicação se ocorrer uma falha de zona.
  7. Em Localização, selecione Várias zonas.
  8. Escolha uma região e selecione as zonas que quer usar.

    • Se quiser que o MIG possa usar todas as zonas na região, selecione todas as zonas disponíveis.
    • Tenha em atenção que não pode atualizar um MIG regional para usar zonas diferentes depois de o criar.
  9. Escolha uma forma de distribuição alvo.

    1. Se quiser selecionar Qualquer ou Qualquer zona única, na secção Ajuste automático, clique em Modo de ajuste automático e escolha Eliminar configuração do ajuste automático.
    2. Se quiser selecionar Qualquer zona única ou Equilibrado, na secção Redistribuição de instâncias, não selecione Permitir redistribuição de instâncias.
  10. Continue com o resto do processo de criação do MIG.

gcloud

Use o comando gcloud compute instance-groups managed create e inclua a flag --target-distribution-shape.

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template TEMPLATE \
    --size SIZE \
    --region REGION \
    --zones ZONES \
    --target-distribution-shape SHAPE

Substitua o seguinte:

  • INSTANCE_GROUP_NAME: o nome do grupo de instâncias.
  • TEMPLATE: o nome do modelo de instância a usar para o grupo.
  • SIZE: o tamanho de destino do grupo de instâncias.
  • REGION: a região onde quer o seu grupo.
  • ZONES (opcional): uma lista de zonas na região onde quer implementar instâncias de VM. Por predefinição, o Compute Engine seleciona três zonas para si.

    • Se quiser que o MIG possa usar todas as zonas na região, especifique todas as zonas disponíveis. Pode obter uma lista de zonas na região com o seguinte comando:

      gcloud compute zones list --filter=region:REGION --format='list(NAME)'
    • Tenha em atenção que não pode atualizar um MIG regional para usar zonas diferentes depois de o criar.

  • SHAPE: a forma de distribuição alvo. Pode ter um dos seguintes valores:

    • even (predefinição): o grupo cria e elimina VMs para alcançar e manter o mesmo número de VMs nas zonas selecionadas. Numa distribuição EVEN, o número de VMs não difere em mais de 1 entre duas zonas. Recomendado para cargas de trabalho de publicação altamente disponíveis.
    • balanced: o grupo dá prioridade à criação de VMs em zonas onde os recursos estão disponíveis, ao mesmo tempo que distribui as VMs o mais uniformemente possível pelas zonas selecionadas para minimizar o impacto de uma falha zonal. Recomendado para o fornecimento altamente disponível ou cargas de trabalho em lote.
    • any: o grupo seleciona zonas para criar instâncias de VM de modo a cumprir o número pedido de VMs dentro das restrições de recursos atuais e maximizar a utilização de reservas zonais não usadas. Recomendado para cargas de trabalho em lotes que não requerem alta disponibilidade.
    • any-single-zone: o grupo cria todas as instâncias de VM numa única zona. A zona é escolhida com base no suporte de hardware, na disponibilidade atual de recursos e quotas, e nas reservas correspondentes. Recomendado em combinação com uma política de posicionamento de instâncias compactas para cargas de trabalho que requerem uma comunicação extensiva entre VMs.

Por exemplo, para criar um GIG regional com um formato de distribuição de destino equilibrado, defina a flag --target-distribution-shape como balanced.

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c \
    --target-distribution-shape balanced \
    --instance-redistribution-type none

Terraform

Se ainda não criou um modelo de instância, que especifica o tipo de máquina, a imagem do disco de arranque, a rede e outras propriedades da VM que quer para cada VM no MIG, crie um modelo de instância.

Para criar um GIG regional, use o google_compute_region_instance_group_manager recurso.

O exemplo seguinte cria um GIG regional com o formato de distribuição de destino BALANCED.

resource "google_compute_region_instance_group_manager" "default" {
  name                             = "example-rmig"
  region                           = "us-east1"
  distribution_policy_zones        = ["us-east1-b", "us-east1-c"]
  distribution_policy_target_shape = "BALANCED"
  update_policy {
    type                         = "PROACTIVE"
    minimal_action               = "REFRESH"
    instance_redistribution_type = "NONE"
    max_unavailable_fixed        = 3
  }
  target_size        = 30
  base_instance_name = "instance"
  version {
    instance_template = google_compute_instance_template.default.id
  }
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

REST

Chame o método regionInstanceGroupManagers.insert. No corpo do pedido, inclua a propriedade distributionPolicy e defina o respetivo campo targetShape.

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

{
    "name": INSTANCE_GROUP_NAME,
    "instanceTemplate": "global/instanceTemplates/TEMPLATE",
    "targetSize": SIZE,
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/ZONE1"},
            {"zone": "zones/ZONE2"},
            {"zone": "zones/ZONE3"},
        ],
        "targetShape": "SHAPE"
    }
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto para este pedido.
  • REGION: a região do grupo de instâncias.
  • INSTANCE_GROUP_NAME: o nome do grupo de instâncias.
  • TEMPLATE: o nome do modelo de instância a usar para o grupo de instâncias.
  • SIZE: o tamanho de destino do grupo de instâncias.
  • ZONE: o nome de uma zona na região onde quer implementar instâncias de VM.
    • Se quiser que o MIG possa usar todas as zonas na região, especifique todas as zonas disponíveis. Pode obter uma lista de zonas na região chamando o método regions.get.
    • Tenha em atenção que não pode atualizar um MIG regional para usar zonas diferentes depois de o criar.
  • SHAPE: a forma de distribuição alvo. Pode ser um dos seguintes valores:
    • EVEN (predefinição): o grupo cria e elimina VMs para alcançar e manter o mesmo número de VMs nas zonas selecionadas. Numa distribuição EVEN, o número de VMs não difere em mais de 1 entre duas zonas. Recomendado para cargas de trabalho de publicação altamente disponíveis.
    • BALANCED: o grupo dá prioridade à criação de VMs em zonas onde os recursos estão disponíveis, ao mesmo tempo que distribui as VMs o mais uniformemente possível pelas zonas selecionadas para minimizar o impacto de uma falha zonal. Recomendado para o fornecimento altamente disponível ou cargas de trabalho em lote.
    • ANY: o grupo seleciona zonas para criar instâncias de VM de modo a cumprir o número pedido de VMs dentro das restrições de recursos atuais e maximizar a utilização de reservas zonais não usadas. Recomendado para cargas de trabalho em lotes que não requerem alta disponibilidade.
    • ANY_SINGLE_ZONE: o grupo cria todas as instâncias de VM numa única zona. A zona é escolhida com base no suporte de hardware, na disponibilidade atual de recursos e quotas, e nas reservas correspondentes. Recomendado em combinação com uma política de posicionamento de instâncias compactas para cargas de trabalho que requerem uma comunicação extensiva entre VMs.

Alterar a forma de distribuição de alvos de um grupo existente

Pode alterar o formato de distribuição alvo num GIG regional existente, mas com as seguintes limitações:

  • Se quiser alterar o formato de distribuição alvo para BALANCED ou ANY_SINGLE_ZONE, primeiro tem de desativar a redistribuição proativa.
  • Se quiser alterar o formato de distribuição alvo para EVEN e se a distribuição atual de instâncias for desigual, tem de desativar primeiro a redistribuição proativa.
  • Se alterar a forma para EVEN e quiser reativar a redistribuição proativa, tem primeiro de reequilibrar manualmente o grupo.
  • Se quiser alterar o formato de distribuição de destino para EVEN, mas o modelo de instância especificar recursos que não são suportados em todas as zonas selecionadas, tem de atualizar primeiro o modelo de instância do grupo para um que seja suportado em todas as zonas selecionadas.

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda à página Grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias onde quer alterar o formato de distribuição de destino.
  3. Clique em Editar para modificar este grupo de instâncias gerido.
  4. Clique em Localização para expandir a secção.
  5. Na lista Formato de distribuição de destino, selecione o formato que pretende.
  6. Clique em Guardar para aplicar as alterações.

gcloud

Use o comando gcloud compute instance-groups managed update e inclua a flag --target-distribution-shape.

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --target-distribution-shape SHAPE

Substitua o seguinte:

  • INSTANCE_GROUP_NAME: o nome do grupo de instâncias.
  • SHAPE: a forma de distribuição alvo. Pode ser um dos seguintes valores:
    • even (predefinição): o grupo cria e elimina VMs para alcançar e manter o mesmo número de VMs nas zonas selecionadas. Numa distribuição EVEN, o número de VMs não difere em mais de 1 entre duas zonas. Recomendado para cargas de trabalho de publicação altamente disponíveis.
    • balanced: o grupo dá prioridade à criação de VMs em zonas onde os recursos estão disponíveis, ao mesmo tempo que distribui as VMs o mais uniformemente possível pelas zonas selecionadas para minimizar o impacto de uma falha zonal. Recomendado para o fornecimento altamente disponível ou cargas de trabalho em lote.
    • any: o grupo seleciona zonas para criar instâncias de VM de modo a cumprir o número pedido de VMs dentro das restrições de recursos atuais e maximizar a utilização de reservas zonais não usadas. Recomendado para cargas de trabalho em lotes que não requerem alta disponibilidade.
    • any-single-zone: o grupo cria todas as instâncias de VM numa única zona. A zona é escolhida com base no suporte de hardware, na disponibilidade atual de recursos e quotas, e nas reservas correspondentes. Recomendado em combinação com uma política de posicionamento de instâncias compactas para cargas de trabalho que requerem uma comunicação extensiva entre VMs.

REST

Chame o método regionInstanceGroupManagers.patch. No corpo do pedido, inclua a propriedade distributionPolicy e defina o respetivo campo targetShape.

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

{
    "distributionPolicy": {
        "targetShape": "SHAPE"
    }
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto para este pedido.
  • REGION: a região do grupo de instâncias.
  • INSTANCE_GROUP_NAME: o nome do grupo de instâncias.
  • SHAPE: a forma de distribuição alvo. Pode ser um dos seguintes valores:
    • EVEN (predefinição): o grupo cria e elimina VMs para alcançar e manter o mesmo número de VMs nas zonas selecionadas. Numa distribuição EVEN, o número de VMs não difere em mais de 1 entre duas zonas. Recomendado para cargas de trabalho de publicação altamente disponíveis.
    • BALANCED: o grupo dá prioridade à criação de VMs em zonas onde os recursos estão disponíveis, ao mesmo tempo que distribui as VMs o mais uniformemente possível pelas zonas selecionadas para minimizar o impacto de uma falha zonal. Recomendado para o fornecimento altamente disponível ou cargas de trabalho em lote.
    • ANY: o grupo seleciona zonas para criar instâncias de VM de modo a cumprir o número pedido de VMs dentro das restrições de recursos atuais e maximizar a utilização de reservas zonais não usadas. Recomendado para cargas de trabalho em lotes que não requerem alta disponibilidade.
    • ANY_SINGLE_ZONE: o grupo cria todas as instâncias de VM numa única zona. A zona é escolhida com base no suporte de hardware, na disponibilidade atual de recursos e quotas, e nas reservas correspondentes. Recomendado em combinação com uma política de posicionamento de instâncias compactas para cargas de trabalho que requerem uma comunicação extensiva entre VMs.

Ver a política de distribuição de instâncias configurada

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda à página Grupos de instâncias

    Se tiver grupos de instâncias existentes, a página apresenta esses grupos.
  2. Clique no nome do grupo de instâncias que quer examinar. É aberta uma página com as propriedades do grupo de instâncias e uma lista de instâncias incluídas no grupo.
  3. Clique em Detalhes.
  4. Na secção Localização, procure Forma de distribuição do alvo.

gcloud

Execute o comando gcloud compute instance-groups managed describe.

gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME \
    --region REGION

O comando devolve os detalhes do grupo, incluindo o campo distributionPolicy.targetShape:

...
distributionPolicy:
  targetShape: BALANCED
  zones:
  - zone: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f
  ...
name: my-group
region: https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1
...

REST

Construa um pedido GET para o método regionInstanceGroupManagers.get.

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

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto para este pedido
  • REGION: a região do grupo de instâncias
  • INSTANCE_GROUP_NAME: o nome do grupo de instâncias

A forma da distribuição alvo é devolvida no campo distributionPolicy.targetShape. Por exemplo:

{
  "name": "my-instance-group",
  "distributionPolicy": {
    "targetShape": "BALANCED",
  },
  "targetSize": 50,
  ...
}

O que se segue?