Ativar o encerramento completo em uma instância do Compute Engine

Neste documento, explicamos como ativar o encerramento completo em uma instância nova ou atual do Compute Engine. Para saber mais sobre o encerramento completo, consulte Visão geral do encerramento completo.

Ao ativar o encerramento completo em uma instância, o SO convidado tem até uma hora para ser encerrado corretamente após a interrupção ou exclusão dela. Isso ajuda a evitar a perda de dados ou a corrupção dos sistemas de arquivos.

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.

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

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

Papéis necessários

Para receber as permissões necessárias para ativar o encerramento completo em uma instância de computação, peça ao administrador para conceder a você o papel do IAM de Administrador da instância do Compute (v1) (roles/compute.instanceAdmin.v1) no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém as permissões necessárias para ativar o encerramento completo em uma instância de computação. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para ativar o encerramento completo em uma instância de computação:

  • Para criar instâncias:
    • compute.instances.create no projeto.
    • Para usar uma imagem personalizada para criar a VM: compute.images.useReadOnly na imagem.
    • Para usar um snapshot para criar a VM: compute.snapshots.useReadOnly no snapshot.
    • Para usar um modelo de instância para criar a VM: compute.instanceTemplates.useReadOnly no modelo de instância.
    • Para atribuir uma rede legada à VM: compute.networks.use no projeto.
    • Para especificar um endereço IP estático para a VM: compute.addresses.use no projeto.
    • Para atribuir um endereço IP externo à VM ao usar uma rede legada: compute.networks.useExternalIp no projeto.
    • Para especificar uma sub-rede para a VM: compute.subnetworks.use no projeto ou na sub-rede escolhida.
    • Para atribuir um endereço IP externo à VM ao usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida.
    • Para definir os metadados da instância da VM: compute.instances.setMetadata no projeto.
    • Para definir tags para a VM: compute.instances.setTags na VM.
    • Para definir rótulos para a VM: compute.instances.setLabels na VM.
    • Para definir uma conta de serviço para uso pela VM: compute.instances.setServiceAccount na VM.
    • Para criar um disco para a VM: compute.disks.create no projeto.
    • Para anexar um disco atual no modo somente leitura ou de leitura e gravação: compute.disks.use no disco.
    • Para anexar um disco atual no modo somente leitura: compute.disks.useReadOnly no disco.
  • Para criar um modelo de instância: compute.instanceTemplates.create no projeto.
  • Para ativar o encerramento completo em uma instância atual: compute.instances.update na instância.

Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.

Ativar o encerramento completo

Para ativar o encerramento completo em uma instância de computação, use um dos seguintes métodos:

Ativar o encerramento completo em uma instância atual

É possível ativar o encerramento completo em uma instância de computação atual sem interrompê-la ou reiniciá-la. O período padrão de encerramento completo é de 10 minutos, mas é possível especificar um período personalizado entre um segundo e uma hora.

Para ativar o encerramento completo em uma instância atual, selecione uma das seguintes opções:

Console

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

    Acessar Instâncias de VM

  2. Na coluna Nome, clique no nome da instância em que você quer ativar o encerramento completo.

    A página de detalhes da instância será aberta.

  3. Clique em Editar.

  4. Na seção Gerenciamento, faça o seguinte:

    1. Marque a caixa de seleção Realizar o encerramento completo da VM.

    2. Opcional: para especificar um período de encerramento completo personalizado, informe uma duração no campo Duração máxima.

  5. Clique em Salvar.

gcloud

Para ativar o encerramento completo em uma instância atual, use o comando gcloud beta compute instances update com a flag --graceful-shutdown:

gcloud beta compute instances update INSTANCE_NAME \
    --graceful-shutdown \
    --zone=ZONE

Substitua:

  • INSTANCE_NAME: o nome da instância.

  • ZONE: a zona em que a instância está.

Você também pode especificar um período de encerramento completo personalizado incluindo a flag --graceful-shutdown-max-duration:

gcloud beta compute instances update INSTANCE_NAME \
    --graceful-shutdown \
    --graceful-shutdown-max-duration=MAX_DURATION \
    --zone=ZONE

Substitua MAX_DURATION por uma duração para o período de encerramento. O valor precisa ser formatado com o número de horas, minutos ou segundos, seguido por h, m e s, respectivamente. Por exemplo, especifique 1h para uma hora ou 20m10s para 20 minutos e 10 segundos.

REST

  1. Crie um arquivo JSON vazio.

  2. Para conferir as propriedades de uma instância atual, faça uma solicitação GET para o método instances.get da versão Beta:

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

    Substitua:

    • PROJECT_ID: o ID do projeto em que a instância está.

    • ZONE: a zona em que a instância está.

    • INSTANCE_NAME: o nome de uma instância atual.

  3. No arquivo JSON vazio que você criou nas etapas anteriores, faça o seguinte:

    1. Insira os detalhes da configuração da instância na saída da solicitação GET.

    2. No campo scheduling, adicione o campo gracefulShutdown da seguinte forma:

      {
        ...
        "scheduling": {
          ...
          "gracefulShutdown": {
            "enabled": true
          }
        },
        ...
      }
      

      Se quiser especificar um período de encerramento completo personalizado, inclua o campo maxDuration:

      {
        ...
        "scheduling": {
          ...
          "gracefulShutdown": {
            ...
            "enabled": true,
            "maxDuration": {
              "seconds": "MAX_DURATION"
            }
          }
        },
        ...
      }
      

      Substitua MAX_DURATION por uma duração em segundos para o período de encerramento completo. O valor precisa estar entre 1 e 3600, que é 3.600 segundos (uma hora).

  4. Para atualizar e reiniciar a instância, faça uma solicitação PUT ao método instances.update da versão Beta. Na solicitação, faça o seguinte:

    • No URL da solicitação, inclua o parâmetro de consulta mostDisruptiveAllowedAction definido como RESTART.

    • No corpo da solicitação, inclua as propriedades da instância que estão no arquivo JSON que você criou e atualizou nas etapas anteriores.

    A solicitação PUT para atualizar a instância é parecida com esta:

    PUT https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=RESTART
    
    {
      ...
      "scheduling": {
        ...
        "gracefulShutdown": {
          "enabled": true
        }
      },
      ...
    }
    

Para saber como atualizar as propriedades de uma instância, consulte Atualizar as propriedades da instância.

Ativar o encerramento completo ao criar uma instância

Quando você cria uma instância de computação com o encerramento completo ativado, o período de encerramento padrão é de 10 minutos. Você também pode especificar um período de encerramento personalizado entre um segundo e uma hora.

Para criar uma instância com o encerramento completo ativado, selecione uma das seguintes opções:

Console

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

    Acessar Instâncias de VM

  2. Clique em Criar instância.

    A página Criar uma instância será aberta.

  3. Especifique um Nome para a instância.

  4. Especifique a Região e a Zona em que a instância será criada.

  5. Especifique um tipo de máquina para a instância.

  6. No menu de navegação, clique em Avançado.

  7. Expanda a seção Configurações avançadas do modelo de provisionamento de VM e faça o seguinte:

    1. Marque a caixa de seleção Realizar o encerramento completo da VM.

    2. Opcional: para especificar um período de encerramento completo personalizado, informe uma duração no campo Duração máxima.

  8. Clique em Criar.

gcloud

Para criar uma instância com o encerramento completo ativado, use o comando gcloud beta compute instances create com a flag --graceful-shutdown:

gcloud beta compute instances create INSTANCE_NAME \
    --graceful-shutdown \
    --machine-type=MACHINE_TYPE \
    --zone=ZONE

Substitua:

  • INSTANCE_NAME: o nome da instância.

  • MACHINE_TYPE: o tipo de máquina a ser usado para a instância.

  • ZONE: a zona onde a instância será criada.

Você também pode especificar um período de encerramento completo personalizado incluindo a flag --graceful-shutdown-max-duration:

gcloud beta compute instances create INSTANCE_NAME \
    --graceful-shutdown \
    --graceful-shutdown-max-duration=MAX_DURATION \
    --machine-type=MACHINE_TYPE \
    --zone=ZONE

Substitua MAX_DURATION por uma duração para o período de encerramento completo. O valor precisa ser formatado com o número de horas, minutos ou segundos, seguido por h, m e s, respectivamente. Por exemplo, especifique 1h para uma hora ou 20m10s para 20 minutos e 10 segundos.

REST

Para criar uma instância com o encerramento completo ativado, faça uma solicitação POST para o método beta.instances.insert. No corpo da solicitação, inclua o campo gracefulShutdown:

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

{
  "name": "INSTANCE_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "scheduling": {
    "gracefulShutdown": {
      "enabled": true
    }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que a instância será criada.

  • ZONE: a zona onde a instância será criada.

  • INSTANCE_NAME: o nome da instância.

  • MACHINE_TYPE: o tipo de máquina da instância.

  • IMAGE_PROJECT: o projeto de imagem que contém a imagem, como debian-cloud. Para mais informações sobre os projetos de imagem disponíveis, consulte Imagens públicas.

  • Para IMAGE, especifique uma destas opções:

    • Uma versão específica da imagem do SO, como debian-12-bookworm-v20240617.

    • Uma família de imagens, que precisa ter o formato family/IMAGE_FAMILY. Esse formato especifica a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar family/debian-12, a versão mais recente na família de imagens do Debian 12 será usada. Para saber como usar famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

Para especificar um período de encerramento completo personalizado, você também pode incluir o campo maxDuration no corpo da solicitação:

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

{
  "name": "INSTANCE_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "scheduling": {
    "gracefulShutdown": {
      "enabled": true,
      "maxDuration": {
        "seconds": "MAX_DURATION"
      }
    }
  }
}

Substitua MAX_DURATION por uma duração em segundos para o período de encerramento completo. O valor precisa estar entre 1 e 3600, que é 3.600 segundos (uma hora).

Para mais opções de configuração ao criar uma instância, consulte Criar e iniciar uma instância do Compute Engine.

Ativar o encerramento completo ao criar instâncias em massa

Quando você cria instâncias de computação em massa com o encerramento completo ativado, o período de encerramento padrão é de 10 minutos. Você também pode especificar um período de encerramento personalizado entre um segundo e uma hora.

Para criar instâncias em massa com o encerramento completo ativado, selecione uma das seguintes opções:

gcloud

Para criar instâncias em massa com o encerramento completo ativado, use o comando gcloud beta compute instances bulk create com a flag --graceful-shutdown.

Por exemplo, para criar instâncias em massa em uma única zona e especificar um padrão de nome para elas, execute o seguinte comando:

gcloud beta compute instances bulk create \
    --count=COUNT \
    --graceful-shutdown \
    --machine-type=MACHINE_TYPE \
    --name-pattern="NAME_PATTERN" \
    --zone=ZONE

Substitua:

  • COUNT: o número de instâncias a serem criadas.

  • MACHINE_TYPE: o tipo de máquina das instâncias.

  • NAME_PATTERN: o padrão de nome das instâncias. Para substituir uma sequência de números no nome de uma instância, use uma sequência de caracteres hash (#). Por exemplo, usar instance-# para o padrão de nome gera instâncias com nomes que começam com instance-1, instance-2 e continuam até o número de instâncias especificado por COUNT.

  • ZONE: a zona em que as instâncias serão criadas em massa.

Você também pode especificar um período de encerramento completo personalizado incluindo a flag --graceful-shutdown-max-duration:

gcloud beta compute instances bulk create \
    --count=COUNT \
    --graceful-shutdown \
    --graceful-shutdown-max-duration=MAX_DURATION \
    --machine-type=MACHINE_TYPE \
    --name-pattern="NAME_PATTERN" \
    --zone=ZONE

Substitua MAX_DURATION por uma duração para o período de encerramento completo. O valor precisa ser formatado com o número de horas, minutos ou segundos, seguido por h, m e s, respectivamente. Por exemplo, especifique 1h para uma hora ou 20m10s para 20 minutos e 10 segundos.

REST

Para criar instâncias em massa com o encerramento completo ativado, faça uma solicitação POST para o método instances.bulkInsert da versão Beta. No corpo da solicitação, inclua o campo gracefulShutdown.

Por exemplo, para criar instâncias em massa em uma única zona e especificar um padrão de nome para elas, faça uma solicitação POST da seguinte maneira:

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

{
  "count": COUNT,
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "scheduling": {
      "gracefulShutdown": {
        "enabled": true
      }
    }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que as instâncias serão criadas em massa.

  • ZONE: a zona em que as instâncias serão criadas em massa.

  • COUNT: o número de instâncias a serem criadas.

  • NAME_PATTERN: o padrão de nome das instâncias. Para substituir uma sequência de números no nome de uma instância, use uma sequência de caracteres hash (#). Por exemplo, usar instance-# para o padrão de nome gera instâncias com nomes que começam com instance-1, instance-2 e continuam até o número de instâncias especificado por COUNT.

  • MACHINE_TYPE: o tipo de máquina das instâncias.

  • IMAGE_PROJECT: o projeto de imagem que contém a imagem, como debian-cloud. Para mais informações sobre os projetos de imagem disponíveis, consulte Imagens públicas.

  • Para IMAGE, especifique uma destas opções:

    • Uma versão específica da imagem do SO, como debian-12-bookworm-v20240617.

    • Uma família de imagens, que precisa ter o formato family/IMAGE_FAMILY. Esse formato especifica a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar family/debian-12, a versão mais recente na família de imagens do Debian 12 será usada. Para saber como usar famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

  • ZONE: a zona em que as instâncias serão criadas em massa.

Para especificar um período de encerramento completo personalizado, você também pode incluir o campo maxDuration no corpo da solicitação:

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

{
  "count": COUNT,
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "scheduling": {
      "gracefulShutdown": {
        "enabled": true,
        "maxDuration": {
          "seconds": "MAX_DURATION"
        }
      }
    }
  }
}

Substitua MAX_DURATION por uma duração em segundos para o período de encerramento completo. O valor precisa estar entre 1 e 3600, que é 3.600 segundos (uma hora).

Para mais opções de configuração ao criar instâncias em massa, consulte Criar VMs em massa.

Ativar o encerramento completo ao criar um modelo de instância

Quando você cria um modelo de instância com o encerramento completo ativado, o período de encerramento padrão é de 10 minutos. Você também pode especificar um período de encerramento personalizado entre um segundo e uma hora.

O encerramento completo está ativado em todas as instâncias de computação criadas com o modelo de instância.

Para criar um modelo de instância com o encerramento completo ativado, selecione uma das seguintes opções:

Console

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

    Acessar Modelos de instância

  2. Clique em Criar modelo de instância.

    A página Criar modelo de instância será aberta.

  3. No campo Nome, insira um nome para o modelo de instância.

  4. Selecione o Local da seguinte forma:

    • Para reduzir a dependência entre regiões criando um modelo de instância regional, faça o seguinte:

      1. Escolha Regional, se ainda não estiver selecionado.

      2. No campo Região, selecione a região em que o modelo de instância será criado.

    • Caso contrário, para usar o modelo de instância em várias regiões, escolha Global.

  5. Na seção Configuração da máquina, especifique um tipo de máquina.

  6. Expanda a seção Configurações avançadas do modelo de provisionamento de VM e faça o seguinte:

    1. Marque a caixa de seleção Realizar o encerramento completo da VM.

    2. Opcional: para especificar um período de encerramento completo personalizado, informe uma duração no campo Duração máxima.

  7. Clique em Criar.

gcloud

Para criar um modelo de instância com o encerramento completo ativado, use o comando gcloud beta compute instance-templates create com a flag --graceful-shutdown.

Por exemplo, para criar um modelo de instância regional com o encerramento completo ativado, execute o seguinte comando:

gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --graceful-shutdown \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE

Substitua:

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.

  • REGION: a região em que o modelo de instância será criado.

  • MACHINE_TYPE: o tipo de máquina das instâncias criadas com o modelo de instância.

Você também pode especificar um período de encerramento completo personalizado incluindo a flag --graceful-shutdown-max-duration.

gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --graceful-shutdown \
    --graceful-shutdown-max-duration=MAX_DURATION \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE

Substitua MAX_DURATION por uma duração para o período de encerramento. O valor precisa ser formatado com o número de horas, minutos ou segundos, seguido por h, m e s, respectivamente. Por exemplo, especifique 1h para uma hora ou 20m10s para 20 minutos e 10 segundos.

REST

Para criar um modelo de instância com o encerramento completo ativado, faça uma solicitação POST para um dos seguintes métodos:

Por exemplo, para criar um modelo de instância regional com o encerramento completo ativado, faça uma solicitação POST da seguinte maneira:

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

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "scheduling": {
      "gracefulShutdown": {
        "enabled": true
      }
    }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que o modelo de instância será criado.

  • REGION: a região em que o modelo de instância será criado.

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.

  • IMAGE_PROJECT: o projeto de imagem que contém a imagem, como debian-cloud. Para mais informações sobre os projetos de imagem disponíveis, consulte Imagens públicas.

  • Para IMAGE, especifique uma destas opções:

    • Uma versão específica da imagem do SO, como debian-12-bookworm-v20240617.

    • Uma família de imagens, que precisa ter o formato family/IMAGE_FAMILY. Esse formato especifica a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar family/debian-12, a versão mais recente na família de imagens do Debian 12 será usada. Para saber como usar famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

  • MACHINE_TYPE: o tipo de máquina das instâncias criadas com o modelo de instância.

Para especificar um período de encerramento completo personalizado, você também pode incluir o campo maxDuration no corpo da solicitação.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "scheduling": {
      "gracefulShutdown": {
        "enabled": true,
        "maxDuration": {
          "seconds": "MAX_DURATION"
        }
      }
    }
  }
}

Substitua MAX_DURATION por uma duração em segundos para o período de encerramento. O valor precisa estar entre 1 e 3600, que é 3.600 segundos (uma hora).

Para mais opções de configuração ao criar um modelo de instância, consulte Criar modelos de instância.

A seguir