Migração em tempo real

O Compute Engine oferece migração em tempo real para manter as instâncias de máquina virtual em execução mesmo quando ocorre um evento do sistema host, como uma atualização de software ou hardware. O Compute Engine migra em tempo real suas instâncias em execução para outro host na mesma zona em vez de exigir que as VMs sejam reinicializadas. Isso permite que o Google realize manutenção integral para manter a infraestrutura protegida e confiável sem interromper nenhuma das suas VMs.

A migração em tempo real mantém suas instâncias em execução durante:

  • upgrades e manutenção de infraestrutura regulares;
  • manutenção da rede e da rede elétrica nos data centers;
  • hardware com falha, como memória, CPU, placas de rede, discos, energia e assim por diante. Isso é feito com base no melhor esforço. Se um hardware falha completamente ou impede a migração em tempo real, a VM falha e reinicia automaticamente e um hostError é registrado;
  • upgrades da BIOS e do SO do host;
  • upgrades relacionados à segurança, com a necessidade de responder rapidamente;
  • mudanças na configuração do sistema, incluindo alteração no tamanho da partição raiz do host, para o armazenamento da imagem e dos pacotes do host.

A migração em tempo real não altera nenhum atributo ou propriedade da própria VM. O processo de migração em tempo real apenas transfere uma VM em execução de uma máquina host para outra na mesma zona. Todas as propriedades e atributos da VM permanecem inalterados, incluindo endereços IP internos e externos, metadados de instâncias, volumes e dados de armazenamento em blocos, sistema operacional e estado do aplicativo, configurações e conexões de rede e assim por diante.

Como funciona o processo de migração em tempo real?

Quando o Google migra uma instância de VM em execução de um host para outro, ele move o estado completo da instância da origem para o destino de uma maneira transparente para o sistema operacional convidado e qualquer um que se comunique com ele. Existem muitos componentes envolvidos em fazer isso funcionar perfeitamente, mas as etapas de alto nível estão ilustradas aqui:

Componentes da migração em tempo real

O processo começa com uma notificação de que as VMs precisam ser despejadas da máquina host atual. A notificação pode começar com uma mudança de arquivo indicando que uma nova versão de BIOS está disponível, uma manutenção de programação de operação de hardware ou um sinal automático de uma falha de hardware iminente.

O software de gerenciamento de cluster do Google vigia constantemente esses eventos e os programa com base em políticas que controlam os data centers, como taxas de utilização de capacidade e o número de VMs que apenas um cliente pode migrar de uma só vez.

Depois que uma VM é selecionada para migração, o Google notifica o convidado de que uma migração está prestes a acontecer. Após um período de espera, um host de destino é selecionado e é solicitado a configurar uma nova VM "de destino" vazia para receber a VM "de origem" de migração. A autenticação é usada para estabelecer uma conexão entre a origem e o destino.

Há três estágios envolvidos na migração da VM:

  • Durante o blecaute parcial na pré-migração, a VM ainda estará sendo executada na origem, enquanto a maioria dos estados é enviada da origem para o destino. Por exemplo, o Google copia toda a memória do convidado para o destino, enquanto rastreia as páginas que foram alteradas na origem. O tempo gasto no blecaute parcial durante a pré-migração é uma função do tamanho da memória do convidado e da taxa em que as páginas estão sendo alteradas.

  • Durante o blecaute, que é um momento muito breve quando a VM não está sendo executada em lugar algum, ela está em pausa, e todo o estado restante necessário para começar a executar a VM no destino é enviado. A VM entra no estágio de blecaute quando o envio de estado durante o período de blecaute parcial na pré-migração atinge um ponto de redução de retornos. Um algoritmo é usado para equilibrar o número de bytes da memória que está sendo enviada em relação à taxa em que a VM convidada está fazendo mudanças.

  • Durante o blecaute parcial na pós-migração, a VM de origem é executada na de destino. A VM de origem está presente e pode fornecer funcionalidades de suporte para a VM de destino. Por exemplo, até que a malha da rede tenha alcançado a nova localização da VM de destino, a VM de origem fornece serviços de encaminhamento para pacotes provenientes e destinados à VM de destino.

Por fim, a migração está completa e o sistema exclui a VM de origem. Veja se a migração ocorreu nos registros da VM. A migração em tempo real é um componente essencial da nossa plataforma, de modo que o Google a testa continuamente de maneira minuciosa. Durante o teste, utilizamos injeção de falhas para acionar falhas em todos os pontos de interesse do algoritmo de migração. Geramos falhas ativas e passivas para cada componente. Alcançar este processo complexo e multifacetado exige integração profunda em toda a infraestrutura e um poderoso conjunto de processos de programação, orquestração e automação.

Migração em tempo real e GPUs

Instâncias com GPUs anexadas não podem ser migradas em tempo real. Elas precisam ser configuradas para serem encerradas e, opcionalmente, reiniciadas. O Compute Engine oferece uma notificação de 60 minutos antes que uma instância de VM com uma GPU anexada seja encerrada. Para saber mais sobre esses avisos de eventos de manutenção, leia Como receber notificações de migração em tempo real.

Leia Como lidar com a manutenção do host na documentação de GPUs para mais informações.

Migração em tempo real e SSDs locais

O Compute Engine também pode migrar em tempo real instâncias com SSDs locais anexados, movendo as VMs com o SSD local para uma nova máquina antes de qualquer manutenção planejada.

Migração em tempo real para instâncias preemptivas

Não é possível configurar uma instância preemptiva para realizar a migração em tempo real. O comportamento de manutenção de instâncias preemptivas é sempre definido como TERMINATE por padrão, e não é possível alterar essa opção. Como não é possível definir a opção de reinicialização automática para instâncias preemptivas, reinicie manualmente essas instâncias novamente a partir da página Detalhes da instância de VM após forçar a interrupção delas.

  1. Acesse a página Instâncias de VMs.
  2. Selecione sua instância preemptiva.
  3. Na parte superior da página Detalhes da instância de VM, clique em Iniciar.

Se você precisar tornar sua instância não preemptiva, remova o disco de inicialização da instância preemptiva e anexe-o a uma nova instância que não esteja configurada para ser preemptiva. Também é possível criar um snapshot do disco de inicialização e usá-lo para criar uma nova instância sem capacidade de preempção.

A seguir