Repare uma VM numa zona alternativa

Este documento descreve como permitir que um grupo de instâncias geridas (GIG) regional repare uma instância de máquina virtual (VM) numa zona alternativa quando o GIG não consegue reparar a VM na respetiva zona original. Para saber mais sobre reparações num MIG, consulte o artigo Acerca da reparação de VMs para alta disponibilidade.

Quando cria um GIG regional, seleciona uma ou mais zonas onde o GIG distribui as respetivas VMs. Por predefinição, se uma VM no MIG falhar, o MIG tenta reparar essa VM na respetiva zona original. Opcionalmente, pode permitir que o GIG repare essa VM numa das outras zonas selecionadas, o que é útil nos casos em que o GIG não consegue reparar a VM na respetiva zona original. O GIG escolhe a zona alternativa com base na capacidade e na quota disponíveis.

Limitações

Quando configura um GIG regional para reparar uma VM numa zona alternativa, aplicam-se as seguintes limitações:

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.

Permita reparações numa zona alternativa

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

Consola

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

    Aceda a Grupos de instâncias

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

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

    1. Clique em Criar grupo de instâncias.
    2. Introduza um Nome.
    3. Selecione um modelo de instância.
    4. Na secção Localização, selecione Várias zonas e, de seguida, selecione uma região e zonas.
    5. No menu pendente Forma de distribuição do alvo, selecione Equilibrado ou Qualquer.

      • Se selecionar Equilibrado, na caixa de diálogo apresentada, clique em Desativar redistribuição de instâncias.

      • Se quiser selecionar Qualquer, primeiro tem de eliminar a configuração de ajuste automático de escala. Para eliminar o ajuste automático, no menu pendente Modo de ajuste automático, clique em Eliminar configuração do ajuste automático.

  4. Na secção Ciclo de vida da instância de VM, certifique-se de que os seguintes campos estão definidos da seguinte forma:

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

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

    3. Na secção Alterar zona durante a reparação da instância de VM, selecione a caixa de verificação Permitir a reparação de VMs numa zona alternativa.

  5. Para as outras definições, pode usar os valores predefinidos ou modificar os campos.

  6. Quando terminar, clique em Guardar para um GMI existente ou em Criar para um novo GMI.

gcloud

Para configurar um GIG existente para reparar a VM numa zona alternativa, use o comando beta update:

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

Para criar um GIG que possa reparar a VM numa 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 o seguinte:

  • MIG_NAME: o nome do MIG.
  • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que 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 alvo do MIG.
  • ZONES: a lista de zonas numa região onde quer criar as VMs no MIG.
  • SHAPE: a forma da distribuição alvo. Este valor pode ser balanced ou any.
  • REGION: a região onde o MIG está localizado.

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 que possa reparar VMs numa 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 os comandos básicos do Terraform.

REST

Para configurar um GIG existente para reparar a VM numa 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 numa 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 o seguinte:

  • PROJECT_ID: o seu ID do projeto.
  • REGION: a região onde o MIG está localizado.
  • MIG_NAME: o nome do MIG.
  • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que 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 alvo do MIG.
  • SHAPE: a forma da distribuição alvo. Este valor pode ser BALANCED ou ANY.

Não permita reparações numa zona alternativa

Se configurou um MIG para reparar a VM numa zona alternativa, pode restaurar a predefinição em que o MIG repara a VM na zona original.

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

Consola

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

    Aceda a Grupos de instâncias

  2. Clique no nome do MIG.

  3. Clique em Edit.

  4. Aceda à secção Ciclo de vida da instância de VM.

  5. Na secção Alterar zona durante a reparação da instância de VM, desmarque a caixa de verificação Permitir a reparação de VMs numa zona alternativa.

  6. Clique em Guardar.

gcloud

Para não permitir reparações numa zona alternativa, use o comando beta update:

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

Substitua o seguinte:

  • MIG_NAME: o nome do MIG.
  • REGION: a região onde o MIG está localizado.

REST

Para não permitir reparações numa 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": "NO"
      }
    }
}

Substitua o seguinte:

  • PROJECT_ID: o seu ID do projeto.
  • REGION: a região onde o MIG está localizado.
  • MIG_NAME: o nome do MIG.

O que se segue?