GCP-About Live-Migration

sasa :)
5 min readApr 20, 2020

--

即時遷移

Live-Migration是一個google很得意的功能

運行在GCE(compute engine)裡面

在google document中指出

Live migration is a technology that Google has built to move your running instances away from systems that are about to undergo maintenance work. [1]

也提到

Live migration is a critical component of our platform, so Google continuously tests live migration with a very high level of scrutiny[2]

由以上兩段話有感受到google對這個功能的重視。

就字面上來說 live-migration=活著遷移

在不影響服務的狀態下完成底層OS或BIOS的更新(patch)

ps.以下文長慎入,若需要live-migration的指令,直接拉到最後面。

Live-Migration的好處

  • Compute Engine 提供即時遷移功能,讓您即使在主機系統事件 (例如軟硬體更新) 發生時,也能讓虛擬機器執行個體持續運作。

Compute Engine offers live migration to keep your virtual machine instances running even when a host system event occurs, such as a software or hardware update.[2]

總之,GCE(compute engine)底層OS或BIOS的更新,google會幫你處理,重點是不需要中斷你的服務

Live-Migration的運行機制

我們先來看看Live-Migration的運行機制吧(有錯歡迎指正)

google畫了一張大家都看不懂的圖來說明了這個機制

來源:https://cloud.google.com/compute/images/live-migration.svg?hl=zh-tw

在看懂上圖前,先來認識一下migration的步驟[2]:

  1. 首先,google會先發送一個系統通知給你(這個在metadata裡面的maintain-event看得到,但你必須自行做監控)
  2. google maintain的cluster會監聽這個maintain-event,並根據google的data center的policy去做排程(會判斷vm所在的實體位置的機房的忙碌程度來做排程),來判斷什麼時候要啟動live-migration(都是google自行判斷的)
  3. 當你的vm被選定要更新時,此時google已經決定好,你的vm要從哪裡(source host)搬到哪裡(target host),並會準備一個target VM給你,這是拿原本的vm作為base的新vm(你可以想像成google已經幫你偷偷做了snapshot且開起來了)。且會再發一個系統通知給你,說即將要搬遷了
  4. 準備開始做VM的轉移(vm migration)。分三階段。
  5. VM移轉的第一階段(pre-migration brownout):服務還在source VM上跑,但已經將大部分source VM上的狀態都切到target VM上了。但在搬遷的同時,google也會把記憶體花在追蹤是否還有頁面還沒切到target VM上面去。
  6. VM移轉的第二階段(during blackout):這是一段非常短的瞬間,青黃不接的時候,所以google稱它為blackout。此時,其實VM沒有跑在任何地方,當然服務會有些微的downtime,但這個原因是google已經把source VM裡面所有的東西移轉到target VM上了。這段期間,你可以想像為:當你在做snapshot的時候,若source沒有被停下且持續運行,就有可能有東西被snapshot遺漏,因此為避免這件事,總是會建議人家把source停下來後再做snapshot比較安全。這個blackout階段,你可以想像成這個狀態。
  7. VM移轉的第三階段(during post-migration brownout):服務已經跑在target VM上了。但source VM還存在。google必須確保封包的轉送之類的問題是正常的,這個階段會在google判斷所有封包都移轉到target VM後結束。
  8. 完成移轉,然後才會刪除source VM。且才會看到相關log。

真的有人看懂嗎XD? 幫你們拍拍手,因為我花了很久才看懂這些>///<

看不懂,沒關係,考試不會考,實際上也用不到XD

有錯請指正 :)

Live-Migration狀態查詢

其實,運行機制一點都不重要

因為你無法中斷,你也無法干涉

但怎麼查live-migration的log,跟我們比較息息相關

上面說了,當live-migration完成後,會有log

這些log記錄在stackdriver裡面,可以利用下述條件撈出來

以上,理解上的錯誤,歡迎討論 :)

[1]https://cloud.google.com/compute/docs/tutorials/robustsystems

[2]https://cloud.google.com/compute/docs/instances/live-migration?hl=zh-tw

--

--

sasa :)
sasa :)

Written by sasa :)

目標是做一個讓所有人都聽得懂技術語言的transfer person

No responses yet