由於大多數使用者在地端運作的系統,都是單台虛擬機器的形式,本段針對大家最常用的「更換主機」 (Rehost) 這一類型,依照使用的工具,分成 Migrate to Virtual Machines 和 VMware HCX 來說明如下。
(一) Migrate to Virtual Machines
Migrate to Virtual Machines 是一個代管的服務,就是一個網頁介面,讓你可以直接在網頁上操作並監控整個搬遷的過程,操作起來非常簡單。你可以直接匯入主機的映像檔,也可以讓主機平行運作,就是讓地端主機還在運作的同時,複製主機的資料到 GCP 上,複製並確認完後再進行切換動作。
如果你有大量主機要搬遷,你不用一台一台機器手動設定搬遷,你可以把多台主機設定為同一批次,讓他們同時複製資料到 GCP。不過要注意的是,並非任何作業系統的主機都可以搬遷,目前支援各種 Linux 和 Windows Server 作業系統的 64 位元 x86 虛擬機器,另外也支援 Oracle Linux 作業系統。
但是要注意版本,像是太舊的版本像是 CentOS 6 雖然可以搬上 GCP,但是主機有問題,GCP 是無法提供技術支援的喔!對於支援的作業系統完整清單,可以參考這份文件。
以下分別描述 Migrate to Virtual Machines 各種搬遷方法:
1. 匯入主機檔案
(1) 匯入虛擬機磁碟映像檔 (Virtual Disk Images)
如果你手上有現成的虛擬機磁碟映像檔,可以直接匯入,完成之後可以馬上用這個映像檔,在 GCP 建立和地端一樣的虛擬機器。虛擬機磁碟映像檔支援的格式包含:VMDK、VHD、VHDX、VDI、QCOW、QCOW2、QED 等,也支援 .tar.gz 檔案,你要確保壓縮檔案包含名為 disk.raw 的單一檔案。
不過要注意的事,這個虛擬機磁碟映像必須要先儲存在 Cloud Storage,所以你必須要先上傳檔案,然後再去 Migrate to Virtual Machines 的主控台上匯入它。而在匯入之前,由於 Migrate to Virtual Machine 這個服務背後是有一個 Service Account 在運作,而它目前沒有權限去 Cloud Storage 存取任何檔案,所以我們就先去給它賦予權限。
我們進入「IAM 與管理」=>「身分與存取權管理」=>再勾選「包含 Google 提供的角色授予項目」:

資料來源:截圖自 GCP Console
接著視窗往下滑,會你看到像這樣的 Service Account:
接著點擊 VM Migration 服務代理右邊的鉛筆圖示:

資料來源:截圖自 GCP Console
接下來就可以把你準備好的 VMDK 檔案上傳到 Cloud Storage:

資料來源:截圖自 GCP Console
上傳完成之後,你就可以點擊 Compute Engine 的 Migrate to Virtual Machines。接下來可以點擊「映像檔匯入作業」:

資料來源:截圖自 GCP Console
接著再點擊「建立映像檔」:

資料來源:截圖自 GCP Console
接著它就會進入建立映像檔的畫面,首先就是在 Cloud Storage 選擇要匯入的檔案,接著由於虛擬機映像檔會轉換成 GCP 格式的映像檔,所以我們要另外選擇儲存的位置,看你要多區域 (例如 Asia) 或是單一區域 (例如 asia-east1) 都可以:

資料來源:截圖自 GCP Console
當我們選好檔案跟儲存位置後,再選擇要儲存映像檔的專案,因為你手上可能有不只一個專案,它讓你不一定只能使用現有的專案,可以選擇匯入到其他你有權限的專案。
但你點擊下拉選單之後,你會發現沒有目標專案可以選,因為它必須要事先勾選起來,才會在這個畫面看到可以選擇的專案。但是沒關係,我們也可以在這裡直接設定,點擊「管理目標專案」:

資料來源:截圖自 GCP Console
點擊之後,它會開啟新的視窗,我們再點擊「新增目標專案」:

資料來源:截圖自 GCP Console
接下來它會彈出一個視窗,讓你勾選目標專案,我們勾選後就按下新增:

資料來源:截圖自 GCP Console
接著畫面會跳轉到目標專案,你可以再確認一次:

資料來源:截圖自 GCP Console
再回到原來的分頁,按下「重新整理」:

資料來源:截圖自 GCP Console
等待幾秒之後,專案就秀出來了,選擇這次要建立映像檔的目標專案:

資料來源:截圖自 GCP Console
上述相關欄位設定好之後,會看到像這樣的結果。其中還有兩個選項需要注意。
(1) 略過 OS 調整作業:
指的是為了讓你在地端的主機可以在雲端上運作,它需要做一些調整,才能讓它在 GCP 上開起來。包含:
・Serial Console (讓你在SSH無法連線時還能操作主機)
・網路設定 (讓主機可以連到 VPC 內的主機、其他 API 和上網)
・Cloud SDK (讓你可以下 gcloud 指令操作 GCP的資源)
如果你匯入的映像檔不是拿來當作開機碟,那可以勾選「略過 OS 調整作業」,如果是,就不能勾選,要不然主機會無法在 GCP 成功開啟。更多細節可以參考這份文件。
(2) 一般化:
通常是針對 Windows 作業系統,因為 Windows 作業系統會有一些「針對該主機的識別資訊」,例如 SID (Security Identifier),勾選「一般化」可以將其識別資訊洗掉,以便部署到其他地方,才不會有識別碼衝突的問題,而 Linux 沒有這方面的問題,不用勾選。更多細節可以參考這份文件。
如果都沒問題的話,可以按下「建立」:

資料來源:截圖自 GCP Console
接下來畫面跳轉到 Migrate to Virtual Machines 主頁,看到正在匯入映像檔的訊息:

資料來源:截圖自 GCP Console
我們等待一下,因為這個動作都在 GCP 上進行,我們可以關掉視窗,稍後再回來查看即可。
接著我們就看到 VMDK 檔案已經匯入成功,看到它已經成為 Compute Engine 的 Image 了。

資料來源:截圖自 GCP Console
接下來我們可以直接點擊箭頭圖示,直接轉到 Image 的頁面:

資料來源:截圖自 GCP Console
然後點擊「建立執行個體」,把它開成一台 GCP 的主機:

資料來源:截圖自 GCP Console
就跟一般建立機器的步驟一樣,我們給主機取名字,並選定規格:

資料來源:截圖自 GCP Console
其他參數可依照你的需求設定,沒問題就可以按下「建立」。
過幾秒後看到主機建立完成,我們點擊 SSH 按鈕:

資料來源:截圖自 GCP Console
看到 SSH 視窗成功開啟,代表我們從地端匯入 VMDK 檔案成功囉!

資料來源:截圖自 GCP Console
如果你的機器能開機,但是連不進去的話,先不要慌,你還是可以透過 Serial Console 調整一下主機,可以參考這份文件。
(2) 匯入機器映像檔 OVF, OVA
這個方法跟前一個幾乎一樣,都是先把檔案上傳到 Cloud Storage。但不同的地方是,前段的映像檔只有開機磁碟而已,如果你的主機有加掛磁碟的話,你就必須再匯入另一個映像檔,等到兩個映像檔都匯入完成,再用第一個映像檔來開機,再手動掛載另一個映像檔的磁碟。
機器映像檔則是直接包含一台主機所有的磁碟,如果你匯入機器映像檔,你就不用手動匯入多個檔案了。
首先我們點擊「建立機器映像檔」:

資料來源:截圖自 GCP Console
我們一樣設定作業名稱、來源、部署區域、目標專案等等,沒問題就按下建立:

資料來源:截圖自 GCP Console
接著就等它開始作業,我們可以在畫面上確認機器映像檔匯入的進度:
資料來源:截圖自 GCP Console
確認匯入成功後,一樣進入機器映像檔管理控制台,用機器映像檔來建立機器:
資料來源:截圖自 GCP Console
我們在主機列表看到機器成功建立,接著點擊 SSH 按鈕:
資料來源:截圖自 GCP Console
接下來就看到 SSH 連線成功的畫面,確認匯入成功。
資料來源:截圖自 GCP Console
關於匯入映象檔或是機器映象檔,還有一個更簡便的方法,不過它是使用 gcloud 指令來操作 你可以參考這份文件。
上述方法最容易卡住的地方,就是我們要匯入的檔案有問題,可能是作業系統或是檔案格式的問題,造成匯入失敗的機率很高,所以請再匯入之前多確認映像檔的內容。
2. 從地端 VMware 環境搬遷主機或 Disk
這個方法的前提是你在地端必須要有一個 vSphere 資料中心,然後再搬遷之前會有一系列的前置作業,讓你的地端和雲端可以連接在一起,之後才能開始搬遷,如下圖:
資料來源:GCP 官方文件
雖然比較麻煩,但是它可以針對大批的主機一口氣快速搬遷,而不是像上述方法一台一台操作。
此外,因為主機是在 VMware 環境,搬遷到 GCP 有比較高的相容性,所以這個方法成功率高很多。 如果你在地端有大量的主機需要搬遷,強烈推薦使用這種方法。
搬遷的前置作業分述如下:
(1) 挑選一個主要專案 (Host Project)
如上圖,我們在雲端上有多個 GCP 的專案,你可以挑選一個主要的專案 (Host Project) 來負責執行搬遷工作,但是你搬上來的主機不一定要部署在這個專案上,你也可以部署到另外一個專案上去。
(2) 啟用相關的 API
由於搬遷過程中會呼叫 GCP 各種不同的 API,所以我們要事先啟用,這裡提供一個快速的指令,讓你可以直接複製貼上,然後在 Cloud Shell 或是你有安裝 gcloud CLI 的電腦執行:
gcloud services enable vmmigration.googleapis.com servicemanagement.googleapis.com servicecontrol.googleapis.com iam.googleapis.com cloudresourcemanager.googleapis.com compute.googleapis.com
資料來源:GCP 官方文件
(3) 授權給相關人員
如果有許多人員要參與搬遷,你可以授權這兩個角色給相關的人員:
VM Migration Administrator:是給執行搬遷的人員使用。
VM Migration Viewer:如果其他的人想要查看搬遷的相關資訊,不直接動手操作。
(4) 在 vCenter 建立使用者帳號
因為我們會在 vSphere 建立一台主機,並且安裝 Migrate Connector,而這個 Migrate Connector 需要有一個使用者的帳號,並且要擁有相關權限,才能夠呼叫 vCenter的API,去把 VMware 主機的資料拉出來並且搬到雲端上。
資料來源:GCP 官方文件
(5) 在 GCP 準備一個使用者帳號和服務帳戶
這個使用者帳戶必須要有權限,才能註冊 VMware 上的 Migrate Connector 主機到 GCP。它只有在註冊的那一刻需要相關的權限,只須執行一次性的註冊動作。
而在 GCP 上面也要有一個服務帳戶,用來存取 19 項 GCP 資源,來完成搬遷的動作。 如下圖:
資料來源:GCP 官方文件
(6) 設定網路存取
在 GCP 這邊,因為都是開放的 API,比不需要特別再去設定,反而是地端那台 Migrate Connector 主機,要確保網路流量可以存取得到 vCenter、vSphere 和上網存取 GCP 相關服務。如下圖:
資料來源:GCP 官方文件
如果防火牆也有限制,要記得開放存取到 *.googleapis.com 和 gcr.io 這兩個網域喔!
(7) 建立連線到 Migrate Connctor 所需的 Key
為了要安全的連到 Migrate Connctor ,你必須建立一組金鑰,等到這台機器建立完成,你就要透過這個金鑰連線進去操作。你可以在任何地方使用 ssh-keygen -t rsa 這個指令來建立金鑰,如下圖我們是用 Mac 本機電腦來建立的:
資料來源:東東老師自行截圖
(8) 安裝 Migrate Connctor
接下來環境切換到 vSphere,點擊 Deploy OVF Template 然後貼上 Migrate Connector 機器映像檔的網址:
資料來源:東東老師自行截圖
接下來等它安裝完成,看到主機的資訊如下:
資料來源:自行截圖
(9) 連線到 Migrate Connector 主機並註冊到 GCP
我們使用 SSH 連到 Migrate Connector 主機之後,輸入 m4c register 開始註冊,經過一連串的互動操作,可以看到註冊成功的畫面:
資料來源:東東老師自行截圖
我們回到 Console 上就會看到地端的機器列表,這時我們就可以選定要搬遷的主機:
資料來源:YouTube 影片截圖
雖然是將主機一模一樣的搬到 GCP,但是我們並不一定要使用一模一樣的規格,我們可以設定部署的規格跟環境:
資料來源:YouTube 影片截圖
接下來就開始進行資料複製的動作,等到複製完成,我們可以先點擊「Test-Clone」,來觀察資料是否都複製完成,它會建立一台測試機,讓你進去檢查。如果確定都沒問題的話,我們再點擊「Cut-Over」 :
資料來源:YouTube 影片截圖
最後我們可以在 Console 上看到主機切換完成的相關訊息:
資料來源:YouTube 影片截圖
這裡要注意的是,它的「切換」會把原來的地端主機「直接關機」,如果你不希望機器被關,目前的方法就是再手動把它開起來。
很多使用者會藉由這個功能,執行雲地資料同步的動作,不過不算正規方法,所以沒有備份的保證喔!只是因為做起來很方便,單純分享給各位參考!
(二) VMware HCX
GCP 本身可以建立一個純粹的 VMware 環境在雲端,叫做 VMware Engine,而這個環境可以和地端的 VMware 環境連結在一起。既然兩邊都是 VMware,就可以使用 VMware 本身的 HCX 將地端的主機無縫的搬遷到雲端上,但不是 Compute Engine 主機的形式,而是 VMware 格式的主機。
所以它具體的搬遷方法是由 VMware 所發展的, GCP 就只是提供基礎建設,讓 VMware 可以在 GCP 上面順利運作,整合概念圖如下:
擷圖自 VMware 官方文件
而這樣的服務要在 GCP 上開起來,必須要使用通過 VMware 認證的主機,我們可以從「VMware Engine」進入「私有雲」,然後點擊「建立私有雲」 :
資料來源:截圖自 GCP Console
接下來你會發現台灣 (asia-east1) 並沒有提供這樣的環境,VMware Engine 離台灣最近的資料中心在新加坡 (asia-southeast1):
資料來源:截圖自 GCP Console
另外我們在設定節點數量的時候,系統會要求至少要三個節點以上,而每個節點的規格是 72 個 vCPU和 768 GB 的記憶體,以及1.92 TB 的 Disk 空間,可以知道它的費用不低,有一定規模的跨國企業才有機會使用這樣的服務:
資料來源:截圖自 GCP Console
我們在 YouTube 看到有人示範 HCX 操作的畫面,功能和 Migrate to Virtual Machines 很像,首先就是勾選要搬遷的主機:
資料來源:截圖自 YouTube 影片
接著我們就設定主機要搬遷的目的地:
資料來源:截圖自 YouTube 影片
在設定的過程當中,也可以設定目的地的主機規格和環境參數,你還可以設定搬遷的排程,例如在幾月幾號的幾點開始搬遷。
開始搬遷之後,你也可以在畫面上看到搬遷的進度:
資料來源:截圖自 YouTube 影片
關於更多 HCX 的操作細節,可以參考這份文件。
另外這樣的規模通常都不小,我們可以聯絡代理商或是 Google 原廠,來提供相關的技術服務喔!
五、結論
最後我們總結從地端搬遷主機到 GCP 的方法,整理比較表如下:
資料來源:東東老師自行整理
不管你是哪一種企業規模或是場景,都建議你先從匯入映像檔的方式開始,不是真的要你在正式搬遷都用這個方法,而是要你藉由這個動作,去熟悉整個搬遷的流程、細部操作和相關的注意事項,讓你了解搬遷過程的全貌。
這樣才能在正式搬遷之前,做好完整的評估和規劃,和搬遷失敗的處理方式,讓你確保在公司系統照常運作,影響最小的前提之下,讓搬遷順利成功。
文章轉載自《東東GCP 教學》網站
-1024x576.png)





