Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Quão disruptiva é a *Live* Migration do Google Compute Engine?

By Aviv LauferApr 23, 20183 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

1 wyzvzjl4xoz hqqiopxu0a

O Google Compute Engine oferece uma tecnologia bem peculiar chamada "Live Migration", que mantém suas instâncias no ar mesmo quando o host fica indisponível, como em atualizações de software ou hardware. Em vez de exigir o reinício das instâncias, o Google Compute Engine migra a instância em execução para outro host físico na mesma zona de rede.

A Live Migration permite ao Google realizar tarefas de manutenção essenciais para manter a infraestrutura protegida e confiável, sem interromper nenhuma das suas instâncias. É um recurso muito interessante, e o Google afirma que:

"sua instância pode passar por um curto período de desempenho reduzido, embora, em geral, a maioria das instâncias não perceba diferença alguma."

Naturalmente, quisemos colocar essa afirmação à prova ;-) Felizmente, dá para simular um evento de manutenção em uma instância com facilidade, seja pela ferramenta de linha de comando gcloud, seja por uma chamada de API:

gcloud beta compute instances simulate-maintenance-event [INSTANCE_NAME] \
--zone [ZONE]
OR
POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/simulateMaintenanceEvent

Para deixar o teste mais próximo de um cenário real, decidimos gerar carga na instância de teste e, em seguida, disparar um evento de Live Migration para ver o impacto.

Com o Cloud Launcher, criamos uma máquina n1-standard-1 rodando nginx (da Bitnami). Para gerar carga, escolhemos o K6 — uma ferramenta open source de teste de carga voltada a desenvolvedores e escrita em Go. Optamos por armazenar os resultados no InfluxDB e visualizá-los no Grafana.

Veja o nosso script:

1 c5h8lyikn52mhubnhecxjq

Para começar a gerar carga, executamos o K6 assim:

k6 run — out influxdb=http://x.x.x.x:8086/myk6db — vus 50 — duration 10m — rps 6000 test.js

Cerca de 60 segundos depois, disparamos a simulação do evento de manutenção.

1 se um2 uia zye1egbaebg1 d9whzbyofndonludzef60g

Como dá para notar, por cerca de 2 segundos o tempo de resposta ficou bem mais alto e a instância não respondeu a nenhuma requisição nesse intervalo. Ainda assim, não houve erros e o cliente continuou sendo atendido durante a migração.

Repetimos o mesmo teste em uma instância maior (n1-standard-4):

1 pzdsy4umhyfqolqgfoaihq1 ce2p8ycbyo afnkrjj2wha

Por fim, fizemos mais um teste em uma instância ainda maior, atendendo 10k requisições por segundo (contra 6k nos testes anteriores).

1 cj 1wi2cdm80lxjlwcfqma1 cxxywqedptzzqtfr5mpt a

Como mostram os gráficos, o comportamento se mantém consistente entre workloads e tipos diferentes de instância. Espere cerca de 2s em que a instância não responderá durante a live migration, mas nenhuma conexão será derrubada e não observamos nenhum erro nos nossos testes.

A Live Migration é um recurso legal e único na nuvem pública, e é a opção padrão ao criar instâncias no Google Compute Engine. Agora você também pode testar como sua aplicação vai se comportar durante uma live migration.

Quer mais conteúdos? Confira nosso blog ou siga o Aviv no Twitter.