Como configurar políticas de disponibilidade da instância

O Google Compute Engine faz manutenção regular da 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 por mês 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 ocorre um evento que exija que o Google mova a VM para uma máquina de host diferente. Por exemplo, você pode optar por manter as instâncias de VM em execução enquanto o Compute Engine migra ao vivo essas instâncias para outro host, ou pode optar por terminar as instâncias em vez disso. Você pode atualizar 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 Google 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 de desempenho reduzido.

Ao migrar a instância, o Google Compute Engine informa um evento de sistema que é publicado na lista de operações da zona. É possível analisá-lo 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 Google Compute Engine irá sinalizar à instância para que desligue, esperar por um curto período para que a instância desligue de forma limpa, encerrar a instância e reiniciá-la longe do evento de manutenção. Essa opção é ideal para instâncias que exigem um desempenho máximo constante e o aplicativo geral foi criado para lidar com falhas ou reinicializações da instância.

Quando o Google 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 analisá-lo 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 configurada para encerrar quando um evento de manutenção ocorrer ou se a instância falhar por causa de um problema de hardware subjacente, você poderá configurar o Google Compute Engine para reiniciá-la automaticamente configurando o campo automaticRestart como true. Essa configuração não se aplica se a instância é colocada off-line com uma ação do usuário, como a chamada de sudo shutdown ou durante uma interrupção da zona.

Quando o Google Compute Engine reinicia a instância, ele informa um evento de sistema que é publicado na lista de operações de zona. É possível analisá-lo 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 Platform, da ferramenta de linha de comando gcloud ou da API do Compute Engine.

Console

Para ver uma lista de operações para o projeto, acesse a página "Operações".

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

  2. Para mais detalhes sobre uma operação, clique no respectivo resumo. Por exemplo, para visualizar os detalhes da migração para a instância my-instance, clique em migração automaticamente de uma operação de instância. 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 ver uma lista de operações para o projeto usando o gcloud compute, use o subcomando operations list.

Para ver 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, faça uma solicitação GET para o método zoneOperations.list.

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/operations

em que:

  • [PROJECT_ID] é o código 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://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 definiçã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, assim 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 falha ou é 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 VM.

    Acessar a página "Instâncias da 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 determinar se a instância foi migrada ou encerrada. Por padrão, as instâncias são automaticamente configuradas para reiniciar, a não ser 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 código do seu projeto e a zona da instância:

https://www.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 Google 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 da VM" no Console do Google Cloud Platform.

    Acessar a página "Instâncias da VM".

  2. Clique na instância com as configurações que você quer alterar.
  3. Em Políticas de disponibilidade, clique no botão Editar para alterá-las.

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://www.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 Google Compute Engine should automatically restart your instance
}

Para mais informações, consulte a documentação de referência de 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 são configuradas para encerrar e reiniciar 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.

Você pode 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 Compute Engine API:

POST https://www.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

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Compute Engine