Definir política de manutenção do host da VM


Neste documento, descrevemos como definir uma política de manutenção do host da instância de máquina virtual (VM) para controlar como a VM se comporta quando um evento do host ocorre.

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.

    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

  • Não é possível alterar a política de manutenção do host de uma VM preemptiva. Quando há um evento de manutenção, a VM preemptiva é interrompida e não migra. Você precisa reiniciar manualmente a VM preemptiva.
  • Depois de criar uma VM usando um tipo de máquina E2, não é possível alterar as configurações de manutenção do host da VM de MIGRATE para TERMINATE ou vice-versa.

Propriedades de manutenção do host disponíveis

Com as propriedades a seguir, é possível configurar o comportamento de manutenção, o comportamento de reiniciação e o comportamento após a ocorrência de um erro do host de uma VM.

O Compute Engine configura cada VM com os valores padrão, a menos que você especifique outros.

Durante eventos do host, dependendo da política de manutenção do host configurada, as VMs que não são compatíveis com a migração em tempo real são encerradas ou reiniciadas automaticamente.

  • onHostMaintenance: determina o comportamento quando ocorre um evento de manutenção que possa causar a reinicialização da instância.

    • MIGRATE (padrão): faz o Compute Engine migrar uma instância em tempo real quando há um evento de manutenção.
    • TERMINATE: interrompe uma VM em vez de migrá-la.
  • automaticRestart: determina o comportamento quando uma VM falha ou é interrompida pelo sistema.

    • true (padrão): o Compute Engine reinicia uma instância quando ela falha ou é interrompida.
    • false: o Compute Engine não reinicia a VM se ela falhar ou for interrompida.
  • localSsdRecoveryTimeout: define o tempo limite de recuperação do SSD local. Esse é o período máximo, em horas, que o Compute Engine aguarda para recuperar dados do SSD local após um erro do host. Essa configuração só se aplica a VMs com discos SSD locais anexados.

    • Não definido (padrão): o Compute Engine aguarda até 1 hora para recuperar o disco. Para VMs Z3 (pré-lançamento), o tempo de espera padrão é de 4 horas.
    • Um número de 0 a 168: especifica o tempo que o Compute Engine aguarda para recuperar o disco. O número precisa ser um número inteiro, em incrementos de uma hora, com um valor máximo de sete dias. Um valor de 0 significa que o Compute Engine não aguardará para recuperar os dados.
  • hostErrorTimeoutSeconds (Visualização): define o tempo máximo, em segundos, que o Compute Engine aguarda para reiniciar ou encerrar uma VM depois de detectar que não está respondendo.

    • Não definido (padrão): o Compute Engine aguarda até 5,5 minutos (330 segundos) antes de reiniciar uma VM que não responde.
    • Número de 90 a 330: especifica o número de segundos, em incrementos de 30, que o Compute Engine aguarda antes de reiniciar uma VM que não responde.

Definir política de manutenção de host de uma VM

É possível alterar a política de manutenção do host de uma VM ao criar a VM ou depois de criá-la.

Definir política de manutenção de host durante a criação da VM

As informações nesta seção se concentram em como definir a política de manutenção do host ao criar uma VM. Para mais exemplos de criação de VMs, consulte Criar e iniciar uma instância de VM.

É possível definir a política de manutenção do host de uma VM durante a criação usando o console do Google Cloud, a gcloud CLI ou a API Compute Engine.

Console

  1. No console do Google Cloud, acesse a página Criar uma instância.

    Acesse "Criar uma instância"

  2. Especifique um Nome para a VM.

  3. Selecione uma Região e uma Zona para a VM.

  4. Na seção Configuração da máquina, faça o seguinte:

    1. Especifique os detalhes do tipo de máquina da VM.
    2. Expanda o menu Configurações avançadas do modelo de provisionamento de VM.
    3. No menu Na manutenção do host, selecione uma das seguintes etapas:
    4. Para migrar VMs durante eventos de manutenção, selecione Migrar instância da VM.
    5. Para interromper as VMs durante eventos de manutenção, selecione Encerrar instância da VM.
  5. Para criar a VM, clique em Criar.

gcloud

No Console do Google Cloud, ative o Cloud Shell.

Ativar o Cloud Shell

Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

Para definir a política de manutenção do host de uma nova VM, use o comando gcloud compute instances create. Inclua um ou mais de um dos parâmetros a seguir:

  • --maintenance-policy: se a VM será migrada ou interrompida durante a manutenção do host. A VM será migrada por padrão se você omitir essa propriedade.
  • --no-restart-on-failure ou --restart-on-failure: se a VM será reiniciada automaticamente após um erro do host. Por padrão, a VM sempre será reiniciada quando uma falha for detectada.
  • --local-ssd-recovery-timeout: quanto tempo o Compute Engine leva para recuperar qualquer disco SSD local anexado após um erro do host. O padrão é 1 hora.

Defina a política de manutenção do host de uma nova VM com o comando a seguir. Se você omitir qualquer uma das flags, o padrão dela será usado.

  gcloud compute instances create VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT

Substitua:

  • VM_NAME: o nome da VM.
  • MAINTENANCE_POLICY: a política de manutenção dessa VM, TERMINATE ou MIGRATE.
  • RESTART_ON_FAILURE_BEHAVIOR: comportamento de reiniciação da VM, definido como --no-restart-on-failure ou --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT: o número de horas usadas na recuperação de um SSD local anexado a uma VM que não responde. Os valores válidos são de 0 a 168, em incrementos de 1 hora.

Definir o tempo limite de detecção de erros do host

Para definir o tempo máximo que o Compute Engine aguarda para reiniciar ou encerrar uma VM que não responde, use o comando o gcloud compute instances create. Especifique o tempo limite com a flag --host-error-timeout-seconds.

  gcloud beta compute instances create VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT \
      --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT

Substitua:

  • VM_NAME: o nome da VM.
  • MAINTENANCE_POLICY: a política de manutenção dessa VM, TERMINATE ou MIGRATE.
  • RESTART_ON_FAILURE_BEHAVIOR: comportamento de reiniciação da VM, definido como --no-restart-on-failure ou --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT: o número de horas que o Compute Engine leva para recuperar um SSD local anexado a uma VM que não responde. Os valores válidos são de 0 a 168, em incrementos de 1 hora.
  • ERROR_DETECTION_TIMEOUT: o número de segundos que o Compute Engine aguarda antes de reiniciar uma VM que não responde, de 90 a 330, em incrementos de 30.

REST

Para definir a política de manutenção de host de uma nova VM usando a API Compute Engine, use o método instances.insert. Inclua uma ou mais de uma das propriedades a seguir no objeto scheduling do corpo da solicitação:

  • onHostMaintenance: se a VM será migrada ou interrompida durante a manutenção do host. A VM é migrada por padrão.
  • automaticRestart: se a VM será reiniciada automaticamente após um erro do host. As VMs são reiniciadas automaticamente por padrão.
  • localSsdRecoveryTimeout: quanto tempo o Compute Engine leva para recuperar qualquer disco SSD local anexado após detectar um erro do host. O padrão é 1 hora.
      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

      {
        "name": "VM_NAME",

        "scheduling": {
          "onHostMaintenance": "MAINTENANCE_POLICY",
          "automaticRestart": "RESTART_POLICY,
          "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
        }
      }

Substitua:

  • PROJECT_ID: o projeto da VM.
  • ZONE: a zona em que você quer criar a VM.
  • VM_NAME: o nome da VM.
  • MAINTENANCE_POLICY: a política de manutenção dessa VM, TERMINATE ou MIGRATE.
  • RESTART_POLICY: a política de reiniciação dessa VM, true ou false.
  • SSD_RECOVERY_TIMEOUT: o número de horas que o Compute Engine leva para recuperar um disco SSD local anexado a uma VM que não responde. Os valores válidos são de 0 a 168, em incrementos de 1 hora.

Definir o tempo limite de detecção de erros do host

Para definir o período máximo que o Compute Engine aguarda para reiniciar ou encerrar uma VM que não responde, use o método Beta instances.insert, porque essa opção está disponível em Pré-lançamento.

Adicione a propriedade hostErrorTimeoutSeconds ao objeto scheduling do corpo da solicitação.


   POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances

   {
      "name": "VM_NAME",

      "scheduling": {
        "onHostMaintenance": "MAINTENANCE_POLICY",
        "automaticRestart": "RESTART_POLICY,
        "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
        "hostErrorTimeoutSeconds": HOST_ERROR_TIMEOUT,
      }
    }

Substitua:

  • PROJECT_ID: o projeto da VM.
  • ZONE: a zona em que você quer criar a VM.
  • VM_NAME: o nome da VM.
  • MAINTENANCE_POLICY: a política de manutenção dessa VM, TERMINATE ou MIGRATE.
  • RESTART_POLICY: a política de reiniciação dessa VM, true ou false.
  • SSD_RECOVERY_TIMEOUT: o número de horas que o Compute Engine leva para recuperar um disco SSD local anexado a uma VM que não responde. Os valores válidos são de 0 a 168, em incrementos de 1 hora.
  • HOST_ERROR_TIMEOUT: o número de segundos que o Compute Engine aguarda antes de reiniciar ou encerrar uma VM que não responde. Os valores válidos são de 90 a 330, em incrementos de 30.

Atualizar a política de manutenção do host de uma VM que já existe

Console

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

    Acessar instâncias de VM

  2. Clique na VM com as configurações que você quer alterar. A página de detalhes da VM é exibida.

  3. Na página de detalhes da VM, conclua estas etapas:

    1. Clique no botão Editar na parte superior da página.
    2. Acesse a seção Gerenciamento. Na seção Políticas de disponibilidade, defina as opções Na manutenção do host e Reinicialização automática.
    3. Clique em Save.

gcloud

No Console do Google Cloud, ative o Cloud Shell.

Ativar o Cloud Shell

Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

Atualize a política de manutenção do host de uma VM atual com o comando gcloud compute instances set-scheduling. Use os mesmos parâmetros descritos no comando de criação da VM na seção anterior.

    gcloud compute instances set-scheduling VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT

Substitua:

  • VM_NAME: o nome da VM.
  • MAINTENANCE_POLICY: a política dessa VM, TERMINATE ou MIGRATE.
  • RESTART_ON_FAILURE_BEHAVIOR: comportamento de reiniciação da VM, --no-restart-on-failure ou --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT: o tempo em horas que o Compute Engine leva para recuperar um disco SSD local anexado a uma VM que não responde. Os valores válidos são de 0 a 168.

Atualizar o tempo limite de detecção de erros do host

Para atualizar o período máximo que o Compute Engine aguarda para reiniciar ou encerrar uma VM que não responde, use o comando gcloud beta compute instances set-scheduling, porque esse recurso só está disponível em Pré-lançamento.

Atualize o tempo limite com o parâmetro --host-error-timeout-seconds. Exemplo:

    gcloud beta compute instances set-scheduling VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT \
      --host-error-timeout-seconds=NUMBER_OF_SECONDS

Substitua:

  • VM_NAME: o nome da VM.
  • MAINTENANCE_POLICY: a política de manutenção dessa VM, TERMINATE ou MIGRATE.
  • RESTART_ON_FAILURE_BEHAVIOR: comportamento de reiniciação da VM, definido como --no-restart-on-failure ou --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT: o tempo em horas que o Compute Engine leva para recuperar um disco SSD local anexado a uma VM que não responde. Os valores válidos são de 0 a 168.
  • NUMBER_OF_SECONDS: o número de segundos que o Compute Engine aguarda antes de reiniciar ou encerrar uma VM que não responde, de 90 a 330, em incrementos de 30.

REST

Atualize a política de manutenção do host de uma VM que já existe com uma solicitação POST ao método instances.setScheduling.

Inclua uma ou mais de uma das propriedades a seguir no corpo da solicitação:

  • onHostMaintenance: se a VM será migrada ou interrompida durante a manutenção do host. A VM é migrada por padrão.
  • automaticRestart: se a VM será reiniciada automaticamente após um erro do host. As VMs são reiniciadas automaticamente por padrão.
  • localSsdRecoveryTimeout: quanto tempo o Compute Engine leva para recuperar qualquer disco SSD local anexado após detectar um erro do host. Se omitido, o padrão é 1 hora.
    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling

    {
      "onHostMaintenance": "MAINTENANCE_POLICY",
      "automaticRestart": RESTART_POLICY,
      "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
    }

Substitua:

  • PROJECT_ID: o projeto da VM.
  • ZONE: a zona em que a VM está localizada.
  • VM_NAME: o nome da VM.
  • MAINTENANCE_POLICY: a política de manutenção dessa VM, TERMINATE ou MIGRATE.
  • RESTART_POLICY: a política de reiniciação dessa VM, true ou false.
  • SSD_RECOVERY_TIMEOUT: o tempo em horas que o Compute Engine leva para recuperar um disco SSD local anexado a uma VM que não responde. Os valores válidos são de 0 a 168.

Atualizar o tempo limite de detecção de erros do host

Para atualizar o período máximo que o Compute Engine aguarda para reiniciar ou encerrar uma VM que não responde, use o método Beta instances.setScheduling, porque esse recurso está disponível em Pré-lançamento.

Adicione o parâmetro hostErrorTimeoutSeconds ao corpo da solicitação.

  POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling

  {
    "hostErrorTimeoutSeconds": NUMBER_OF_SECONDS,
  }

Substitua:

  • PROJECT_ID: o projeto da VM.
  • ZONE: a zona em que a VM está localizada.
  • VM_NAME: o nome da VM.
  • NUMBER_OF_SECONDS: o número de segundos que o Compute Engine aguarda antes de reiniciar ou encerrar uma VM que não responde, de 90 a 330, em incrementos de 30.

Ver as configurações da política de manutenção do host de uma VM

Console

  1. Acesse a página Instâncias da VM.

    Acessar instâncias de VM

  2. Clique no Nome da VM com os metadados que você quer ver. A página Detalhes da instância de VM será aberta.

  3. Acesse a seção Gerenciamento. A subseção Políticas de disponibilidade mostra as configurações atuais para Na manutenção do host e Reinicialização automática.

gcloud

Use o comando gcloud compute instances describe para ver as configurações da opção de manutenção do host de uma VM:

    gcloud compute instances describe VM_NAME --format="yaml(scheduling)"

Substitua VM_NAME pelo nome da VM.

A saída contém o tempo limite de detecção de erros do host da VM, por exemplo:

    scheduling:
      automaticRestart: true
      localSsdRecoveryTimeout:
        nanos: 0
        seconds: '10800'
      onHostMaintenance: MIGRATE
      preemptible: false
      provisioningModel: STANDARD

Ver a configuração de tempo limite de detecção de erros do host

Veja o valor atual de hostErrorTimeoutSeconds com o comando gcloud beta compute instances describe, porque essa opção só está disponível em Pré-lançamento.

  gcloud beta compute instances describe VM_NAME --format="yaml(scheduling)"

Substitua VM_NAME pelo nome da VM.

A saída contém o tempo limite de detecção de erros do host da VM, por exemplo:

  scheduling:
    automaticRestart: true
    hostErrorTimeoutSeconds: 120
    localSsdRecoveryTimeout:
      nanos: 0
      seconds: '10800'
    onHostMaintenance: MIGRATE
    preemptible: false
    provisioningModel: STANDARD

REST

Para ver as configurações de manutenção do host de uma VM, use o método instances.get:

  GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Substitua:

  • PROJECT_ID: o projeto em que a VM está localizada.
  • ZONE: a zona em que a VM está localizada.
  • VM_NAME: o nome da VM.

Na saída, o objeto scheduling contém a política de manutenção do host da VM, por exemplo:

  "scheduling": {
      "onHostMaintenance": "MIGRATE",
      "automaticRestart": true,
      "preemptible": false,
      "provisioningModel": "STANDARD",
      "localSsdRecoveryTimeout": {
        "seconds": "10800",
        "nanos": 0
      }
    }

Ver as configurações de tempo limite de erro do host

Veja a configuração hostErrorTimeoutSeconds atual com uma solicitação GET ao método Beta instances.get, porque essa opção só está disponível em Pré-lançamento.

 GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Substitua:

  • PROJECT_ID: o projeto da VM.
  • ZONE: a zona em que a VM está localizada.
  • VM_NAME: o nome da VM.

Na saída, o objeto scheduling contém o tempo limite de detecção de erros do host da VM, por exemplo:

  "scheduling": {
    "hostErrorTimeoutSeconds": 120
  }

A seguir