
Google Compute Engine propose une technologie singulière, la Live Migration, qui maintient vos instances actives même lorsqu'un hôte subit une indisponibilité, par exemple lors d'une mise à jour logicielle ou matérielle. Plutôt que d'imposer un redémarrage, Google Compute Engine déplace votre instance en cours d'exécution vers un autre hôte physique de la même zone réseau.
La Live Migration permet à Google d'effectuer la maintenance indispensable au maintien d'une infrastructure protégée et fiable, sans interrompre la moindre de vos instances. C'est une fonctionnalité particulièrement intéressante, et Google affirme que :
" votre instance peut connaître une courte période de performances réduites, même si, en règle générale, la plupart des instances ne devraient remarquer aucune différence. "
Naturellement, nous avons voulu vérifier cette affirmation ;-) Heureusement, il est facile de simuler un événement de maintenance sur une instance via l'outil en ligne de commande gcloud ou via un appel API :
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]/simulateMaintenanceEventPour rapprocher notre test d'un scénario réel, nous avons choisi de générer de la charge sur notre instance de test, puis de déclencher un événement de Live Migration afin d'en observer l'impact.
Avec Cloud Launcher, nous avons créé une machine n1-standard-1 exécutant nginx (par Bitnami). Pour la génération de charge, nous avons retenu K6 — un outil open source de tests de charge orienté développeurs, écrit en Go. Les résultats ont été stockés dans InfluxDB et visualisés avec Grafana.
Voici notre script :

Pour déclencher la charge, nous avons exécuté K6 ainsi :
k6 run — out influxdb=http://x.x.x.x:8086/myk6db — vus 50 — duration 10m — rps 6000 test.jsAu bout d'une soixantaine de secondes, nous avons lancé la simulation de l'événement de maintenance.


Comme on peut le constater, durant un intervalle d'environ 2 secondes, le temps de réponse a fortement augmenté et notre instance n'a traité aucune requête. Aucune erreur n'a toutefois été enregistrée et le client a continué d'être servi pendant la migration.
Nous avons reproduit le même test sur une instance plus grande (n1-standard-4) :


Enfin, un dernier test sur une instance encore plus grande, traitant 10 000 requêtes par seconde (contre 6 000 lors des tests précédents).


Comme le montrent les graphiques, le comportement reste cohérent quels que soient les workloads et les types d'instances. Comptez environ 2 secondes durant lesquelles votre instance ne répondra pas pendant la live migration ; en revanche, aucune connexion n'est interrompue et nous n'avons observé aucune erreur lors de nos tests.
La Live Migration est une fonctionnalité originale et unique dans le cloud public, activée par défaut lors de la création d'instances sur Google Compute Engine, et vous pouvez désormais évaluer le comportement de votre application durant une live migration.
Envie d'autres articles ? Consultez notre blog ou suivez Aviv sur Twitter.