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. Também é possível encerrar 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 continuar em execução enquanto o Compute Engine as migra para outro host ou optar por encerrá-las. 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 de VM, que determina se a ela é migrada em tempo real ou encerrada quando há um evento de manutenção.
  • O comportamento de reinicialização da instância, que determina se a instância é reiniciada automaticamente, caso falhe, ou se é encerrada.

O comportamento de manutenção padrão para as instâncias é migrar em tempo real, mas é possível alterá-lo para encerrar 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

Encerrar e reiniciar (opcional)

Se você não quiser que a instância migre em tempo real, poderá escolher encerrá-la e opcionalmente reiniciá-la. Com essa opção, o Compute Engine sinaliza para que a instância seja encerrada, aguarda brevemente até que ela seja encerrada corretamente, encerra a instância e a reinicia para evitar o 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 encerra e reinicia suas instâncias, ele 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. Eventos de finalização têm o seguinte tipo de operação:

compute.instances.terminateOnHostMaintenance

Quando a instância reinicia, 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 durante o encerramento da instância. Quando a instância reinicia, ela cria um novo SSD local que você precisará formatar e ativar.

Reinicialização automática

Se a instância estiver definida para ser encerrada 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 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 reinicia a instância automaticamente, ele 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 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 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. Captura de tela da página de operações mostrando a migração em tempo real Captura de tela dos 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)"

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

Solicitações de API para operações precisam ser especificadas no nível global, de região ou de zona. Migração em tempo real, encerramento de instâncias e reinicializações automáticas são todas operações em nível de 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

em que:

  • [PROJECT_ID] é o ID do projeto da solicitação;
  • [ZONE] é o nome da zona para essa 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://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c",
 "operationType": "compute.instances.migrateOnHostMaintenance",
 "targetLink": "https://compute.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://compute.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 encerra a instância em vez de migrá-la.
  • automaticRestart: determina o comportamento quando uma instância falha ou é encerrada pelo sistema.

    • [Padrão] true, o Compute Engine reinicia a instância se ela falhar ou for encerrada.
    • false, portanto, o Compute Engine não reinicia a instância se ela falhar ou for encerrada.

É 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 GCP, acesse a página Instâncias de VMs.

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

  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 no gcloud compute, use a sinalização --maintenance-policy para especificar se a instância será migrada ou encerrada. Por padrão, as instâncias são definidas automaticamente para reiniciar, a menos que você forneça a sinalização --no-restart-on-failure.

gcloud compute instances create INSTANCE .. \
    [--maintenance-policy MAINTENANCE_POLICY] \
    [--no-restart-on-failure]

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" # specifies that Compute Engine should automatically restart your instance
  }
}

Para mais informações, consulte a documentação de referência das 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 da 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 Reinicialização automática e Manutenção no host.
    3. Clique em Salvar.

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 \
    [--maintenance-policy BEHAVIOR] \
    [--no-restart-on-failure | --restart-on-failure]

API

Na API, faça uma solicitação para o seguinte URL, substituindo o projeto e a zona pelo código do seu projeto e a zona da instância:

https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/setScheduling

O corpo da solicitação precisa conter o novo valor para as políticas de disponibilidade:

{
  "onHostMaintenance": "migrate"
  "automaticRestart": "true" # specifies that Compute Engine should automatically restart your instance
}

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, é possível 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 são configuradas para serem encerradas e reiniciadas durante os eventos de manutenção, em vez de migrar em tempo real. Você precisa testar como os aplicativos processam esse encerramento e essa 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]

em que:

  • [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âncias para simular eventos de manutenção em mais de uma instância na mesma zona.
  • [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

em que:

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