在 Compute Engine 上進行單一區域部署

Last reviewed 2025-05-27 UTC

本文提供多層應用程式的參考架構,這類應用程式會在 Google Cloud單一區域的 Compute Engine VM 上執行。您可以運用這項參考架構,以最少的應用程式變更,有效率地將地端應用程式重新託管 (隨即轉移) 至雲端。這份文件也說明為雲端應用程式建構區域架構時,應考慮的設計因素。這份文件的目標對象為雲端架構師。

架構

下圖顯示在單一 Google Cloud 區域中執行的應用程式架構。此架構符合Google Cloud 區域部署原型

使用 Compute Engine 的單一區域架構。

架構是以基礎架構即服務 (IaaS) 雲端模型為基礎。您可以在 Google Cloud中佈建所需的基礎架構資源 (運算、網路和儲存空間)。您可以完全掌控基礎架構,並負責管理作業系統、中介軟體和應用程式堆疊的較高層級。如要進一步瞭解 IaaS 和其他雲端模型,請參閱「PaaS、IaaS、SaaS 與 CaaS 有何不同?」一文。

上圖包含下列元件:

元件 目的
區域性外部負載平衡器

區域性外部負載平衡器會接收使用者要求,並將要求分配給網路層 VM。

網頁層的區域代管執行個體群組 (MIG) 應用程式的網頁層部署在 Compute Engine VM 上,這些 VM 屬於區域 MIG。代管執行個體群組是區域外部負載平衡器的後端。MIG 中的每個 VM 都代管應用程式網路層的獨立執行個體。
區域性內部負載平衡器

區域內部負載平衡器會將流量從網頁層 VM 分配到應用程式層 VM。

應用程式層的可用區 MIG 應用程式層部署在區域 MIG 的 Compute Engine VM 上,這是內部負載平衡器的後端。MIG 中的每個 VM 都會代管應用程式層的獨立執行個體。
部署在 Compute Engine VM 上的第三方資料庫

本文中的架構顯示部署在 Compute Engine VM 上的第三方資料庫 (例如 PostgreSQL)。您可以在其他可用區部署待命資料庫。資料庫複製和容錯移轉功能取決於您使用的資料庫。

安裝及管理第三方資料庫需要額外付出心力,且更新、監控及確保可用性都會產生營運成本。您可以避免安裝及管理第三方資料庫的額外負擔,並使用全代管資料庫服務 (例如 Cloud SQL 或 PostgreSQL 適用的 AlloyDB),充分運用內建的高可用性 (HA) 功能。如要進一步瞭解代管資料庫選項,請參閱資料庫服務

虛擬私有雲網路子網路

架構中的所有 Google Cloud 資源都使用單一虛擬私有雲網路和子網路。

您可以視需求選擇建構使用多個虛擬私有雲端網路或多個子網路的架構。詳情請參閱「決定是否建立多個虛擬私有雲網路」一文。

Cloud Storage 區域 bucket

應用程式和資料庫備份會儲存在區域 Cloud Storage 值區中。如果發生可用區中斷情形,您的應用程式和資料不會遺失。

或者,您也可以使用備份和災難復原服務,建立、儲存及管理資料庫備份。

使用的產品

這項參考架構使用下列 Google Cloud 產品:

  • Compute Engine:安全可靠且可自訂的運算服務,可讓您透過 Google 的基礎架構建立及執行 VM。
  • Cloud Load Balancing:一系列高效能、可擴充的全球和區域負載平衡器。
  • Cloud Storage:適用於多種資料類型的物件儲存庫,成本低廉且沒有限制。 資料在 Google Cloud 內外都能存取,且會複製到多個位置,以便提供備援機制。 Google Cloud
  • 虛擬私有雲 (VPC):虛擬系統,可為 Google Cloud 工作負載提供全球性、可擴充的網路功能。虛擬私有雲包括虛擬私有雲網路對等互連、Private Service Connect、私人服務存取權和共用虛擬私有雲。

用途

本節說明適合在 Compute Engine 上進行單一可用區部署的應用情境。

  • 雲端開發和測試:您可以運用單一可用區部署架構,建構低成本的雲端環境,用於開發和測試。
  • 不需要高可用性的應用程式:如果應用程式可以容忍基礎架構中斷造成的停機時間,單一區域架構可能就足夠。
  • 應用程式元件之間的低延遲、低成本網路:單一可用區架構可能很適合批次運算等應用程式,因為這類應用程式需要在運算節點之間建立低延遲和高頻寬的網路連線。單一可用區部署不會產生跨可用區網路流量,您也不會產生可用區內流量費用。
  • 遷移一般工作負載:區域部署架構可為一般內部部署應用程式提供雲端遷移路徑,這類應用程式的程式碼不受您控管,或無法支援基本主動-被動拓撲以外的架構。
  • 執行授權受限的軟體:如果系統授權受限,不允許或無法負擔同時執行多個執行個體的費用,單一區域架構可能就非常適合。

設計須知

本節提供指引,協助您運用這項參考架構開發架構,滿足系統設計、安全性、可靠性、作業效率、成本和效能方面的特定需求。

建構工作負載架構時,請參考Google Cloud 架構完善架構的最佳做法和建議。

系統設計

本節提供相關指引,協助您為區域部署作業選擇 Google Cloud 區域和可用區,並選取適當的 Google Cloud服務。

區域選項

選擇應用程式的部署 Google Cloud 區域時,請考量下列因素和規定:

  • 各區域的 Google Cloud 服務可用情形。詳情請參閱「各地區販售的產品」。
  • 每個區域的 Compute Engine 機器類型可用性。詳情請參閱地區和區域一文。
  • 使用者延遲要求。
  • 資源的 Google Cloud 費用。
  • 跨區域資料移轉費用。
  • 法規要求。

部分因素和規定可能需要做出取捨。舉例來說,成本效益最高的區域可能並非碳足跡最低的區域。詳情請參閱「選擇 Compute Engine 地區的最佳做法」。

運算基礎架構

本文中的參考架構會使用 Compute Engine VM 做為應用程式的特定層級。視應用程式的需求而定,您可以選擇其他 Google Cloud 運算服務:

  • 容器:您可以在 Google Kubernetes Engine (GKE) 叢集中執行容器化應用程式。GKE 是容器協調引擎,可自動部署、調度資源及管理容器化應用程式。
  • 無伺服器:如果您希望將 IT 資源投入資料和應用程式,而非設定及運作基礎架構資源,可以使用 無伺服器服務,例如 Cloud Run

決定是否使用 VM、容器或無伺服器服務時,必須權衡設定彈性和管理工作量。VM 和容器提供更多設定彈性,但您必須負責管理資源。在無伺服器架構中,您可將工作負載部署至預先設定的平台,只需要極少管理工作。如要進一步瞭解如何在Google Cloud中為工作負載選擇合適的運算服務,請參閱「在 Google Cloud上託管應用程式」。

儲存服務

本文所示架構會為所有層級使用區域永久磁碟磁碟區。如要使用更耐用的永久儲存空間,可以採用區域永久磁碟磁碟區,這類磁碟區可在區域內的兩個可用區之間同步複製資料。

如要以低廉的價格儲存資料,並在區域內的可用區之間提供備援,可以使用 Cloud Storage 區域 bucket。

如要儲存區域中多部 VM 共用的資料 (例如網頁層或應用程式層中的所有 VM),可以使用 Filestore 區域執行個體。儲存在 Filestore 區域執行個體中的資料,會同步複製到該區域內的三個可用區。這項複製機制可確保高可用性,並防範可用區中斷。您可以在 Filestore 執行個體中儲存共用設定檔、常用工具和公用程式,以及集中式記錄檔,並在多部 VM 上掛接該執行個體。

如果您的資料庫是 Microsoft SQL Server,建議使用 Cloud SQL for SQL Server。如果 Cloud SQL 不支援您的設定需求,或是您需要存取作業系統,可以部署容錯移轉叢集執行個體 (FCI)。在這種情況下,您可以使用全代管的 Google Cloud NetApp Volumes,為資料庫提供持續可用性 (CA) SMB 儲存空間。

為工作負載設計儲存空間時,請考量功能特性、復原能力需求、效能期望和成本目標。詳情請參閱「針對雲端工作負載設計最佳的儲存空間策略」。

資料庫服務

本文中的參考架構使用部署在 Compute Engine VM 上的第三方資料庫。安裝及管理第三方資料庫需要投入心力與成本,才能執行更新、監控及確保可用性、執行備份,以及從故障中復原等作業。

您可以選擇使用全代管資料庫服務 (例如 Cloud SQLPostgreSQL 適用的 AlloyDBBigtableSpannerFirestore),避免安裝及管理第三方資料庫的成本和工作量。這些 Google Cloud 資料庫服務提供運作時間服務水準協議 (SLA),並內建擴充性和可觀測性功能。

如果工作負載需要 Oracle 資料庫,您可以在 Compute Engine VM 上部署資料庫,或使用 Oracle Database@Google Cloud。詳情請參閱「 Google Cloud中的 Oracle 工作負載」。

安全性、隱私權和法規遵循

本節說明使用這項參考架構在Google Cloud 中設計及建構區域拓撲時,應考量的因素,以符合工作負載的安全性和法規遵循需求。

防範外部威脅

如要保護應用程式免受分散式阻斷服務 (DDoS) 攻擊和跨網站指令碼 (XSS) 等威脅侵擾,可以使用 Google Cloud Armor 安全性政策。每項政策都是一組規則,指定要評估的特定條件,以及符合條件時要採取的動作。舉例來說,規則可以指定,如果傳入流量的來源 IP 位址符合特定 IP 位址或 CIDR 範圍,則必須拒絕該流量。您也可以套用預先設定的網頁應用程式防火牆 (WAF) 規則。詳情請參閱「安全性政策總覽」。

VM 的外部存取權

在本文件說明的參考架構中,Compute Engine VM 不需要來自網際網路的連入存取權。請勿為 VM 指派外部 IP 位址。 Google Cloud 只有私人內部 IP 位址的資源仍可使用 Private Service Connect 或私人 Google 存取權,存取特定 Google API 和服務。詳情請參閱服務的私人存取權選項

如要從只有私人 IP 位址的 Google Cloud 資源 (例如本參考架構中的 Compute Engine VM) 啟用安全的外送連線,可以使用 Secure Web ProxyCloud NAT

服務帳戶權限

對於架構中的 Compute Engine VM,建議您建立專屬服務帳戶,並指定服務帳戶可存取的資源,而非使用預設服務帳戶。預設服務帳戶包含各種權限,但這些權限在這個執行個體中並非必要,而專屬服務帳戶則可根據需求調整,只具備必要的權限。詳情請參閱「限制服務帳戶權限」。

SSH 安全性

如要提升此架構中 Compute Engine VM 的 SSH 連線安全性,請使用 Cloud OS Login API 實作 Identity-Aware Proxy (IAP) 轉送。IAP 可讓您根據使用者身分和 Identity and Access Management (IAM) 政策控管網路存取權。Cloud OS Login API 可讓您根據使用者身分和 IAM 政策,控管 Linux SSH 存取權。如要進一步瞭解如何管理網路存取權,請參閱「控管 SSH 登入存取權的最佳做法」。

網路安全

如要控管架構中資源之間的網路流量,您必須設定適當的 Cloud Next Generation Firewall (NGFW) 政策

每項防火牆規則都可讓您根據通訊協定、IP 位址和通訊埠等參數控管流量。舉例來說,您可以設定防火牆規則,允許從網頁伺服器 VM 傳入資料庫 VM 特定通訊埠的 TCP 流量,並封鎖所有其他流量。

其他安全考量

為工作負載建構架構時,請參考企業基礎藍圖Google Cloud 架構完善架構:安全性、隱私權和法規遵循中,平台層級的安全最佳做法和建議。

可靠性

本節說明使用此參考架構在 Google Cloud中建構及運作區域部署的可靠基礎架構時,應考量的設計因素。

基礎架構中斷時的強韌性

在單一區域部署架構中,如果基礎架構堆疊中的任何元件發生故障,只要每個層級都至少有一個運作正常的元件,且容量充足,應用程式就能處理要求。舉例來說,如果網路伺服器執行個體發生故障,負載平衡器會將使用者要求轉送至其他可用的網路伺服器執行個體。如果代管網路伺服器或應用程式伺服器執行個體的 VM 當機,MIG 會自動重新建立 VM。如果資料庫當機,您必須手動啟用第二個資料庫,並更新應用程式伺服器執行個體,才能連線至資料庫。

如果可用區或區域發生中斷,單一可用區部署作業中的所有 Compute Engine VM 都會受到影響。由於負載平衡器是區域資源,因此區域中斷不會影響這個架構中的負載平衡器。不過,由於沒有可用的後端,負載平衡器無法分配流量。如果發生可用區或區域中斷情形,您必須等待 Google 解決問題,然後確認應用程式是否正常運作。

在其他Google Cloud 區域或地區維護基礎架構堆疊的被動 (容錯移轉) 副本,即可減少區域或地區服務中斷造成的停機時間。如果主要區域發生中斷,您可以在容錯移轉區域或地區中啟動堆疊,並使用 DNS 轉送政策,將流量轉送至容錯移轉區域或地區中的負載平衡器。

如果應用程式需要防範區域或地區服務中斷,請考慮使用區域或多區域架構。請參閱下列參考架構:

MIG 自動調度資源

無狀態 MIG 的自動調度資源功能可讓您維持應用程式的可用性和效能,並達到可預測的程度。

如要控管無狀態 MIG 的自動調度資源行為,您可以指定目標使用率指標,例如平均 CPU 使用率。您也可以為無狀態 MIG 設定排程式自動調度資源。有狀態 MIG 無法自動調度資源。詳情請參閱自動調度執行個體群組資源

MIG 大小限制

決定 MIG 大小時,請考量可在 MIG 中建立的 VM 數量上限和預設限制。詳情請參閱「在 MIG 中新增及移除 VM」。

VM 自動修復

有時,主機應用程式的 VM 可能正在執行且可用,但應用程式本身可能有問題。應用程式可能會停止運作、當機或記憶體不足。如要驗證應用程式是否正常回應,您可以設定以應用程式為準的健康狀態檢查,做為 MIG 自動修復政策的一部分。如果特定 VM 上的應用程式沒有回應,MIG 會自動修復該 VM。如要進一步瞭解如何設定自動修復功能,請參閱「關於修復虛擬機器以確保高可用性」。

VM 刊登位置

在本文件說明的架構中,應用程式層和網路層會在單一區域內的 Compute Engine VM 上執行。

如要提升架構的穩定性,可以建立分散式放置政策,並套用至 MIG 範本。MIG 建立 VM 時,會將每個區域內的 VM 放在不同的實體伺服器 (稱為「主機」),因此 VM 不會受到個別主機故障的影響。詳情請參閱「為 VM 建立及套用分散式刊登位置政策」。

VM 容量規劃

如要確保在需要佈建 VM 時,Compute Engine VM 的容量足夠,可以建立預訂項目。預留項目可確保在特定區域中,為您選擇的機器類型預留指定數量的 VM 容量。預留項目可專屬於某個專案,或在多個專案之間共用。如要進一步瞭解預留項目,請參閱「選擇預留項目類型」。

有狀態儲存空間

應用程式設計的最佳做法是避免使用有狀態的本機磁碟。但如有這類需求,您可以將永久磁碟設為有狀態,確保在 VM 修復或重建時保留資料。不過,我們建議您讓開機磁碟保持無狀態,這樣就能將開機磁碟更新為最新映像檔,並套用新版本和安全性修補程式。詳情請參閱「在 MIG 中設定具狀態的永久磁碟」一文。

資料持久性

您可以使用 Backup and DR 建立、儲存及管理 Compute Engine VM 的備份。備份和災難復原服務會以原始格式儲存備份資料,方便應用程式讀取。如有需要,您可以直接使用長期備份儲存空間中的資料,將工作負載還原至正式環境,不必準備或移動資料。

Compute Engine 提供下列選項,協助您確保儲存在 Persistent Disk 磁碟區中的資料具有高耐用性:

資料庫可用性

如果您使用代管資料庫服務 (例如高可用性設定的 Cloud SQL),當主要資料庫發生故障時,Cloud SQL 會自動容錯移轉至待命資料庫。您不需要變更資料庫端點的 IP 位址。如果您使用部署在 Compute Engine VM 上的自行管理第三方資料庫,則必須使用內部負載平衡器或其他機制,確保應用程式在主要資料庫無法使用時,可以連線至其他資料庫。

如要為部署在 Compute Engine VM 上的資料庫實作跨區域容錯移轉,您需要一種機制來識別主要資料庫的故障情形,以及容錯移轉至待機資料庫的程序。容錯移轉機制的具體細節取決於您使用的資料庫。您可以設定觀察者執行個體,偵測主要資料庫的故障情形並協調容錯移轉。您必須適當設定容錯移轉規則,以免發生腦裂情況,並防止不必要的容錯移轉。如需可用於實作 PostgreSQL 資料庫容錯移轉的架構範例,請參閱「Compute Engine 上 PostgreSQL 叢集的高可用性架構」。

更多可靠性注意事項

為工作負載建構雲端架構時,請參閱下列文件,瞭解與可靠性相關的最佳做法和建議:

成本最佳化

本節提供指引,協助您盡量降低設定及運作區域 Google Cloud 拓撲的成本。該拓撲是您使用這項參考架構所建構。

VM 機器類型

為協助您盡可能提高 VM 執行個體的資源使用率,Compute Engine 會提供機器類型建議。根據建議選擇符合工作負載運算需求的機器類型。對於資源需求可預測的工作負載,您可以根據需求自訂機器類型,並使用自訂機器類型來節省費用。

VM 佈建模型

如果應用程式具備容錯能力,則 Spot VM 可協助您降低應用程式和網頁層級中 VM 的 Compute Engine 費用。Spot VM 的費用遠低於一般 VM。不過,Compute Engine 可能會預先停止或刪除 Spot VM,以回收容量。

Spot VM 適用於可容許先占情況且不要求高可用性的批次工作。Spot VM 提供的機器類型、選項和效能與一般 VM 相同。不過,如果可用區的資源容量有限,MIG 可能無法自動擴充 (即建立 VM),直到所需容量再次可用為止。

VM 資源使用率

無狀態 MIG 的自動調度資源功能可讓應用程式妥善處理增加的流量,並在資源需求降低時節省費用。有狀態 MIG 無法自動調度資源。

第三方授權

將第三方工作負載遷移至 Google Cloud時,您或許可以自備授權 (BYOL) 來降低成本。舉例來說,如要部署 Microsoft Windows Server VM,您可以建立並使用自訂 Windows BYOL 映像檔,而不必使用付費映像檔,以免產生第三方授權的額外費用。然後只需為您在 Google Cloud上使用的 VM 基礎架構付費。 這項策略可協助您持續從現有的第三方授權投資中獲利。如果您決定採用 BYOL 方法,下列建議可能有助於降低成本:

  • 使用自訂機器類型,獨立佈建所需數量的運算 CPU 核心,不必考慮記憶體。這樣做可將第三方授權費用限制在您需要的 CPU 核心數量內。
  • 停用多執行緒並行 (SMT),將每個核心的虛擬 CPU 數量從 2 個減少為 1 個。

如果您在 Compute Engine VM 上部署 Microsoft SQL Server 等第三方資料庫,則必須考量第三方軟體的授權費用。使用 Cloud SQL 等代管資料庫服務時,服務費用會包含資料庫授權費用。

更多費用注意事項

為工作負載建構架構時,也請參考Google Cloud 架構完善架構:成本最佳化中提供的一般最佳做法和建議。

提升作業效率

本節說明使用這個參考架構設計及建構區域 Google Cloud 拓撲時,應考量的因素,以便有效率地運作。

VM 設定更新

如要更新 MIG 中的 VM 設定 (例如機器類型或開機磁碟映像檔),請建立具有所需設定的新執行個體範本,然後將新範本套用至 MIG。MIG 會使用您選擇的更新方法 (自動或局部) 更新虛擬機器。請根據可用性和作業效率需求,選擇適當方法。如要進一步瞭解這些 MIG 更新方法,請參閱「在 MIG 中套用新的 VM 設定」。

VM 映像檔

對於 VM,建議您建立並使用自訂 OS 映像檔,其中包含應用程式所需的設定和軟體,而非使用 Google 提供的公開映像檔。您可以將自訂映像檔分組為自訂映像檔系列。映像檔系列一律會指向該系列中的最新映像檔,因此執行個體範本和指令碼可以使用該映像檔,而您不必更新特定映像檔版本的參照。您必須定期更新自訂映像檔,納入 OS 供應商提供的安全性更新和修補程式。

確定性執行個體範本

如果您用於 MIG 的執行個體範本包含安裝第三方軟體的開機指令碼,請確認指令碼明確指定軟體安裝參數,例如軟體版本。否則,當 MIG 建立 VM 時,VM 上安裝的軟體可能不一致。舉例來說,如果執行個體範本包含安裝 Apache HTTP Server 2.0 (apache2 套件) 的開機指令碼,請務必在指令碼中指定要安裝的確切 apache2 版本,例如版本 2.4.53。詳情請參閱確定性執行個體範本

更多作業考量

建構工作負載架構時,請考量Google Cloud 架構完善架構:卓越營運中說明的一般最佳做法和營運效率建議。

效能最佳化

本節說明使用這項參考架構在Google Cloud 中設計及建構區域拓撲時,應考量的因素,以符合工作負載的效能需求。

運算效能

Compute Engine 提供各種預先定義和可自訂的機器類型,供您在 VM 上執行工作負載。根據效能需求選擇合適的機器類型。詳情請參閱「機器家族資源與比較指南」。

VM 多執行緒

您分配給 Compute Engine VM 的每個虛擬 CPU (vCPU) 都會以單一硬體多執行緒的形式實作。根據預設,兩個 vCPU 會共用一個實體 CPU 核心。如果應用程式涉及高度平行的作業,或執行浮點運算 (例如基因序列分析和金融風險建模),您可以減少在每個實體 CPU 核心上執行的執行緒數量,藉此提升效能。詳情請參閱「設定每個核心的執行緒數量」。

VM 多執行緒可能會對某些第三方軟體 (例如資料庫) 造成授權影響。詳情請參閱第三方軟體的授權說明文件。

網路服務級別

網路服務級別可協助您提升工作負載的網路成本效益和效能。您可以選擇進階級或標準級。進階級服務會透過 Google 的全球骨幹網路傳輸流量,盡量減少封包遺失,並降低延遲時間。標準級服務會使用對等互連、網際網路服務供應商 (ISP) 或中轉網路,在最靠近工作負載執行所在區域的邊緣 PoP 傳輸流量。 Google Cloud 如要獲得最佳效能,建議使用進階級服務。如要節省費用,建議使用標準級。

網路效能

如果應用程式和網頁層的工作負載需要低 VM 間網路延遲時間,您可以建立密集放置政策,並套用至用於這些層的 MIG 範本。MIG 建立 VM 時,會將 VM 放在彼此靠近的實體伺服器上。密集配置政策有助於提升 VM 間的網路效能,而分散式配置政策則有助於提升 VM 可用性,如先前所述。如要在網路效能和可用性之間取得最佳平衡,建立密集放置政策時,可以指定 VM 之間的距離。詳情請參閱刊登位置政策總覽

Compute Engine 對於 VM 的輸出網路頻寬設有限制。這項限制取決於 VM 的機器類型,以及流量是否透過與來源 VM 相同的 VPC 網路轉送。對於特定機器類型的 VM,如要提升網路效能,可以啟用 Tier_1 網路,提高輸出頻寬上限。

更多效能考量事項

為工作負載建構架構時,請參考Google Cloud 架構完善架構:效能最佳化中提供的一般最佳做法和建議。

後續步驟

貢獻者

作者:

其他貢獻者: