Como interromper e iniciar uma instância


Nesta página, você verá como interromper e iniciar uma instância de máquina virtual (VM, na sigla em inglês). Observe que o Compute Engine usa STOP e TERMINATE alternadamente. Para suspender e retomar uma instância, leia Como suspender e retomar uma instância. Para mais informações sobre como interromper e suspender 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 os discos permanentes, IPs internos e 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 de desligamento da ACPI para a instância. 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.

Se você precisar manter o SO convidado e o estado do aplicativo, suspenda a instância.

Antes de começar

Restrições

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

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. Nesse caso, tome cuidado, já que o Compute Engine não impede que você desligue o SO convidado em uma instância com SSD local.

Faturamento

As instâncias que estão no estado TERMINATED não são cobradas pelo uso por segundo e não são contabilizadas na cota de CPU regional. Portanto, é possível optar por interromper as instâncias que não estão em uso, poupando a cobrança de instâncias que não estão ativas. Quando estiver pronto, volte e inicie as mesmas instâncias novamente, com propriedades, metadados e recursos iguais a antes.

Suas instâncias não são cobradas pelo uso por segundo enquanto estão no estado TERMINATED, mas todos os recursos anexados à máquina virtual, como IPs estáticos e discos permanentes, são cobrados até serem excluídos.

Como interromper uma instância

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

Console

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

    Acessar instâncias de VM

  2. Selecione uma ou mais instâncias a serem interrompidas.

  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/us-central1-f/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 anexados à instância encerrada permanecem anexados até que você os desanexe 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 planejar reiniciá-la.

Como interromper uma instância por meio do SO

Outra opção é interromper uma instância por meio do sistema operacional convidado com o comando sudo shutdown -h now ou sudo poweroff. Execute um destes comandos enquanto estiver conectado à máquina virtual:

me@example-instance:~$ sudo shutdown -h now
me@example-instance:~$ sudo poweroff

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

Para iniciar uma instância interrompida, use omé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. Quase todas as instâncias podem ser reiniciadas enquanto estiverem no estado TERMINATED.

Console

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

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

  2. Marque as caixas ao lado de uma ou mais instâncias para iniciar.

  3. Clique em 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:

https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/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="us-central1-a", instance="example-instance")
  response = request.execute(auth_http)

  print response

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

Como reiniciar uma instância que tem 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 VM.

    Acessar a página Instâncias de VM

  2. Clique no nome da instância que você quer iniciar. A página de detalhes da instância será aberta.

  3. Clique no botão 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

Ao iniciar a instância, forneça a chave com a sinalização --csek-key-file e o nome do disco. 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 o seguinte:

  • 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 o método instances.startWithEncryptionKey.

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

Substitua:

  • PROJECT_ID: o ID do projeto.
  • ZONE: a zona desta instância.
  • INSTANCE_NAME: o nome da instância.
  • 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 à instância. As chaves do tipo rawKey ou rsaEncryptedKey precisam ser codificadas em base64. Outras etapas precisam ser seguidas para preparar uma chave do tipo rsaEncryptedKey. Para mais informações, consulte Encapsulamento de chave RSA.
  • DISK_URL: o URL do recurso correspondente ao nome completo do recurso do disco anexado, criptografado com uma chave de criptografia fornecida pelo cliente.

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.

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

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

  2. Selecione uma ou mais instâncias para redefinir.

  3. Clique em Redefinir.

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:

https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/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="us-central1-a", instance="example-instance")

  print response

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

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

Como usar outros métodos de reinicialização

Para reiniciar sua instância, use também os seguintes métodos:

  • sudo reboot (somente Linux): chame esse método de dentro da instância. Esse método limpa a memória e reinicializa a instância com os metadados, a imagem e os discos permanentes originais. Esse comando 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.
  • Reinicializando uma instância do Windows: é possível reinicializar uma instância do Windows, semelhante ao sudo reboot acima, usando o menu Iniciar. No menu Iniciar, clique na seta ao lado de Sair e depois em Reiniciar.
  • 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