Como interromper e iniciar uma VM


Nesta página, você verá como interromper e iniciar uma instância de máquina virtual (VM). Observe que o Compute Engine usa STOP e TERMINATE alternadamente. Para suspender e retomar uma VM, leia Como suspender e retomar uma VM. Para mais informações sobre como interromper e suspender uma VM, consulte Ciclo de vida da instância de VM.

É possível interromper uma VM temporariamente, caso não precise mais dela, e reiniciá-la depois. Uma VM interrompida mantém os discos permanentes, IPs internos e endereços MAC. No entanto, a VM encerra o SO convidado e perde o estado do aplicativo. Se você precisar manter o SO convidado e o estado do aplicativo, suspenda a VM. Basicamente, ela é redefinida para o estado de ativação e nenhum dado é salvo. Interrompa uma VM se quiser alterar o tipo de máquina, adicionar ou remover discos anexados, alterar a plataforma mínima da CPU, adicionar ou remover GPUs ou aplicar recomendações de tipo de máquina.

A interrupção de uma VM faz com que o Compute Engine envie o sinal de encerramento do ACPI para a VM. Os sistemas operacionais (SO) convidados atuais estão configurados para realizar um encerramento simples antes de desligar em resposta ao sinal relacionado. O Compute Engine aguarda alguns instantes para que o encerramento do SO convidado seja concluído. Em seguida, a VM passa para o estado TERMINATED.

Antes de começar

Restrições

Não é possível interromper e reiniciar uma VM com um SSD local anexado. No entanto, se a VM usar SSDs locais, o Compute Engine não impedirá que você a encerre de dentro do SO convidado. Se você encerrar uma VM usando SSDs locais por meio do SO convidado, não será possível reiniciar a VM e os dados no SSD local serão perdidos. Não se esqueça de migrar os dados importantes do SSD local para um disco permanente ou outra VM antes de excluir a VM.

Faturamento

As VMs no estado TERMINATED não são cobradas por uso por segundo e não afetam sua cota regional de CPU. No entanto, todos os recursos anexados à VM, como discos permanentes e endereços IP externos, são cobrados. até que sejam excluídos. Para não ser cobrado pelos recursos anexados, é possível reconfigurar uma instância interrompida para remover esses recursos e, em seguida, excluí-los.

É possível optar por interromper as VMs que não estão em uso, evitando que você seja cobrado por VMs que não estão ativas. Quando estiver tudo pronto, reinicie as VMs com as mesmas propriedades, metadados e recursos da VM.

Interromper uma VM

Para interromper uma VM, use o Console do Google Cloud, a ferramenta gcloud ou a API do Compute Engine para criar um anexo da VLAN de monitoramento.

Console

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

    Acessar instâncias de VM

  2. Selecione uma ou mais VMs que você quer interromper.

  3. Clique em Interromper.

gcloud

Para interromper uma VM, use o comando gcloud compute instances stop e especifique uma ou mais VMs que você quer interromper:

gcloud compute instances stop VM_NAME

Substitua VM_NAME pelo nome da VM que você quer parar.

API

Para interromper uma VM, crie uma solicitação POST usando o método instances.stop:

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

Substitua:

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

Uma VM TERMINATED ainda existe com as configurações e os metadados da instância, mas perde os dados na memória e o estado da máquina virtual. Todos os recursos anexados à VM encerrada permanecem anexados até que você os desanexe manualmente ou exclua a VM.

Quando uma VM está no estado TERMINATED, é possível reiniciá-la ou excluí-la. Se você não planeja reiniciar a VM, exclua-a.

Interromper uma VM pelo SO

Opcionalmente, é possível interromper uma VM por meio do SO convidado usando o comando sudo shutdown -h now ou sudo poweroff. Use esses comandos para interromper uma VM que usa SSDs locais. Execute um destes comandos enquanto estiver conectado à VM:

sudo shutdown -h now
sudo poweroff

Reiniciar uma instância interrompida que não tem um disco criptografado

Para reiniciar uma VM interrompida, use o método instances().start. Esse método inicializa uma VM interrompida que está no estado TERMINATED.

Uma VM no estado TERMINATED pode ser reiniciada com o método start. No entanto, métodos como reset() e sudo reboot só funcionam com VMs em execução no momento. Quase todas as VMs, incluindo VMs preemptivas, podem ser reiniciadas se a VM estiver em um estado TERMINATED.

Console

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

    Acessar instâncias de VM

  2. Selecione uma ou mais VMs que você quer interromper.

  3. Clique em Iniciar / continuar.

gcloud

Para iniciar uma VM, use o comando gcloud compute instances start e especifique uma ou mais VMs que você quer iniciar:

gcloud compute instances start VM_NAME

Substitua VM_NAME pelo nome da VM que você quer iniciar.

API

Para iniciar uma VM, crie uma solicitação POST usando o método instances.start:

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start

Substitua:

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

Para reiniciar a instância usando as bibliotecas de cliente, crie uma solicitação para o método instances().start:

def restartInstance(auth_http, gce_service):
  request = gce_service.instances().start(project="myproject", zone="us-central1-a", instance="example-instance")
  response = request.execute(auth_http)

  print response

Reiniciar uma VM que tem discos criptografados

Se a VM a ser reiniciada usar chaves de criptografia fornecidas pelo cliente, forneça essas chaves ao reiniciá-la.

Console

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

    Acessar instâncias de VM

  2. Selecione a VM que você quer iniciar.

  3. Clique em Iniciar / continuar. Uma janela se abre, em que é possível especificar as chaves de criptografia para os dispositivos anexados a essa VM.

  4. Especifique as chaves de criptografia de cada um dos discos criptografados anexados a essa VM.

  5. Clique em Iniciar para iniciar a VM.

gcloud

Para iniciar uma VM que usa chaves de criptografia, use o comando gcloud compute instances start com a sinalização --csek-key-file. Se você estiver usando uma chave incorporada por RSA, utilize o comando gcloud beta:

gcloud compute instances start VM_NAME \
    --csek-key-file ENCRYPTION_KEY_FILE

Substitua:

  • VM_NAME: o nome da VM que você quer iniciar.
  • ENCRYPTION_KEY_FILE: o caminho relativo para o arquivo JSON que contém a chave de criptografia. Essa chave é usada para criptografar discos permanentes anexados à VM. Para mais informações, consulte Formato de arquivos da chave de criptografia.

API

Para iniciar uma VM que tenha chaves de criptografia, crie uma solicitação POST usando o método instances.startWithEncryptionKey:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/startWithEncryptionKey
    {
      "disks": [
        {
           "source": "DISK_URL",
           "diskEncryptionKey": {
             "ENCRYPTION_TYPE": "ENCRYPTION_KEY"
           }
        }
      ]
    }
 

Substitua:

  • PROJECT_ID: o projeto em que a VM está.
  • ZONE: a zona em que a VM está localizada.
  • VM_NAME: o nome da VM que você quer iniciar.
  • DISK_URL: o URL do recurso correspondente ao nome completo do recurso do disco anexado, criptografado com uma chave de criptografia fornecida pelo cliente
  • ENCRYPTION_TYPE: o tipo de criptografia de disco que você está usando: rawKey, kmsKeyName ou rsaEncryptedKey. Ao usar rsaEncryptedKey, você precisa usar a API Beta em vez da API v1.
  • ENCRYPTION_KEY: a chave de criptografia que você usa para criptografar os discos permanentes que estão anexados à VM. As chaves do tipo rawKey ou rsaEncryptedKey precisam ser codificadas em base64. Prepare uma chave do tipo rsaEncryptedKey seguindo as instruções em encapsulamento de chaves RSA.

Redefina uma VM

Redefinir uma VM é como fazer uma reinicialização forçada no computador: ou você pressiona um botão de redefinição ou mantém pressionado o botão liga/desliga. A reinicialização forçada limpa o conteúdo da memória da máquina e redefine a VM para o estado inicial. A VM não executa um encerramento simples do SO convidado. Durante todo esse processo, ela permanece no estado RUNNING.

Para redefinir uma VM em execução, use o Console do Google Cloud, a ferramenta gcloud ou a API do Compute Engine.

Console

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

    Acessar instâncias de VM

  2. Selecione uma ou mais VMs que você quer redefinir.

  3. Clique em Redefinir.

gcloud

Para redefinir uma VM em execução, use o comando gcloud compute instances reset e especifique uma ou mais VMs que você quer redefinir:

gcloud compute instances reset VM_NAME

Substitua VM_NAME pelo nome da VM que você quer redefinir.

API

Para redefinir uma VM, crie uma solicitação POST usando o método instances.reset:

 POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/reset

Substitua:

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

Para redefinir a VM usando bibliotecas de cliente, crie uma solicitação para o método instances().reset:

def resetInstance(auth_http, gce_service):
  request = gce_service.instances().reset(project="myproject", zone="us-central1-a", instance="example-instance")

  print response

Quando você executa o comando reset, a operação de zona posterior retorna DONE após o encerramento da VM.

Outros métodos de reinicialização

Também é possível redefinir a VM usando os seguintes métodos:

  • sudo reboot (somente Linux): chame esse método de dentro da VM. Esse método limpa a memória e reinicializa a VM com os metadados, a imagem e os discos permanentes originais. Esse comando não escolhe as versões atualizadas da imagem, e a VM retém o mesmo endereço IP temporário. Isso é parecido com a ação para reiniciar seu computador.
  • Reinicializando uma VM do Windows: é possível reinicializar uma VM do Windows, semelhante ao sudo reboot no exemplo anterior, usando o menu Iniciar. No menu Iniciar, clique na seta ao lado de Sair e depois em Reiniciar.

A seguir