Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

¿Qué tan disruptiva es la *Live* Migration de Google Compute Engine?

By Aviv LauferApr 23, 20183 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

1 wyzvzjl4xoz hqqiopxu0a

Google Compute Engine ofrece una tecnología muy particular llamada "Live Migration" que mantiene tus instancias en ejecución incluso cuando un host queda fuera de servicio, por ejemplo durante una actualización de software o hardware. En vez de obligarte a reiniciar tus instancias, Google Compute Engine las migra a otro host físico dentro de la misma zona de red.

La Live Migration le permite a Google ejecutar tareas de mantenimiento clave para mantener la infraestructura protegida y confiable, sin interrumpir ninguna de tus instancias. Es una funcionalidad muy interesante, y Google asegura que:

"tu instancia podría experimentar un breve período de menor rendimiento, aunque, por lo general, la mayoría de las instancias no debería notar diferencia alguna."

Naturalmente, quisimos poner a prueba esa afirmación ;-) Por suerte, simular un evento de mantenimiento en una instancia es sencillo: basta con usar la herramienta de línea de comandos gcloud o una llamada a la API, así:

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 que la prueba se pareciera más a un escenario real, decidimos generar carga sobre la instancia de prueba e iniciar luego un evento de Live Migration para ver cómo afectaba a la instancia.

Con Cloud Launcher creamos una máquina n1-standard-1 corriendo nginx (de Bitnami). Para generar la carga elegimos K6, una herramienta open source de load testing orientada a developers y escrita en Go. Optamos por almacenar los resultados en InfluxDB y visualizarlos con Grafana.

Este es nuestro script:

1 c5h8lyikn52mhubnhecxjq

Para empezar a generar carga, ejecutamos K6 de la siguiente manera:

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

Pasados unos 60 segundos, iniciamos la simulación del evento de mantenimiento.

1 se um2 uia zye1egbaebg1 d9whzbyofndonludzef60g

Como puedes ver, durante un lapso de unos 2 segundos el tiempo de respuesta subió de forma significativa y la instancia no atendió ninguna petición en ese momento. Sin embargo, no hubo errores y el cliente siguió siendo atendido durante la migración.

Repetimos la misma prueba en una instancia más grande (n1-standard-4):

1 pzdsy4umhyfqolqgfoaihq1 ce2p8ycbyo afnkrjj2wha

Por último, otra prueba en una instancia aún más grande, atendiendo 10k peticiones por segundo (frente a las 6k de las pruebas anteriores).

1 cj 1wi2cdm80lxjlwcfqma1 cxxywqedptzzqtfr5mpt a

Como se ve en las gráficas, el comportamiento se mantiene consistente entre distintos workloads y tipos de instancias. Puedes esperar unos 2 segundos en los que tu instancia no responderá durante la live migration; aun así, no se cae ninguna conexión y no observamos errores en nuestras pruebas.

La Live Migration es una funcionalidad genial y única en el cloud público, y viene activada por defecto al crear instancias en Google Compute Engine. Ahora ya puedes comprobar por ti mismo cómo se comportará tu aplicación durante una live migration.

¿Quieres más historias? Visita nuestro blog o sigue a Aviv en Twitter.