Corrigir uma VM em uma zona alternativa

Neste documento, descrevemos como permitir que um grupo gerenciado de instâncias (MIG) regional corrija uma instância de máquina virtual (VM) em uma zona alternativa quando o MIG não puder corrigir a VM na zona original. Para saber mais sobre reparos em um MIG, consulte Como reparar VMs para alta disponibilidade.

Ao criar um MIG regional, você seleciona uma ou mais zonas em que o MIG distribui as VMs. Por padrão, se uma VM no MIG falhar, ele tentará corrigir essa VM na zona original. Você pode permitir que o MIG corrija essa VM em uma das outras zonas selecionadas, o que é útil quando o MIG não consegue corrigir a VM na zona original. O MIG escolhe a zona alternativa com base na capacidade e na cota disponíveis.

Limitações

Ao configurar um MIG regional para reparar uma VM em uma zona alternativa, as seguintes limitações se aplicam:

Antes de começar

  • Configure a autenticação, caso ainda não tenha feito isso. Com isso, você confirma sua identidade para acesso a serviços e APIs do Google Cloud . Para executar código ou exemplos em um ambiente de desenvolvimento local, faça a autenticação no Compute Engine com um destes métodos:

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

      gcloud init

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

    2. Set a default region and zone.

    Terraform

    Para usar os exemplos do Terraform desta página em um ambiente de desenvolvimento local, instale e inicialize a gcloud CLI e configure o Application Default Credentials com suas credenciais de usuário.

      Instale a CLI do Google Cloud.

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com 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.

    Saiba mais em Set up authentication for a local development environment.

    REST

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

      Instale a CLI do Google Cloud.

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

    Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .

Permitir correções em uma zona alternativa

Para permitir que um MIG corrija uma VM em uma zona alternativa, selecione uma das seguintes opções:

Console

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

    Acesse grupo de instâncias

  2. Se você já tiver um MIG, faça o seguinte:

    1. Clique no nome do MIG.
    2. Clique em Editar.
  3. Se você ainda não tiver um MIG, faça o seguinte:

    1. Clique em Criar grupo de instâncias.
    2. Digite um Nome.
    3. Selecione um modelo de instância.
    4. Na seção Local, selecione Várias zonas e escolha uma região e as zonas.
    5. No menu suspenso Forma de distribuição de destino, selecione Equilibrado ou Qualquer.

      • Se você selecionar Equilibrada, na caixa de diálogo exibida, clique em Desativar redistribuição de instâncias.

      • Se você quiser selecionar Qualquer uma, primeiro exclua a configuração de escalonamento automático. Para excluir o escalonamento automático, no menu suspenso Modo de escalonamento automático, clique em Excluir configuração de escalonamento automático.

  4. Na seção Ciclo de vida da instância de VM, verifique se os seguintes campos estão definidos da seguinte maneira:

    1. A lista Ação padrão em caso de falha está definida como Reparar instância.

    2. A opção Atualizações durante o reparo da instância de VM está definida como Atualizar a configuração da instância.

    3. Na seção Mudar a zona durante a correção da instância de VM, marque a caixa de seleção Permitir a correção de VMs em uma zona alternativa.

  5. Para as outras configurações, é possível usar os valores padrão ou modificar os campos.

  6. Depois de terminar, clique em Salvar para um MIG atual ou em Criar para um novo.

gcloud

Para configurar um MIG para reparar uma VM em uma zona alternativa, use o comando update Beta:

gcloud beta compute instance-groups managed update MIG_NAME \
    --on-repair-allow-changing-zone=YES \
    --force-update-on-repair \
    --region=REGION

Para criar um MIG que possa reparar VMs em uma zona alternativa, use o comando Beta create:

gcloud beta compute instance-groups managed create MIG_NAME \
    --template=INSTANCE_TEMPLATE_URL \
    --size=SIZE \
    --zones=ZONES \
    --target-distribution-shape=SHAPE \
    --instance-redistribution-type=none \
    --on-repair-allow-changing-zone=YES \
    --force-update-on-repair

Substitua:

  • MIG_NAME: o nome do MIG;
  • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que você quer usar para criar VMs no MIG. O URL pode conter o ID ou o nome do modelo de instância. Especifique um dos seguintes valores:
    • Para um modelo de instância regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID.
    • Para um modelo de instância global: INSTANCE_TEMPLATE_ID
  • SIZE: o tamanho de destino do MIG.
  • ZONES: a lista de zonas em uma região em que você quer criar as VMs no MIG.
  • SHAPE: o formato de distribuição de destino. Esse valor pode ser balanced ou any.
  • REGION: a região em que o MIG está localizado.

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 que possa reparar VMs em uma zona alternativa, use o recurso google_compute_region_instance_group_manager.

resource "google_compute_region_instance_group_manager" "default" {
  provider           = google-beta
  name               = "example-rmig"
  base_instance_name = "example-rmig-instance"
  region             = "us-central1"

  target_size                      = 3
  distribution_policy_target_shape = "BALANCED"

  version {
    instance_template = google_compute_instance_template.default.id
  }

  instance_lifecycle_policy {
    default_action_on_failure = "REPAIR"
    force_update_on_repair    = "YES"
    on_repair {
      allow_changing_zone = "YES"
    }
  }

  update_policy {
    instance_redistribution_type = "NONE"
    type                         = "OPPORTUNISTIC"
    minimal_action               = "REPLACE"
    max_surge_fixed              = 0
    max_unavailable_fixed        = 6
  }
}

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

REST

Para configurar um MIG atual para reparar uma VM em uma zona alternativa, use o método beta regionInstanceGroupManagers.patch:

PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME
{
    "instanceLifecyclePolicy": {
      "onRepair": {
        "allowChangingZone": "YES"
      },
      "forceUpdateOnRepair": "YES"
    }
}

Para criar um MIG que possa reparar VMs em uma zona alternativa, use o método Beta regionInstanceGroupManagers.insert:

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

{
  "name": "MIG_NAME",
  "instanceTemplate": "INSTANCE_TEMPLATE_URL",
  "targetSize": SIZE,
  "distributionPolicy": {
    "targetShape": "SHAPE"
  }
  "updatePolicy": {
    "instanceRedistributionType": none
  }
  "instanceLifecyclePolicy": {
    "forceUpdateOnRepair": "YES",
    "onRepair": {
      "allowChangingZone": "YES"
    }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto.
  • REGION: a região em que o MIG está localizado.
  • MIG_NAME: o nome do MIG;
  • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que você quer usar para criar VMs no MIG. O URL pode conter o ID ou o nome do modelo de instância. Especifique um dos seguintes valores:
    • Para um modelo de instância regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID.
    • Para um modelo de instância global: INSTANCE_TEMPLATE_ID
  • SIZE: o tamanho de destino do MIG.
  • SHAPE: o formato de distribuição de destino. Esse valor pode ser BALANCED ou ANY.

Não permitir correções em uma zona alternativa

Se você configurou um MIG para corrigir uma VM em uma zona alternativa, é possível restaurar a configuração padrão em que o MIG corrige a VM na zona original.

Para não permitir reparos em uma zona alternativa, selecione uma das seguintes opções:

Console

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

    Acesse grupo de instâncias

  2. Clique no nome do MIG.

  3. Clique em Editar.

  4. Acesse a seção Ciclo de vida da instância de VM.

  5. Na seção Mudar a zona durante a correção da instância de VM, desmarque a caixa de seleção Permitir a correção de VMs em uma zona alternativa.

  6. Clique em Salvar.

gcloud

Para não permitir reparos em uma zona alternativa, use o comando update Beta:

gcloud beta compute instance-groups managed update MIG_NAME \
    --on-repair-allow-changing-zone=NO \
    --region=REGION

Substitua:

  • MIG_NAME: o nome do MIG;
  • REGION: a região em que o MIG está localizado.

REST

Para não permitir reparos em uma zona alternativa, use o método regionInstanceGroupManagers.patch Beta:

PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME
{
    "instanceLifecyclePolicy": {
      "onRepair": {
        "allowChangingZone": "NO"
      }
    }
}

Substitua:

  • PROJECT_ID: o ID do projeto.
  • REGION: a região em que o MIG está localizado.
  • MIG_NAME: o nome do MIG;

A seguir