雲端架構師或 IT 管理員若打算在 Compute Engine 中執行應用程式,就必須設計 VM 拓樸,以便有效地進行佈建及運作。
Compute Engine 提供多種部署選項:例如,您可以部署一組 VM,並將其做為單一實體進行管理,也可以將 VM 視為個別資源來佈建及管理。每種方法各有優缺。如何選擇最佳的部署策略?
- 首先,請評估應用程式的主要需求。
- 查看可用的部署選項及其相對優點。
- 請選取符合需求的策略,並充分運用 Compute Engine 的功能。
評估工作負載
請使用以下問題,分析您要部署的工作負載的關鍵需求。您的答案有助於將各部署選項 (在下一節中列出) 的功能,對應至工作負載的必要條件。
應用程式狀態
應用程式是否有狀態?
- 有狀態應用程式會儲存特定資料 (例如用戶端或工作階段 ID),直到該資料不再需要為止。舉例來說,在線上購物應用程式中,購物車服務可能會儲存使用者在繼續購物時新增或移除的商品詳細資料,並在使用者開始結帳程序時保留最終購物車狀態。
- 無狀態應用程式不需要儲存任何用戶端、交易或工作階段資料。舉例來說,網路伺服器可能會在提供用戶端要求的內容後關閉工作階段。
如要進一步瞭解有狀態和無狀態應用程式,請參閱「有狀態工作負載與無狀態工作負載的差異」。
在 VM 重新啟動或 Compute Engine 重新建立 (自動修復) VM 時,是否應保留任何特定於執行個體的中繼資料?
佈建中
- VM 應使用混合機器類型或映像檔嗎?舉例來說,部分虛擬機器需要記憶體最佳化機器類型,而其他虛擬機器則使用通用機器類型嗎?
- 基礎架構是否應隨著負載變化自動調整,以便在成本和回應時間之間取得最佳平衡?
- 所有 VM 是否可以在單一可用區、虛擬私有雲網路和子網路中執行?
- 應用程式是否應與特定其他資源位於相同區域?例如,應用程式是否需要與資料庫建立低延遲連線?
作業
- 您是否要以單一群組管理 VM?舉例來說,您是否想在所有 VM 中自動推出應用程式更新?
- 您是否需要使用自訂或第三方工具來管理 VM?
- 您是否需要控管處理失敗的 VM?舉例來說,如果 VM 發生故障,您是否希望在判斷失敗的根本原因時,讓 VM 保持停止狀態?
- 您是否需要控制 VM 的啟動、停止、暫停和重新啟動順序或排程?舉例來說,為了節省成本,您是否打算在週末或特定時段停止使用 VM?
韌性
- 應用程式是否需要防範可用區故障?換句話說,如果某個可用區停止運作,您是否希望應用程式繼續提供該區域其他可用區中 VM 的要求?
- 如果 VM 因任何原因停止或當機,或是應用程式未回應要求,Compute Engine 是否應自動重建 VM?
- 應用程式是否需要主機 VM 的固定內部或外部 IP 位址?
您已評估需求,現在就來瞭解 Compute Engine 提供的部署選項。
查看可用的部署選項
查看並瞭解您可以考慮將工作負載部署至 Compute Engine 的選項,以及這些選項的功能和相對優勢。
- 獨立 VM
- 如果您選用這個選項,則可為每個佈建的 VM 分別選擇機器類型、映像檔、磁碟和其他屬性。並將 VM 視為個別資源進行管理。
- 非代管執行個體群組
- 您可以佈建獨立的 VM,並將其新增至執行個體群組。接著,您可以將非代管執行個體群組做為負載平衡器的後端。
- 代管執行個體群組 (MIG)
MIG 是一組相同或設定類似的執行個體,您可以使用執行個體範本來佈建。
您可以將 MIG 設為有狀態,以便保留特定磁碟或中繼資料。
對於無狀態的 MIG,您可以啟用自動調度資源功能並設定調度政策。
建立 MIG 時,您可以選擇在單一區域內部署 VM,或是將 VM 分散至區域內的多個區域,以便提高可用性。
下表摘要說明每個部署選項的主要功能。
功能 | 獨立 VM | 非管理化執行個體群組 | 有狀態的 MIG | 無狀態 MIG |
---|---|---|---|---|
以範本為基礎,為一組 VM 佈建服務 | ||||
混合使用機器類型和映像檔 | ||||
固定的 內部或 外部 IP 位址 | ||||
自動修復失敗的 VM | ||||
控制 VM 的 啟動-停止 和 暫停-繼續 作業 | ||||
設定一組 VM 做為負載平衡器後端 | ||||
Disk and metadata preservation, for stateful workloads | ||||
控制特定 VM 的更新作業 | ||||
自動為所有 VM 執行滾動式更新 | ||||
自動 (預測式) 水平調整資源配置 |
下圖並列出部署作業範例,協助您瞭解主要差異。
獨立 VM | 有狀態的 MIG | 無狀態 MIG |
---|---|---|
這個範例顯示三個個別建立的 VM。 | 這個範例顯示 MIG 包含三個設定類似的 VM,這些 VM 是使用執行個體範本佈建而成。 |
這個範例顯示 MIG 包含三個相同的 VM,這些 VM 是使用執行個體範本佈建的。 |
|
|
|
|
|
|
您現在已評估工作負載、查看 Compute Engine 提供的部署選項,並準備選擇部署方法。
選取部署策略
本文所述的建議,是根據特定工作負載特性與各個 Compute Engine 部署選項的功能進行對應而得出。
請使用下列決策流程。如果您偏好圖像指南,請參閱本文件稍後的決策樹。
選擇要使用獨立 VM 還是執行個體群組。
需求條件 建議的部署策略 下列至少一項要求對工作負載而言是必要條件。 - 應用程式必須在使用混合機器類型或映像檔的 VM 上執行。
- 應用程式需要主機 VM 的固定內部或外部 IP 位址。
- 您需要控管處理失敗的 VM。
- 您需要控制 VM 的啟動/停止或暫停/繼續作業。
- 您必須使用自訂指令碼或第三方工具來佈建及移除 VM。
選擇獨立的 VM。
如果所有獨立 VM 都能在單一區域、虛擬私人雲端網路和子網路中執行,請考慮將 VM 新增至非代管執行個體群組。接著,您可以將非代管執行個體群組做為負載平衡器的後端。
略過這個決策流程的其餘部分。
上述要求對您的用途並非必要。 使用 MIG 設定易於管理、高可用性且可擴充的 Compute Engine 拓樸。
繼續執行下一個步驟。
選擇有狀態和無狀態的 MIG。
需求條件 建議的 MIG 類型 應用程式需要保存磁碟和中繼資料,也就是說,應用程式具有狀態。 請選擇有狀態的 MIG,並設定 Compute Engine 在干擾性事件 (例如重新建立、自動修復及更新 VM) 發生期間應保留的磁碟。
繼續執行下一個步驟。
應用程式並非有狀態。 選擇無狀態 MIG,並善用自動調度資源功能。在中斷作業期間,Compute Engine 會根據執行個體範本重新建立磁碟。
繼續執行下一個步驟。
選擇區域和區域 MIG。
需求條件 建議的 MIG 類型 應用程式必須在單一區域中執行,否則就不必防範區域故障。 選擇可用區 MIG。 即使發生可用區故障,應用程式也必須繼續執行。 選擇區域性 MIG。
決策樹
下圖說明決定 Compute Engine 部署策略時應考量的因素:
後續步驟
- 進一步瞭解執行個體範本。
- 瞭解有狀態的 MIG 如何運作。
- 進一步瞭解區域 MIG。
- 建立 MIG。
- 自動調度執行個體群組資源。
- 將現有工作負載遷移至有狀態的 MIG。