教學目標

學習 Google Cloud Platform 的心得分享,初步了解在 Google Cloud 中有關虛擬機器的重點概念。

重點概念

首先在 Google Cloud 中如果我們想要建立虛擬機器,則建議使用 Compute Engine 雲端服務。所謂 Compute Engine 主要在 Google 創新資料中心和全球光纖網路上執行的虛擬機器,同時 Compute Engine 工具和工作流程支援擴充功能,能從單一虛擬機器擴充至全球化的負載平衡雲端運算架構。此外 Compute Engine 中的虛擬機器不僅開機速度快,還能提供穩定的高效能,並且提供的本機 SSD 效能也優於業界其他產品,以及能夠調整叢集大小、建立機器映像檔、將網路虛擬化、使用先占虛擬機器處理批次工作負載,建立自訂機器類型,藉此針對特殊需求進行最佳化調整。至於 Compute Engine 的費用主要是按秒計費,因此僅需要為實際使用的運算時間付費,更進一步Compute Engine 提供承諾使用合約,能夠讓我們的虛擬機器的用量價格享有大幅折扣,這種折扣稱為承諾使用折扣,承諾使用折扣非常適合具有可預測資源需求的工作負載,以及在當前帳單月份中,如果特定 Compute Engine 中的虛擬機器使用佔比相當高,則會自動提供續用折扣。

接著在 Google Cloud 中主要有三種原生角色,分別為擁有者、編輯者和檢視者,所謂擁有者主要是所有編輯者的權限,管理專案的角色和權限,專案內的所有資源以及設定專案帳單。所謂編輯者主要是所有檢視者權限,以及修改狀態的動作權限,像是變更現有的資源。所謂檢視者主要不會影響狀態的唯讀動作權限,像是檢視現有的資源或資料。如果我們需要設定使用者擁有建立虛擬機器的權限,則會將該使用者指定為編輯者的角色,但是權限可能過大,因為將能夠存取 Compute Engine 虛擬機器之外的資源,此外如果指定為檢視者的角色,則會無法建立 Compute Engine 虛擬機器,並且使用瀏覽器的 SSH 連線進行遠端操作。如果我們想要限定使用者僅擁有 Compute Engine 虛擬機器的存取權限,則建議先採用預先定義的 Compute Engine Cloud IAM 角色,主要將 Compute Instance Admin (v1) 角色授予該使用者,但是如果僅有 Compute Instance Admin (v1) 角色,則無法透過 Compute Engine 主控台中的 SSH 按鈕連線至虛擬機器中,此時就必須將 Service Account User 角色授予該使用者,才能夠正常透過透過 Compute Engine 主控台中的 SSH 按鈕連線至虛擬機器。此時如果該虛擬機器沒有外部 IP,則透過 Compute Engine 主控台中的 SSH 按鈕就會無法點選,但是我們仍然能夠利用在 Google Cloud VPC 虛擬私人雲端網路上的內部 IP 位址連線至該虛擬機器,主要有三種方式,分別為透過 VPN 連線至虛擬機器、透過防禦主機虛擬機器進行連線和透過 Cloud IAP 進行連線。

再來當 Google Cloud 虛擬機器建立完成之後,我們能夠針對虛擬機器定期備份磁碟中的資料,如要降低非預期的資料遺失風險,請考慮採用設定快照排程的最佳做法,確保系統會定期備份資料。至於快照中的資料是逐量增加,並且會自動進行壓縮,所以相較於定期建立完整磁碟映像檔,定期建立永久磁碟快照不僅速度更快,成本也能大幅降低。此外不同區域之間移動虛擬機器,我們主要也是透過快照的功能來完成,主要步驟為:

  1. 找到附加至原始虛擬機器的永久磁碟,並為該永久磁碟建立快照。
  2. 在目標區域中建立多份永久磁碟。
  3. 如果虛擬機器移動到同個地區,請暫時將指派給虛擬機器的臨時外部 IP 位址推送到靜態外部 IP 位址。
  4. 在目標區域中建立並啟動新虛擬機器。如果需要跨地區移動,必須為新虛擬機器挑選新子網路。
  5. 將新的永久磁碟連結至新虛擬機器。
  6. 指派外部 IP 位址給新虛擬機器,如有必要請將該位址降級為臨時的外部 IP 位址。
  7. 刪除快照、原始磁碟和原始虛擬機器。

最後在 Google Cloud 中可能會發生虛擬機器因為發生主機錯誤而重新啟動的情況,所謂主機錯誤主要代表託管虛擬機器之實體機器發生硬體或軟體的錯誤,而導致虛擬機器發生當機,當 Compute Engine 偵測到這類事件時,會在作業記錄中新增「compute.instances.hostError」項目。此外因為虛擬機器預設為自動重新啟動,所以 Google Cloud 會在其它實體機器中重新啟動虛擬機器。一般來說,實體硬體錯誤和軟體錯誤雖然不時會發生,但是並不常見,所以如果要保護應用程式和服務,不受這類可能會造成干擾的系統事件影響,建議設計完善可靠的系統,並建立可擴充且有彈性的網頁應用程式。請使用代管虛擬機器群組對多組 Google Cloud 中的虛擬機器進行健康狀態檢查和資源調度。當然我們能夠透過 Stackdrive Logging 設定「compute.instances.hostError」進階篩選,並且建立指標,當達到事件發生的門檻值之後,就會發送快訊進行通知。更進一步 Compute Engine 其實有提供即時遷移功能,當主機系統事件或軟硬體更新發生時,也能讓虛擬機器執行個體持續運作,則會即時將運作中的執行個體遷移到同一區域中的另一台主機上,而不是要求虛擬重新啟動。這能夠在不干擾任何虛擬機器運作的情況下,執行必要的維護作業,以保障基礎架構的安全性與可靠性。

總結在 Google Cloud 中我們主要透過 Compute Engine 雲端服務建立虛擬機器,更進一步我們更需要根據需求進行成本規劃、安全控管、備份還原和系統維運等相關工作。

相關資源