Como interromper e iniciar uma instância

Nesta página, você entenderá como interromper e iniciar uma instância de VM. Para ver uma tabela que compara as diferenças entre interromper, redefinir e excluir uma instância, consulte Ciclo de vida da instância.

É possível interromper uma instância temporariamente, caso não precise mais dela, e reiniciá-la depois. Uma instância interrompida mantém seus discos permanentes, seus IPs internos, seus IPs estáticos externos e seus endereços MAC. No entanto, ela encerra o SO convidado e perde o estado do aplicativo. Basicamente, ela é redefinida para o estado de ativação e nenhum dado é salvo. Interrompa uma instância 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 dimensionamento.

Interromper uma instância faz com que o Compute Engine envie o sinal ACPI Power Off (em inglês) para ela. Os sistemas operacionais convidados atuais estão configurados para realizar um encerramento simples antes de desligar em resposta ao sinal relacionado. O Compute Engine aguarda um breve período para que o convidado termine o encerramento e passa a instância para o estado TERMINATED.

Uma instância interrompida não incorre em cobranças, mas todos os recursos vinculados à instância continuam sendo cobrados. Por exemplo, você será cobrado por discos permanentes e endereços IP externos de acordo com a tabela de preços, mesmo que a instância esteja interrompida. Para não ser cobrado pelos recursos anexados, é possível reconfigurar uma instância interrompida para não usar esses recursos e, em seguida, excluí-los.

Antes de começar

Restrições

Não é possível interromper uma instância com um SSD local anexado. Nesse caso, tome muito cuidado, já que o Compute Engine não impede que você a desligue a partir do SO convidado.

SSDs locais

Não é possível interromper uma instância que tenha um SSD local anexado. Em vez disso, é necessário migrar os dados importantes do SSD local para um disco permanente ou outra instância antes de excluí-la por definitivo. O Compute Engine não impede que você desligue o sistema operacional convidado em uma instância com um SSD local. Portanto, tome bastante cuidado ao desligar os sistemas operacionais convidados nas suas instâncias.

Cobrança

O Google não cobra por recursos de VM depois que as VMs estão no estado TERMINATED.

Especificamente, quando uma VM tem o estado RUNNING e está sendo interrompida (mas ainda não está no estado TERMINATED), o Google cobra por uso de vCPUs, memória, GPUs e SSD local. Depois que o estado STOPPING termina e uma VM entra no estado TERMINATED, o Google interrompe o faturamento para os recursos mencionados acima.

Lembre-se de que outros recursos anexados a uma VM TERMINATED continuam a gerar cobranças, por exemplo, discos permanentes e endereços IP externos estáticos.

Para mais informações sobre estados da instância, leia a documentação do ciclo de vida da instância.

Como interromper uma instância

Para interromper uma instância, use o Console do Google Cloud, a ferramenta gcloud ou a API.

Console

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

    Acessar a página "Instâncias de VM"

  2. Selecione uma ou mais instâncias que você quer interromper.
  3. Clique em Interromper.

gcloud

Use o comando instances stop e especifique uma ou mais instâncias que você quer interromper.

gcloud compute instances stop example-instance-1 example-instance-2

API

Na API, crie uma solicitação POST para interromper uma instância.

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/zone/instances/example-instance/stop

Uma instância 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 que ainda estiverem anexados à instância encerrada permanecerão anexados até que você os separe manualmente ou exclua a instância.

Com a instância no estado TERMINATED, será possível reiniciá-la ou excluí-la. Também é possível deixar a instância no estado TERMINATED indefinidamente. No entanto, exclua a instância se você não planeja reiniciá-la.

Como interromper uma instância por meio do SO

Outra opção é interromper uma instância pelo sistema operacional convidado.

Linux

Use os comandos sudo shutdown -h now ou sudo poweroff. Execute um destes enquanto estiver conectado à máquina virtual:

sudo shutdown -h now
sudo poweroff

Windows

Para interromper uma instância de VM com base no sistema operacional Windows, vá até o menu Iniciar, clique na seta ao lado de Finalizar sessão e, em seguida, clique em Encerrar.

Como iniciar uma instância interrompida

Para iniciar uma instância interrompida, use o método instances().start. Isso inicializa uma instância de máquina virtual interrompida que está atualmente no estado TERMINATED.

Uma instância no estado TERMINATED pode ser reiniciada com o método start. No entanto, métodos como reset() e sudo reboot só funcionam com instâncias em execução. É possível reiniciar a maioria das instâncias desde que esteja em um estado TERMINATED, com exceção das instâncias com SSDs locais anexados, que não podem ser reiniciadas.

Console

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

    Acessar a página "Instâncias de VM"

  2. Selecione as instâncias que você quer reiniciar.
  3. Clique no botão Iniciar.

gcloud

Para redefinir a instância usando a gcloud compute:

gcloud compute instances start example-instance

API

Na API, faça uma solicitação POST para o URI a seguir, usando o projeto, a zona e o nome de instância adequados:

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/zone/instances/example-instance/start

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="zone", instance="example-instance")
  response = request.execute(auth_http)

      print response

Para ver mais informações sobre esse método, consulte a documentação de referência instances().start.

Como iniciar uma instância interrompida que tenha discos criptografados

Se a instância 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 VMs.

    Acessar a página "Instâncias de VM"

  2. Clique no nome da instância que quer iniciar. A página de detalhes da instância será aberta.
  3. Clique em Iniciar. Uma janela se abre, em que é possível especificar as chaves de criptografia para os dispositivos anexados a essa instância.
  4. Especifique as chaves de criptografia de cada um dos discos criptografados anexados a essa instância.
  5. Clique em Iniciar para iniciar a instância.

gcloud

Forneça a chave usando a sinalização --csek-key-file e o nome do disco ao iniciar a instância. Se você estiver usando uma chave incorporada por RSA, utilize o componente gcloud beta:

gcloud compute instances start instance-name \
  --csek-key-file encryption-key

Substitua:

  • instance-name: o nome da instância.
  • encryption-key: a chave de criptografia que você usa para criptografar os discos permanentes que estão anexados à instância.

API

Na API, crie uma solicitação POST para iniciar a instância usando uma chave de criptografia. Se estiver usando uma chave incorporada por RSA, faça a solicitação para a Beta API, em vez de para a v1 API.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name/startWithEncryptionKey
{
  "instanceEncryptionKey": {
    "rsaEncryptedKey": "encryption-key"
  },
  "disk": [
    {
       "source": "disk-name",
       "diskEncryptionKey": {
         "rsaEncryptedKey": "encryption-key"
       }
    }
  ]
}

Substitua:

  • project-id: o código do projeto.
  • zone: a zona para esta instância.
  • instance-name: o nome da instância.
  • encryption-key: a chave de criptografia que você usa para criptografar os discos permanentes que estão anexados à instância.
  • disk-name o disco anexado que é criptografado com uma chave de criptografia fornecida pelo cliente.

Como redefinir uma instância

Redefinir uma instância é 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 máquina virtual para o estado inicial. A instância não executa um encerramento simples do SO convidado. Durante todo esse processo, ela permanece no estado RUNNING.

Quando você redefine uma instância, nenhuma das propriedades da instância é alterada. A instância retém propriedades como seu endereço IP temporário, seu endereço IP externo estático, seu disco permanente e seu tipo de máquina. No entanto, todos os dados armazenados na memória são redefinidos. Para manter os dados armazenados na memória, você deve fazer backup dos dados.

Você pode redefinir uma instância em execução usando o botão "Redefinir" no Console do Cloud, o comando instances reset em gcloud, ou fazendo uma solicitação POST na API.

Console

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

    Acessar a página "Instâncias de VM"

  2. Marque as caixas ao lado das instâncias que você quer redefinir.
  3. Clique no botão Redefinir para redefinir as instâncias.

gcloud

Para redefinir a instância usando a gcloud compute:

gcloud compute instances reset example-instance

API

Na API, faça uma solicitação POST para o URI a seguir, usando o projeto, a zona e o nome de instância adequados:

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/zone/instances/example-instance/reset

Para redefinir a instância usando as 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="zone", instance="example-instance")
  response = request.execute(auth_http)

  print response

Para ver mais informações sobre esse método, consulte a documentação de referência instances().reset.

Depois de executar o comando reset, a operação de zona subsequente retorna como DONE após o encerramento completo e início da reinicialização da instância.

Como usar outros métodos de reinicialização

Como alternativa, você pode redefinir sua instância usando os seguintes comandos:

  • sudo reboot (somente Linux): chamado de dentro da instância. Limpa a memória e reinicializa a instância com os metadados, a imagem e os discos permanentes originais. sudo reboot não escolhe as versões atualizadas da imagem, e a instância retém o mesmo endereço IP temporário. Isso é parecido com a ação para reiniciar seu computador.
  • gcloud compute instances delete seguido por gcloud compute instances create: é uma reinicialização completamente destrutiva que inicializa a instância com todas as informações passadas para gcloud compute instances create. Selecione novas imagens e outros recursos que pretende usar. A instância reiniciada terá provavelmente um endereço IP diferente. Esse método talvez troque a máquina física que hospeda a instância.

A seguir