
Google Compute Engine offre una tecnologia davvero unica, la "Live Migration", che tiene attive le istanze anche quando un host va in downtime, ad esempio durante un aggiornamento software o hardware. Anziché richiedere il riavvio, Google Compute Engine sposta l'istanza in esecuzione su un altro host fisico nella stessa zona di rete.
La Live Migration permette a Google di svolgere quelle attività di manutenzione indispensabili a mantenere l'infrastruttura sicura e affidabile, senza interrompere alcuna istanza. È una funzionalità davvero notevole, e Google sostiene che:
"l'istanza potrebbe registrare un breve calo di prestazioni, anche se in genere la maggior parte delle istanze non dovrebbe notare alcuna differenza."
Naturalmente, abbiamo voluto verificare questa affermazione ;-) Per fortuna, simulare un evento di manutenzione su un'istanza è semplice: basta usare lo strumento da riga di comando gcloud oppure una chiamata API, ovvero:
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]/simulateMaintenanceEventPer rendere il test più aderente a uno scenario reale, abbiamo deciso di generare del carico sull'istanza di prova e poi avviare un evento di Live Migration, per osservarne gli effetti.
Con Cloud Launcher abbiamo creato una macchina n1-standard-1 con nginx (di Bitnami). Per generare il carico abbiamo scelto K6, uno strumento open source di load testing pensato per gli sviluppatori e scritto in Go. Abbiamo poi optato per InfluxDB come storage dei risultati e Grafana per visualizzarli.
Ecco il nostro script:

Per avviare il carico abbiamo eseguito K6 in questo modo:
k6 run — out influxdb=http://x.x.x.x:8086/myk6db — vus 50 — duration 10m — rps 6000 test.jsDopo circa 60 secondi abbiamo lanciato la simulazione dell'evento di manutenzione.


Come si vede, per circa 2 secondi i tempi di risposta sono stati nettamente più alti e in quell'arco di tempo l'istanza non ha gestito alcuna richiesta. Tuttavia non si sono verificati errori e il client è stato servito anche durante la migrazione.
Abbiamo ripetuto lo stesso test su un'istanza più grande (n1-standard-4):


Infine, un ulteriore test su un'istanza ancora più grande, in grado di servire 10.000 richieste al secondo (contro le 6.000 dei test precedenti).


Come emerge dai grafici, il comportamento resta coerente su workloads e istanze di tipologie diverse. Ci si possono aspettare circa 2 secondi durante i quali l'istanza non risponde nel corso della live migration; nessuna connessione viene però interrotta e nei nostri test non abbiamo rilevato alcun errore.
La Live Migration è una funzionalità unica nel panorama del cloud pubblico ed è l'opzione predefinita quando si crea un'istanza su Google Compute Engine. Ora ha gli strumenti per verificare in prima persona come si comporta la sua applicazione durante una live migration.
Vuole leggere altri articoli? Visiti il nostro blog oppure segua Aviv su Twitter.