Definir um formato de distribuição de destino para VMs em um MIG regional


Se você usar um grupo gerenciado de instâncias (MIG) regional, será possível definir o formato de distribuição de destino do MIG como uma das seguintes opções:

  • EVEN (padrão): o grupo cria e exclui VMs para atingir e manter o mesmo número de VMs nas zonas selecionadas. Em uma distribuição EVEN, o número de VMs não difere mais de uma entre duas zonas. Recomendado para cargas de trabalho de exibição altamente disponível.
  • BALANCED: o grupo prioriza a criação de VMs em zonas onde os recursos estiverem disponíveis e distribui as VMs da maneira mais uniforme possível entre as zonas selecionadas para minimizar o impacto da falha zonal. Recomendado para cargas de trabalho em lote ou de exibição altamente disponíveis.
  • ANY: o grupo escolhe as zonas para a criação de instâncias de VM que atendam ao número solicitado de VMs dentro das restrições atuais dos recursos e que maximizem a utilização de reservas da zona não utilizadas. Recomendado para cargas de trabalho em lote que não exijam alta disponibilidade.
  • ANY SINGLE ZONE (visualização): o grupo cria todas as instâncias de VM em uma única zona. A zona é escolhida com base no suporte de hardware, na disponibilidade atual de recursos e cotas e nas reservas correspondentes. Recomendado em combinação com uma política de posicionamento de instância compacta para cargas de trabalho que exigem comunicação extensa entre as VMs.

Para usar VMs reservadas em um grupo gerenciado de instâncias por região, crie reservas idênticas com o mesmo nome em cada zona aplicável. Em seguida, vise essas reservas mencionando o nome delas no modelo de instância do grupo.

Para ajudar você a escolher um formato, consulte a tabela de comparação, os casos de uso e como os formatos de distribuição funcionam.

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

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.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. Defina uma região e uma zona padrão.

    Terraform

    Para usar as amostras de Terraform nesta página de um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure o Application Default Credentials com as credenciais de usuário.

    1. Instale a CLI do Google Cloud.
    2. Para inicializar a CLI gcloud, execute o seguinte comando:

      gcloud init
    3. Crie as credenciais de autenticação para sua Conta do Google:

      gcloud auth application-default login

    Veja mais informações em: Configurar a autenticação para um ambiente de desenvolvimento local.

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

Limitações

  • Só é possível selecionar as zonas para seu MIG ao criar o MIG.
  • Se você especificar recursos no modelo de instância do MIG ou na configuração com estado que não estão disponíveis em todas as zonas selecionadas, as seguintes limitações serão aplicadas:

    • Defina o formato de distribuição de destino como BALANCED, ANY ou ANY_SINGLE_ZONE.
    • Garanta que todos os recursos exigidos pelo MIG, por exemplo, discos, tipos de máquinas ou GPUs, estejam disponíveis em pelo menos uma das zonas selecionadas.
    • Para atualizar a configuração do MIG (por exemplo, o modelo de instância) para uma configuração que não possa ser instanciada em todas as zonas selecionadas, você precisa remover instâncias gerenciadas de todas as zonas incompatíveis antes de definir a nova configuração.
  • Para definir o formato de distribuição de destino como BALANCED ou ANY_SINGLE_ZONE, desative a redistribuição proativa de instâncias.

  • Se você quiser fazer o escalonamento automático de um MIG regional, defina o formato de distribuição de destino do grupo como BALANCED ([Preview](/products/#product-launch-stages)) ou EVEN.
  • Se você definir o formato de distribuição de destino como BALANCED, ANY ou ANY_SINGLE_ZONE, as seguintes limitações se aplicarão:

    • As atualizações Canary com duas versões não são compatíveis.
    • No caso de uma disponibilidade limitada de recursos solicitados em toda a região, o grupo pode programar a criação da instância de VM em uma zona em que os recursos já estão indisponíveis. Tente diminuir e aumentar o tamanho do grupo para conseguir os recursos solicitados em outras zonas.
    • Atualizações graduais que usam o método de substituição SUBSTITUTE tentarão criar as novas instâncias atualizadas na mesma zona que as máquinas desatualizadas, mesmo que a zona não tenha recursos para acomodar os requisitos da nova versão. Para mediar esse comportamento, exclua as VMs desatualizadas da zona restrita e aumente o tamanho do grupo pelo número de VMs excluídas. O grupo cria instâncias a partir do modelo mais recente nas zonas em que a capacidade está disponível.
    • Se você quiser atualizar o modelo de instância do grupo para um modelo que especifica recursos que não estão disponíveis em todas as zonas selecionadas, remova as instâncias gerenciadas de zonas não compatíveis antes de definir o novo modelo.
  • Se você definir o formato de distribuição de destino como ANY_SINGLE_ZONE e o grupo tiver VMs atuais em uma única zona, será possível criar VMs adicionais apenas nessa zona. Se você quiser usar uma zona diferente, primeiro reduza o escalonamento horizontal no grupo para zero VMs.

  • Se você precisar provisionar um grupo de VMs de locatário individual, defina o formato de distribuição de destino do MIG como EVEN. Crie grupos de nós nas mesmas zonas que as zonas do MIG e defina as afinidades de nó do MIG no modelo de instância do MIG.

Como criar um grupo com um formato de distribuição de destino

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

Console

  1. No Console do Google Cloud, acesse a página Grupos de instâncias.

    Acessar a página "Grupos de instâncias"

  2. Clique em Criar grupo de instâncias para criar um novo grupo.
  3. Selecione uma das opções do novo grupo de instâncias gerenciadas: sem estado (padrão) ou com estado.
  4. Atribua um nome e, se quiser, uma descrição ao grupo de instâncias.
  5. Selecione um modelo de instância para o grupo ou crie um modelo novo.
  6. Especifique o número de VMs para este grupo. Para cargas de trabalho altamente disponíveis, lembre-se de provisionar VMs suficientes para fazer com que o aplicativo continue a funcionar se uma zona falhar.
  7. Em Local, selecione Várias zonas.
  8. Escolha uma região e selecione as zonas que você quer usar.

    • Se você quiser que seu MIG use todas as zonas da região, selecione todas as zonas disponíveis.
    • Não é possível atualizar um MIG regional para usar zonas diferentes após a criação.
  9. Escolha uma forma de distribuição de destino.

    1. Se você quiser selecionar Any ou Any single zone, clique em Modo de escalonamento automático na seção Escalonamento automático. e escolha Excluir configuração de escalonamento automático.
    2. Se quiser selecionar Qualquer zona única ou Equilibrada, na seção Redistribuição da instância, não selecione Permitir redistribuição de instâncias.
  10. Continue com o restante do processo de criação do MIG.

gcloud

Use o comando gcloud compute instance-groups managed create e inclua a sinalização --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:

  • INSTANCE_GROUP_NAME: o nome do grupo de instâncias.
  • TEMPLATE: o nome do modelo de instância a ser usado para o grupo.
  • SIZE: o tamanho de destino do grupo de instâncias.
  • REGION: a região em que você quer seu grupo.
  • ZONES (opcional): uma lista de zonas na região em que você quer implantar instâncias de VM. Por padrão, o Compute Engine seleciona três zonas para você.

    • Se você quiser que seu MIG use todas as zonas da região, especifique todas as zonas disponíveis. É possível conseguir uma lista de zonas na região com o seguinte comando:

      gcloud compute zones list --filter=region:REGION --format='list(NAME)'
    • Não é possível atualizar um MIG regional para usar zonas diferentes após a criação.

  • SHAPE: o formato de distribuição de destino. Pode ser um dos seguintes valores:

    • even (padrão): o grupo cria e exclui VMs para atingir e manter o mesmo número de VMs nas zonas selecionadas. Em uma distribuição EVEN, o número de VMs não difere mais de uma entre duas zonas. Recomendado para cargas de trabalho de exibição altamente disponível.
    • balanced: o grupo prioriza a criação de VMs em zonas onde os recursos estejam disponíveis, enquanto distribui VMs da maneira mais uniforme possível entre as zonas selecionadas para minimizar o impacto da falha zonal. Recomendado para cargas de trabalho em lote ou de exibição altamente disponíveis.
    • any: o grupo escolhe as zonas para a criação de instâncias de VM que atendam ao número solicitado de VMs dentro das restrições atuais dos recursos e que maximizem a utilização de reservas da zona não utilizadas. Recomendado para cargas de trabalho em lote que não exijam alta disponibilidade.
    • any-single-zone (visualização): o grupo cria todas as instâncias de VM em uma única zona. A zona é escolhida com base no suporte de hardware, na disponibilidade atual de recursos e cotas e nas reservas correspondentes. Recomendado em combinação com uma política de posicionamento de instância compacta para cargas de trabalho que exigem comunicação extensa entre as VMs.

Por exemplo, para criar um MIG regional com uma forma de distribuição de destino balanceada, 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 você ainda não criou um modelo de instância, que especifica o tipo de máquina, a imagem do disco de inicialização, a rede e outras propriedades de VM que você quer para cada VM no MIG, crie um modelo de instância.

Para criar um MIG regional, use o recurso google_compute_region_instance_group_manager.

O exemplo a seguir cria um MIG 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 Comandos básicos do Terraform.

REST

Chame o método regionInstanceGroupManagers.insert. No corpo da solicitação, inclua a propriedade distributionPolicy e defina o respectivo 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:

  • PROJECT_ID: o ID do projeto desta solicitação;
  • 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 ser usado 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 em que você quer implantar as instâncias de VM.
    • Se você quiser que seu MIG use todas as zonas da região, especifique todas as zonas disponíveis. Para receber uma lista de zonas na região, chame o método regions.get.
    • Não é possível atualizar um MIG regional para usar zonas diferentes após a criação.
  • SHAPE: o formato de distribuição de destino. Pode ser um dos seguintes valores:
    • EVEN (padrão): o grupo cria e exclui VMs para atingir e manter o mesmo número de VMs nas zonas selecionadas. Em uma distribuição EVEN, o número de VMs não difere mais de uma entre duas zonas. Recomendado para cargas de trabalho de exibição altamente disponível.
    • BALANCED: o grupo prioriza a criação de VMs em zonas onde os recursos estejam disponíveis, enquanto distribui VMs da maneira mais uniforme possível entre as zonas selecionadas para minimizar o impacto da falha zonal. Recomendado para cargas de trabalho em lote ou de exibição altamente disponíveis.
    • ANY: o grupo escolhe as zonas para a criação de instâncias de VM que atendam ao número solicitado de VMs dentro das restrições atuais dos recursos e que maximizem a utilização de reservas da zona não utilizadas. Recomendado para cargas de trabalho em lote que não exijam alta disponibilidade.
    • ANY_SINGLE_ZONE (visualização): o grupo cria todas as instâncias de VM em uma única zona. A zona é escolhida com base no suporte de hardware, na disponibilidade atual de recursos e cotas e nas reservas correspondentes. Recomendado em combinação com uma política de posicionamento de instância compacta para cargas de trabalho que exigem comunicação extensa entre as VMs.

Como aterar a forma de distribuição de destino de um grupo existente

É possível alterar o formato de distribuição de destino de um MIG regional existente, mas com as seguintes limitações:

  • Se você quiser alterar a forma de distribuição de destino para BALANCED, primeiro desative a redistribuição proativa.
  • Se você quiser alterar o formato de distribuição de destino para EVEN, e se a distribuição atual das instâncias for desigual, primeiro desative a redistribuição proativa.
  • Se você alterar o formato para EVEN e quiser reativar a redistribuição proativa, primeiro reequilibre o grupo manualmente.
  • Se você quiser alterar o formato de distribuição de destino para EVEN, mas seu modelo de instância especificar recursos que não são compatíveis com todas as zonas selecionadas, primeiro você precisará atualizar o modelo de instância do grupo para um que seja compatível em todas as zonas selecionadas.

Console

  1. No Console do Google Cloud, acesse a página Grupos de instâncias.

    Acessar a página "Grupos de instâncias"

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias em que você quer alterar a forma de distribuição de destino.
  3. Clique em Editar para modificar o grupo gerenciado de instâncias.
  4. Em Forma de distribuição de destino, especifique a forma desejada.
  5. Clique em Salvar para aplicar o novo modelo.

gcloud

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

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

Substitua:

  • INSTANCE_GROUP_NAME: o nome do grupo de instâncias.
  • SHAPE: o formato de distribuição de destino. Pode ser um dos seguintes valores:
    • even (padrão): o grupo cria e exclui VMs para atingir e manter o mesmo número de VMs nas zonas selecionadas. Em uma distribuição EVEN, o número de VMs não difere mais de uma entre duas zonas. Recomendado para cargas de trabalho de exibição altamente disponível.
    • balanced: o grupo prioriza a criação de VMs em zonas onde os recursos estejam disponíveis, enquanto distribui VMs da maneira mais uniforme possível entre as zonas selecionadas para minimizar o impacto da falha zonal. Recomendado para cargas de trabalho em lote ou de exibição altamente disponíveis.
    • any: o grupo escolhe as zonas para a criação de instâncias de VM que atendam ao número solicitado de VMs dentro das restrições atuais dos recursos e que maximizem a utilização de reservas da zona não utilizadas. Recomendado para cargas de trabalho em lote que não exijam alta disponibilidade.
    • any-single-zone (visualização): o grupo cria todas as instâncias de VM em uma única zona. A zona é escolhida com base no suporte de hardware, na disponibilidade atual de recursos e cotas e nas reservas correspondentes. Recomendado em combinação com uma política de posicionamento de instância compacta para cargas de trabalho que exigem comunicação extensa entre as VMs.

REST

Chame o método regionInstanceGroupManagers.patch. No corpo da solicitação, inclua a propriedade distributionPolicy e defina o respectivo campo targetShape.

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

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

Substitua:

  • PROJECT_ID: o ID do projeto desta solicitação;
  • REGION: a região do grupo de instâncias.
  • INSTANCE_GROUP_NAME: o nome do grupo de instâncias.
  • SHAPE: o formato de distribuição de destino. Pode ser um dos seguintes valores:
    • EVEN (padrão): o grupo cria e exclui VMs para atingir e manter o mesmo número de VMs nas zonas selecionadas. Em uma distribuição EVEN, o número de VMs não difere mais de uma entre duas zonas. Recomendado para cargas de trabalho de exibição altamente disponível.
    • BALANCED: o grupo prioriza a criação de VMs em zonas onde os recursos estejam disponíveis, enquanto distribui VMs da maneira mais uniforme possível entre as zonas selecionadas para minimizar o impacto da falha zonal. Recomendado para cargas de trabalho em lote ou de exibição altamente disponíveis.
    • ANY: o grupo escolhe as zonas para a criação de instâncias de VM que atendam ao número solicitado de VMs dentro das restrições atuais dos recursos e que maximizem a utilização de reservas da zona não utilizadas. Recomendado para cargas de trabalho em lote que não exijam alta disponibilidade.
    • ANY_SINGLE_ZONE (visualização): o grupo cria todas as instâncias de VM em uma única zona. A zona é escolhida com base no suporte de hardware, na disponibilidade atual de recursos e cotas e nas reservas correspondentes. Recomendado em combinação com uma política de posicionamento de instância compacta para cargas de trabalho que exigem comunicação extensa entre as VMs.

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

Console

  1. No Console do Google Cloud, acesse a página Grupos de instâncias.

    Acessar a página "Grupos de instâncias"

    A página listará os grupos de instâncias, se você tiver algum.
  2. Clique no nome do grupo de instâncias que você quer examinar. Uma página é aberta com as propriedades do grupo e uma lista de instâncias incluídas nele.
  3. Clique em Details.
  4. Na seção Local, procure por Formato de distribuição de destino.

gcloud

Execute o comando gcloud compute instance-groups managed describe.

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

O comando retorna 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

Crie uma solicitação GET para o método regionInstanceGroupManagers.get.

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

Substitua:

  • PROJECT_ID: o ID do projeto desta solicitação;
  • REGION: a região do grupo de instâncias;
  • INSTANCE_GROUP_NAME: o nome do grupo de instâncias

A forma de distribuição de destino é retornada no campo distributionPolicy.targetShape. Exemplo:

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

A seguir