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.

    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.

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

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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