
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]ORPOST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/simulateMaintenanceEventPara 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:

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.jsPasados unos 60 segundos, iniciamos la simulación del evento de mantenimiento.


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):


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).


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.