Migração em tempo real

O Compute Engine oferece migração em tempo real para manter as instâncias da 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 suas VMs sejam reinicializadas. Isso permite que o Google realize manutenção integral para manter a infraestrutura protegida e confiável sem interromper nenhuma de 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 interface 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 do 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 de 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, dados de armazenamento em blocos e volumes, sistema operacional e estado do aplicativo, configurações de rede, 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 alteração de arquivo indicando que uma nova versão da 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 um único 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 o host é 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 desligamento parcial na pré-migração, a VM ainda está 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 desligamento parcial na 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 desligamento 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 alterações.

  • Durante o blecaute parcial na pós-migração, a VM é executada na VM 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 de e para a VM de destino.

Por fim, a migração está completa e o sistema exclui a VM de origem. É possível ver que 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 com um alto nível de escrutínio. 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, articulaçã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 encerrar e, opcionalmente, reiniciar. 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.

Para saber mais sobre como lidar com a manutenção do host com GPUs, leia Como lidar com a manutenção do host na documentação de GPUs.

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 junto 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 migrar em tempo real. O comportamento de manutenção de instâncias preemptivas é sempre configurado como TERMINATE por padrão, e essa opção não pode ser alterada. Não é possível usar a opção reinicialização automática para instâncias preemptivas, mas é possível reiniciá-las manualmente depois de serem antecipadas.

Se for preciso alterar para uma instância sem preempção, separe o disco de inicialização de sua instância preemptiva e anexe-o a uma nova instância sem preempção. Também é possível criar um instantâneo do disco de inicialização e usá-lo para criar uma nova instância sem preempção.

A seguir

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

Enviar comentários sobre…

Documentação do Compute Engine