O Compute Engine faz manutenção regular da própria infraestrutura. Nesta página, você verá os tipos e as frequências aproximadas dessa manutenção, além de como definir opções de disponibilidade de instância para configurar o comportamento de instâncias de VMs quando a manutenção ocorrer. Esta página também descreve como definir uma instância para migração em tempo real quando ocorre um evento de manutenção.
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.
Eventos de manutenção
Os eventos de manutenção do Compute Engine envolvem atualizações de hardware e software. Alguns deles exigem que o Google mova a VM para longe do host em manutenção e o Compute Engine gerencia automaticamente o comportamento de agendamento dessas instâncias. O Compute Engine migra em tempo real as instâncias de VM caso você tenha configurado a política de disponibilidade da instância para usar esse tipo de migração. Isso evita que os aplicativos enfrentem interrupções durante esses eventos. Como alternativa, é possível também interromper as instâncias durante esses eventos em vez de migrá-las em tempo real.
A tabela a seguir separa amplamente os eventos de manutenção do Compute Engine em duas categorias, ilustra cada um deles com exemplos e indica qual exige a migração em tempo real da VM para um host diferente.
Tipo de evento de manutenção | Exemplos | Frequência Aproximada * | Requer migração em tempo real para novo host |
---|---|---|---|
Manutenção do host | Atualização do kernel do host, reparo ou atualização de hardware | Uma vez a cada duas semanas | Sim |
Leve | Atualização no nível do hipervisor, atualização de pilha de rede | 1-2 vezes por semana | Não |
* Observe que estas frequências são aproximações, não garantias. O Compute Engine pode, às vezes, realizar manutenção com mais frequência do que o mencionado aqui.
Como escolher políticas de disponibilidade
A política de disponibilidade de uma instância de VM determina como ela se comporta quando há um evento de manutenção em que o Google precisa mover sua instância de VM para outra máquina host. É possível configurar as instâncias de VM para continuarem em execução enquanto o Compute Engine as migra em tempo real para outro host. Como alternativa, é possível interromper as instâncias. Atualize a política de disponibilidade de uma instância a qualquer momento para controlar a maneira como quer que as instâncias de VM se comportem.
É possível alterar a política de disponibilidade de uma instância definindo estas duas configurações:
- O comportamento de manutenção da instância da VM, que determina se ela será migrada em tempo real ou interrompida quando houver um evento de manutenção.
- O comportamento de reinicialização da instância, que determina se ela será reiniciada automaticamente no caso de falha ou interrupção.
O comportamento de manutenção padrão para as instâncias é migrar em tempo real, mas é possível alterar o comportamento para interromper a instância durante eventos de manutenção.
Migração em tempo real
As instâncias padrão são configuradas para migração em tempo real, em que o Compute Engine automaticamente migra a instância para longe de um evento de manutenção de infraestrutura e ela permanece em execução durante a migração. A instância poderá ter um período curto de desempenho reduzido, embora geralmente a maioria das instâncias não note nenhuma diferença. Isso é ideal para instâncias que exigem tempo de atividade constante e podem tolerar um período curto de desempenho reduzido.
Ao migrar a instância, o Compute Engine informa um evento de sistema que é publicado na lista de operações de zona. É possível analisar esse evento ao visualizar as operações do Compute Engine para uma zona específica. Os eventos de migração em tempo real têm o seguinte tipo de operação:
compute.instances.migrateOnHostMaintenance
Reiniciar (opcional) e interromper
Se não quiser que a instância seja migrada em tempo real, escolha a opção de interrompê-la e reiniciá-la. A reinicialização é opcional. Para que as VMs definidas sejam interrompidas e reiniciadas opcionalmente, o Compute Engine envia um sinal de desligamento suave para encerrar a instância, aguarda 60 segundos para que a instância seja desligada corretamente, encerra a instância e a reinicia fora do evento de manutenção. Se a instância não for encerrada corretamente em 60 segundos, ela será encerrada.
Essa opção é ideal para instâncias que exigem um desempenho máximo constante e o aplicativo como um todo é criado para lidar com falhas ou reinicializações da instância.
Quando o Compute Engine interrompe e reinicializa suas instâncias, ele registra um evento de sistema que é publicado na lista de operações da zona. É possível analisar esse evento ao visualizar as operações do Compute Engine para uma zona específica. Eventos interrompidos têm o seguinte tipo de operação:
compute.instances.terminateOnHostMaintenance
Quando a instância é reinicializada, ela usa o mesmo disco de inicialização permanente e reconecta os discos permanentes secundários configurados. Os dados nesses discos permanecem durante a migração e a reinicialização da instância.
Dados de SSD local não permanecem após a interrupção da instância. Quando a instância é reinicializada, ela cria um novo SSD local que você precisará formatar e montar.
Reinicialização automática
Se a instância estiver definida para ser interrompida quando houver um evento de manutenção, ou se a
instância falhar devido a um problema de hardware subjacente, configure
o Compute Engine para reiniciar a instância automaticamente. Para fazer isso, defina o
campo automaticRestart
como true
. Essa configuração não se aplica se a
instância for colocada off-line com uma ação do usuário, como a chamada de
sudo shutdown
ou durante uma interrupção de zona.
Quando o Compute Engine reinicializa a instância automaticamente, ele informa um evento de sistema publicado na lista de operações de zona. É possível analisar esse evento ao visualizar as operações do Compute Engine para uma zona específica. Os eventos de reinicialização automática têm o seguinte tipo de operação:
compute.instances.automaticRestart
Como visualizar as operações do Compute Engine
É possível visualizar uma lista de operações concluídas por meio do
Console do Google Cloud, da
ferramenta de linha de comando gcloud
ou da
API Compute Engine.
Console
Para ver uma lista de operações para o projeto, acesse a página "Operações".
- Para mais detalhes sobre uma operação, clique no respectivo resumo. Por
exemplo, para visualizar os detalhes de migração da instância
my-instance
, clique na operação Migrar uma instância automaticamente.
gcloud
Para visualizar uma lista de operações do seu projeto
usando gcloud compute
, use o subcomando
operations list
.
Para visualizar a lista de operações em uma zona especificada, adicione a sinalização --filter
.
gcloud compute operations list --filter="zone:(ZONE)"
Substitua ZONE
pela zona em que você quer visualizar uma lista de
operações. Por exemplo, para visualizar a lista de operações em us-cental1-c
,
execute o seguinte comando:
gcloud compute operations list --filter="zone:(us-central1-c)"
NAME TYPE TARGET HTTP_STATUS STATUS TIMESTAMP
systemevent-1543845145000... compute.instances.migrateOnHostMaintenance us-central1-c/instances/my-instance 200 DONE 2018-12-03T05:52:25.000-08:00
API
As solicitações de API para operações precisam ser especificadas no nível global, regional ou de zona. Migração em tempo real, interrupção de instâncias e reinicializações automáticas são todas operações no nível da zona.
Para operações de zona, crie uma solicitação GET
para o método zoneOperations.list
.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations
Substitua o seguinte:
PROJECT_ID
: o ID do projeto desta solicitação;ZONE
: a zona da solicitação.
Deixe o corpo da solicitação vazio.
A seguir, um exemplo de saída para uma solicitação de operação de zona. Nela, os detalhes de uma migração do host são exibidos.
{ "kind": "compute#operation", "id": "3216798767364213712", "name": "systemevent-1543845145000-57c1e7574b840-a195b637-5ff74d9b", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c", "operationType": "compute.instances.migrateOnHostMaintenance", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/instances/my-instance", "targetId": "3070988523247098025", "status": "DONE", "statusMessage": "Instance migrated during Compute Engine maintenance.", "user": "system", "progress": 100, "insertTime": "2018-12-03T05:52:25.000-08:00", "startTime": "2018-12-03T05:52:25.000-08:00", "endTime": "2018-12-03T05:52:25.000-08:00", "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/operations/systemevent-1543845145000-57c1e7574b840-a195b637-5ff74d9b" }
Como definir políticas de disponibilidade
Configure o comportamento de manutenção de uma instância e a configuração de reinicialização automática usando as propriedades onHostMaintenance
e automaticRestart
.
Todas as instâncias são configuradas com valores padrão, a não ser que você especifique outra forma explicitamente.
onHostMaintenance
: determina o comportamento quando ocorre um evento de manutenção que possa causar a reinicialização da instância.- [Padrão]
MIGRATE
, que faz o Compute Engine migrar uma instância em tempo real quando há um evento de manutenção. TERMINATE
, que interrompe uma instância em vez de migrá-la.
- [Padrão]
automaticRestart
: determina o comportamento quando uma instância falha ou é interrompida pelo sistema.- [Padrão]
true
, portanto, o Compute Engine reinicializa a instância se ela falhar ou for interrompida. false
, portanto, o Compute Engine não reinicializa a instância se ela falhar ou for interrompida.
- [Padrão]
É possível alterar as políticas de disponibilidade de uma instância ao
criá-la
ou depois de criá-la
usando o método
setScheduling
.
Como definir opções durante a criação da instância
Console
- No Console do Cloud, acesse a página Instâncias de VM.
- Clique em Criar instância.
- Na página Criar uma nova instância, preencha as propriedades da sua instância.
- Expanda a opção Gerenciamento, segurança, discos, rede, locatário único.
- Em Política de disponibilidade, defina as opções Reinicialização automática e Na manutenção do host.
- Clique em Criar para criar a instância.
gcloud
Para especificar as políticas de disponibilidade de uma nova instância em gcloud compute
, use
a sinalização --maintenance-policy
para especificar se a instância será
migrada ou interrompida. Por padrão, as instâncias são definidas automaticamente
para reinicialização, a menos que você forneça a sinalização --no-restart-on-failure
.
gcloud compute instances create INSTANCE_NAME \
--maintenance-policy MAINTENANCE_POLICY \
[--no-restart-on-failure]
Substitua o seguinte:
INSTANCE_NAME
: o nome da instância;MAINTENANCE_POLICY
: a política dessa instância (TERMINATE
ouMIGRATE
)
API
Na API, faça uma solicitação POST
para o seguinte URL, substituindo o projeto e a zona pelo ID do projeto e a zona da instância:
https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances
com os parâmetros onHostMaintenance
e automaticRestart
como parte do
corpo da solicitação:
{
"name": "example-instance",
"description": "Front-end for real-time ingest; don't migrate.",
...
// User options for influencing this Instance's life cycle.
"scheduling": {
"onHostMaintenance": "MIGRATE",
"automaticRestart": true
}
}
Para mais informações, consulte a documentação de referência de instâncias.
Como atualizar opções para uma instância
Console
- Acesse a página "Instâncias de VM" no Console do Google Cloud.
- Clique na instância com as configurações que você quer alterar. A página "Detalhes da instância" é aberta.
- Na página "Detalhes da instância", siga estas etapas:
- Clique no botão Editar na parte superior da página.
- Em Políticas de disponibilidade, atualize a política, conforme necessário. Na seção Políticas de disponibilidade, defina as opções Na manutenção do host e Reinicialização automática.
- Clique em Save.
gcloud
Para atualizar as políticas de disponibilidade de uma instância, use o comando
instances set-scheduling
com os mesmos parâmetros e sinalizações usados no comando
de criação da instância acima:
gcloud compute instances set-scheduling INSTANCE_NAME \
--maintenance-policy MAINTENANCE_POLICY \
[--no-restart-on-failure | --restart-on-failure]
Substitua o seguinte:
INSTANCE_NAME
: o nome da instância;MAINTENANCE_POLICY
: a política dessa instância (TERMINATE
ouMIGRATE
)
API
Na API, é possível fazer uma solicitação para o seguinte URL, substituindo o ID do projeto, a zona e o nome da instância pelos seus próprios ID do projeto, zona e nome da instância:
https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/example-instance/setScheduling
O corpo da solicitação precisa conter o novo valor para as políticas de disponibilidade:
{
"onHostMaintenance": "MIGRATE",
"automaticRestart": true
}
Para mais informações, consulte a
documentação de referência
instances().setScheduling
.
Como testar suas políticas de disponibilidade
Depois de definir suas políticas de disponibilidade, você pode simular eventos de manutenção para testar os efeitos dessas políticas de disponibilidade nos aplicativos. Por exemplo, é possível simular um evento de manutenção em suas instâncias em uma das seguintes situações:
- Você tem instâncias configuradas para migrar em tempo real durante eventos de manutenção e precisa testar os efeitos da migração em tempo real nos aplicativos.
- Você tem jobs em lote em execução em instâncias de VM preemptivas e precisa testar como os aplicativos manipulam a preempção e o desligamento de uma ou mais instâncias.
- Suas instâncias estão configuradas para serem interrompidas e reinicializadas durante os eventos de manutenção em vez de serem migradas em tempo real, e você precisa testar como os aplicativos processam o encerramento e a reinicialização.
Eventos de manutenção simulados estão sujeitos a limites de taxa de API específicos.
É possível simular um evento de manutenção em uma instância usando a ferramenta de linha de comando gcloud
ou uma solicitação de API.
gcloud
Execute o
comando instances simulate-maintenance-event
para forçar uma instância a ativar a ação da política de manutenção
configurada:
gcloud compute instances simulate-maintenance-event INSTANCE_NAME \
--zone ZONE
Substitua o seguinte:
INSTANCE_NAME
: o nome da instância em que você quer simular o evento de manutenção. É possível especificar vários nomes de instância separados por espaços únicos para simular eventos de manutenção em mais de uma instância na mesma zona. Por exemplo,instance-1 instance-2 instance-3
.ZONE
: a zona em que a instância está localizada.
API
Na API, faça uma solicitação para o
método compute.instances.simulateMaintenanceEvent
na
API Compute Engine:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/simulateMaintenanceEvent
Substitua o seguinte:
PROJECT_ID
: o ID do projeto desta solicitação;INSTANCE_NAME
: o nome da instância em que você quer simular o evento de manutenção;ZONE
: a zona em que a instância está localizada.
Para mais informações sobre esse método, consulte a
documentação de referência
de instances().simulateMaintenanceEvent
.
A seguir
- Saiba mais sobre migração em tempo real.
- Saiba como detectar um evento de migração em tempo real.