Desativar e reativar a redistribuição proativa de VMs em um MIG regional


Em um grupo de instâncias gerenciadas (MIG) regional, para manter um número igual de instâncias de máquina virtual (VM) nas zonas selecionadas na região, use redistribuição proativa de instâncias. Essa configuração maximiza a disponibilidade do aplicativo no caso de uma falha no nível da zona.

A redistribuição proativa de instâncias é ativada por padrão para MIGs regionais. Quando a redistribuição proativa de instâncias é desativada, o grupo não tenta redistribuir proativamente as VMs entre as zonas. Isso é útil quando caso seja necessário necessário:

  • Excluir ou abandonar VMs do grupo sem afetar outras VMs em execução. Por exemplo, é possível excluir uma VM de worker em lote após a conclusão do job sem afetar outros workers.
  • Proteger VMs com cargas de trabalho com estado contra exclusão automática indesejada devido à redistribuição proativa.
  • Defina o formato de distribuição de destino do MIG como BALANCED ou ANY_SINGLE_ZONE.

É possível desativar a redistribuição proativa de instâncias ao criar um MIG regional. Também é possível ativá-lo ou desativá-lo para 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.

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

    Console

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

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

Como criar um grupo com a redistribuição proativa de instâncias desativada

Para criar um MIG regional com a redistribuição proativa de instâncias desativada, use o console do Google Cloud, a gcloud CLI 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. Atribua um nome e, se quiser, uma descrição ao grupo de instâncias.
  4. Selecione um modelo de instância para o grupo ou crie um modelo novo.
  5. 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.
  6. Em Local, selecione Várias zonas.
  7. Escolha uma região e selecione as zonas que você quer usar.
  8. Para desativar a redistribuição proativa de instâncias, em Redistribuição de instâncias, desmarque a caixa de seleção Permitir redistribuição de instâncias.
  9. Continue com o restante do processo de criação do MIG.

gcloud

Para criar um novo MIG regional sem redistribuição proativa de instâncias, use o comando gcloud compute instance-groups managed create com a sinalização --instance-redistribution-type definida como NONE.

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE_NAME \
    --size TARGET_SIZE \
    --zones ZONES \
    --instance-redistribution-type NONE

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG;
  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância a ser usado para o grupo;
  • TARGET_SIZE: o tamanho de destino do grupo;
  • ZONES: a lista de zonas em uma única região em que você quer implantar VMs

Exemplo:

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c \
    --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.

Para desativar a redistribuição proativa de instâncias em um MIG regional, inclua o bloco update_policy e defina o campo instance_redistribution_type como NONE.

resource "google_compute_region_instance_group_manager" "default" {
  name                      = "example-rmig"
  region                    = "us-east1"
  distribution_policy_zones = ["us-east1-b", "us-east1-c"]
  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

Para criar um MIG regional, sem escalonamento automático e sem redistribuição proativa de instâncias, faça uma solicitação POST ao método regionInstanceGroupManagers.insert. No corpo da solicitação, inclua a propriedade updatePolicy e defina o respectivo campo instanceRedistributionType como NONE.

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

{
    "name": "INSTANCE_GROUP_NAME",
    "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
    "targetSize": TARGET_SIZE,
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/ZONE"},
            {"zone": "zones/ZONE"}
        ]
    },
    "updatePolicy": {
        "instanceRedistributionType": "NONE"
    }
}

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 MIG;
  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância a ser usado para o grupo;
  • TARGET_SIZE: o tamanho de destino do grupo de instâncias;
  • ZONE: o nome de uma zona na única região em que você quer implantar as VMs

Como desativar a redistribuição proativa de instâncias

Para desativar ou reativar a redistribuição proativa de instâncias, use o console do Google Cloud, a CLI gcloud ou 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. Na coluna Nome da lista, clique no nome do grupo de instâncias que você quer modificar.
  3. Clique em Editar para modificar o grupo gerenciado de instâncias.
  4. Em Redistribuição da instância, desmarque a caixa de seleção Permitir redistribuição de instâncias.
  5. Clique em Save.

gcloud

Para desativar a redistribuição proativa de instâncias, defina a sinalização --instance-redistribution-type como NONE usando um comando da seguinte maneira:

  • Para um MIG regional com escalonamento automático automático ou não, com o modo definido como OFF ou ONLY_SCALE_OUT, use o compute instance-groups managed update.

    Exemplo:

    gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --instance-redistribution-type NONE \
    --region REGION
  • Para um MIG regional com escalonamento automático e o modo definido como ON, use o comando Beta compute instance-groups managed update.

    Exemplo:

    gcloud beta compute instance-groups managed update INSTANCE_GROUP_NAME \
    --instance-redistribution-type NONE \
    --region REGION

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG.
  • REGION: a região do grupo de instâncias.

REST

Para desativar a redistribuição proativa de instâncias, defina o campo instanceRedistributionType como NONE usando um método da seguinte maneira:

  • Para um MIG regional com escalonamento automático automático ou não, com o modo definido como OFF ou ONLY_SCALE_OUT, use o regionInstanceGroupManagers.patch.

    Exemplo:

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME
    
    {
     "updatePolicy": {
        "instanceRedistributionType": "NONE"
     }
    }
    
  • Para um MIG regional com escalonamento automático e o modo definido como ON, use o método Beta regionInstanceGroupManagers.patch.

    Exemplo:

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME
    
    {
     "updatePolicy": {
          "instanceRedistributionType": "NONE"
      }
    }
    

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 MIG.

Como ativar a redistribuição proativa de instâncias

Para ativar a redistribuição proativa de instâncias, use um comando semelhante ao visto em Como desativar a redistribuição proativa de instâncias, mas defina o tipo de redistribuição de instâncias como PROACTIVE.

Se você tiver excluído ou abandonado manualmente algumas instâncias gerenciadas que resultam em uma distribuição desigual de VMs na região, antes de reativar a redistribuição proativa de instâncias, será necessário reequilibrar manualmente o grupo. A diferença no número de VMs entre duas zonas não pode exceder uma VM.

Um MIG regional não permite ativar a redistribuição proativa de instâncias quando as VMs são distribuídas de maneira uniforme entre as zonas (a diferença no número de VMs entre duas zonas é de duas ou mais VMs). Isso evita uma exclusão automática não intencional de VMs de zonas com mais VMs, o que seria acionado para atingir a distribuição uniforme.

A seguir