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
- Para usar os exemplos de linha de comando deste guia, siga estas etapas:
- Instale ou atualize a ferramenta de linha de comando gcloud para a versão mais recente.
- Defina uma região e uma zona padrão.
- Para usar os exemplos de API deste guia, configure o acesso à API.
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
No Console do Cloud, acesse a página Instâncias de VM.
Selecione uma ou mais instâncias a serem interrompidas.
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
No Console do Google Cloud, acesse a página Instâncias de VM.
Marque as caixas ao lado de uma ou mais instâncias para iniciar.
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
No Console do Google Cloud, acesse a página Instâncias de VM.
Clique no nome da instância que você quer iniciar. A página de detalhes da instância será aberta.
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.
Especifique as chaves de criptografia de cada um dos discos criptografados anexados a essa instância.
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
oursaEncryptedKey
. Ao usarrsaEncryptedKey
, 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 tiporawKey
oursaEncryptedKey
precisam ser codificadas em base64. Outras etapas precisam ser seguidas para preparar uma chave do tiporsaEncryptedKey
. 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
No Console do Google Cloud, acesse a página Instâncias de VM.
Selecione uma ou mais instâncias para redefinir.
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 porgcloud compute instances create
: é uma reinicialização completamente destrutiva que inicializa a instância com todas as informações passadas paragcloud 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
- Saiba como programar instâncias para iniciar e parar automaticamente.
- Use o console serial interativo para resolver problemas na instância.
- Aprenda a alterar o tipo de máquina.