Como configurar políticas de disponibilidade da instância

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

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, você pode optar por interrompê-la e reiniciá-la. A reinicialização é opcional. Com essa opção, o Compute Engine sinaliza para que a instância seja desligada, aguarda brevemente até que ela seja encerrada corretamente, interrompe a instância e a reinicia depois do evento de manutenção. Essa opção é ideal para instâncias que exigem um desempenho máximo constante. O aplicativo geral é 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".

  1. Acessar a página "Operações"

  2. 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. A página de operações que mostra uma migração em tempo real. Detalhes da migração em tempo real.

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

É 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

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

    Acessar instâncias de VM

  2. Clique em Criar instância.
  3. Na página Criar uma nova instância, preencha as propriedades da sua instância.
  4. Expanda a opção Gerenciamento, segurança, discos, rede, locatário único.
  5. Em Política de disponibilidade, defina as opções Reinicialização automática e Na manutenção do host.
  6. 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 ou MIGRATE)

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

  1. Acesse a página "Instâncias de VM" no Console do Google Cloud.

    Acessar a página Instâncias de VM

  2. Clique na instância com as configurações que você quer alterar. A página "Detalhes da instância" é aberta.
  3. Na página "Detalhes da instância", siga estas etapas:
    1. Clique no botão Editar na parte superior da página.
    2. 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.
    3. 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 ou MIGRATE)

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