災難復原的構成要素

Last reviewed 2024-07-01 UTC

本文是系列文章的第二單元,旨在探討如何在 Google Cloud中進行災難復原 (DR)。本單元將討論可做為 DR 計畫構成要素的服務和產品,包括 Google Cloud 產品和可跨平台運作的產品。

本系列包含以下單元:

Google Cloud 包含各種可讓您做為災難復原架構一部分的產品。本節將討論最常做為 Google Cloud DR 構成要素之產品的 DR 相關功能。

其中許多服務都具有高可用性 (HA) 功能。HA 與 DR 並不完全重疊,但 HA 的許多目標也適用於設計 DR 計劃。 例如,利用 HA 功能可讓您設計可最佳化運作時間以及可減輕小規模失敗 (例如單一 VM 失敗) 的影響的架構。如要進一步瞭解 DR 和 HA 之間的關係,請參閱災難復原規劃指南

以下各節將說明這些 Google Cloud DR 構成要素,以及它們如何協助您實作 DR 目標。

運算和儲存

下表摘要列出 Google Cloud 運算和儲存服務中的功能,這些功能是 DR 的建構區塊:

產品 功能
Compute Engine
  • 可擴充的運算資源
  • 預先定義和自訂機器類型
  • 啟動速度飛快
  • 快照
  • 執行個體範本
  • 代管執行個體群組
  • 保留項目
  • 永久磁碟
  • 透明化的維護服務
  • 即時遷移
Cloud Storage
  • 高耐用度的物件存放區
  • 跨區域備援
  • 儲存空間級別
  • 物件生命週期管理
  • 從其他來源轉移資料
  • 預設靜態資料加密
  • 虛刪除
Google Kubernetes Engine (GKE)
  • 用於部署及擴充容器化應用程式的代管環境
  • 節點自動修復
  • 有效性和完備性探測
  • 永久磁碟區
  • 多區域叢集和地區叢集
  • 多叢集網路

如要進一步瞭解這些和其他Google Cloud 產品的功能和設計可能對災難復原策略造成的影響,請參閱「Architecting disaster recovery for cloud infrastructure outages: product reference」。

Compute Engine

Compute Engine 提供虛擬機器 (VM) 執行個體,是 Google Cloud的主力。除了設定、啟動及監控 Compute Engine 執行個體,您通常還會使用各種相關功能來實作 DR 計畫。

在 DR 情境中,您可以設定刪除保護標記,防止 VM 遭意外刪除。 在代管資料庫之類的有狀態服務時,這種做法尤其實用。

如要瞭解如何達到低 RTO 和 RPO 值,請參閱設計具備復原能力的系統

執行個體範本

您可以使用 Compute Engine 執行個體範本儲存 VM 的設定詳細資料,然後透過現有的執行個體範本建立 Compute Engine 執行個體。您可以使用該範本來根據需要啟動任意數量的執行個體,並在您需要因應您的 DR 目標環境時以您希望的確切方式進行設定。執行個體範本是全球一致的,因此您可以使用相同的設定,在 Google Cloud 中的任何位置重新建立執行個體。

詳情請參閱下列資源:

如要進一步瞭解如何使用 Compute Engine 映像檔,請參閱本文件後面的「平衡映像檔設定和部署速度」一節。

代管執行個體群組

代管執行個體群組可和 Cloud Load Balancing (本文件後面將會討論) 搭配運作,以將流量分配給跨區域複製的相同設定執行個體群組。代管執行個體群組可讓您使用自動調度資源與自動修復等功能,如此一來,代管執行個體群組就可以自動刪除及重新建立執行個體。

保留項目

Compute Engine 允許保留特定區域中的 VM 執行個體,使用自訂或預先定義的機器類型,包含或不含額外的 GPU 或本機 SSD。如要確保 DR 任務關鍵工作負載的容量,請在 DR 目標可用區建立保留項目。如果沒有預留項目,您可能無法取得所需的隨選容量,以達到復原時間目標。在冷、暖或熱 DR 情況下,預留項目都很有用。您不必預先完整設定及部署這些資源,也能在容錯移轉時使用,以符合較低的 RTO 需求。

永久磁碟和快照

永久磁碟是耐用的網路儲存裝置,可供您的執行個體存取。它們與您的執行個體無關,因此您可以卸離並移動永久磁碟,即使在刪除執行個體後,也能保留資料。

您可以製作可以跨地區複製的 Compute Engine VM 的增量備份或快照,並在發生災難時用於重新建立永久磁碟。此外,您也可以建立永久磁碟的快照,以免因使用者錯誤而導致資料遺失。快照中的資料是逐量增加的,即使您的快照磁碟已連結至執行中的執行個體,也只需幾分鐘即可建立。

永久磁碟內建備援空間,就算設備毀損也能保護您的資料,並可透過資料中心維護作業來確保資料可用性。永久磁碟分為區域或地區。地區永久磁碟會在區域中的兩個可用區之間複製寫入作業。萬一區域服務中斷,備份 VM 執行個體可以強制連接次要區域中的地區永久磁碟。詳情請參閱使用地區永久磁碟的高可用性選項

透明化的維護服務

Google 會定期維護基礎架構,包括使用最新軟體修補系統、執行例行測試和預防性維護,以及盡可能提升 Google 基礎架構的速度和效率。

根據預設,所有 Compute Engine 執行個體都會經過適當設定,讓這些維護事件對您的應用程式與工作負載來說是透明的狀態。詳情請參閱透明維護

發生維護事件時,Compute Engine 會使用即時遷移功能,自動將運作中的執行個體遷移至同一個區域中的另一部主機。Google 可透過即時遷移功能執行必要的維護作業,在不中斷任何 VM 運作的情況下,保障基礎架構的安全性與可靠性。

虛擬磁碟匯入工具

虛擬磁碟匯入工具可讓您匯入包括 VMDK、VHD 和 RAW 在內的檔案格式,以建立新的 Compute Engine 虛擬機器。使用此工具,您可以建立與您的內部部署虛擬機器具有相同設定的 Compute Engine 虛擬機器。當您無法從已安裝在映像檔之軟體的來源二進位檔設定 Compute Engine 映像檔時,這是一種很好的方法。

自動備份

您可以使用標記,自動備份 Compute Engine 執行個體。舉例來說,您可以使用備份和災難復原服務建立備份方案範本,並自動將範本套用至 Compute Engine 執行個體。

詳情請參閱自動保護新的 Compute Engine 執行個體

Cloud Storage

Cloud Storage 是一個物件存放區,非常適合儲存備份檔案。它提供適用於特定用途的不同儲存空間級別,如下圖所示。

顯示適用於高頻率存取的 Standard 儲存空間、適用於低頻率存取的 Nearline 和 Coldline,以及適用於最低頻率存取的 Archive 的圖表

在 DR 情境中,Nearline、Coldline 和 Archive Storage 特別值得注意。相較於 Standard Storage,這些儲存空間級別可降低儲存空間費用。但是,您在擷取這些儲存空間級別內的資料或中繼資料時,系統會向您收取其他相關費用。另外,系統也會向您收取這些儲存空間級別的最短儲存時間費用。Nearline 是針對每個月最多存取一次的備份情境而設計,這是可讓您在保持低廉費用的同時進行一般 DR 壓力測試的理想選擇。

Nearline、Coldline 和 Archive 都已針對不常存取的情境進行了最佳化,而定價模式的設計也考慮到了這一點。因此,如果您在最短儲存時間之前提早刪除資料,系統將會向您收取費用,而且擷取這些級別中早於該級別的最短儲存時間的資料或中繼資料時將必須支付額外費用。

為保護 Cloud Storage bucket 中的資料,避免遭到意外或惡意刪除,您可以使用軟刪除功能,在指定期間內保留已刪除和覆寫的物件,並使用物件保留功能,防止物件遭到刪除或更新。

Storage 移轉服務可讓您將資料從 Amazon S3、Azure Blob 儲存體或地端部署資料來源匯入 Cloud Storage。在 DR 情境中,您可以使用 Storage 移轉服務執行以下操作:

  • 將資料從其他儲存空間供應商備份到 Cloud Storage 值區。
  • 將資料從雙區域或多區域值區移至單一區域值區,以降低備份內容的儲存費用。

Filestore

Filestore 執行個體是全代管的 NFS 檔案伺服器,可與在 Compute Engine 執行個體或 GKE 叢集上執行的應用程式搭配使用。

Filestore Basic 和可用區級別是可用區資源,不支援跨可用區複製,而 Filestore Enterprise 級別執行個體是區域資源。為提高 Filestore 環境的復原能力,建議您使用 Enterprise 級例項。

Google Kubernetes Engine

GKE 是隨時可投入實際工作環境的代管環境,專供部署容器化應用程式。GKE 可讓您自動化調度管理 HA 系統,並包含下列功能:

  • 節點自動修復。 如果節點在延長的時間範圍內持續未通過健康狀態檢查 (大約 10 分鐘),GKE 就會針對該節點啟動修復程序。
  • 有效性與完備性探測。 您可以指定一個有效性探測器,探測器會定期向 GKE 回報該 pod 是否正在運作。如果該 pod 未通過探測,則可以將其重新啟動。
  • 多區域和地區叢集。 您可以在一個地區內的多個區域之間分配 Kubernetes 資源。
  • 多叢集閘道可讓您在不同區域的多個 GKE 叢集中,設定共用的負載平衡資源。
  • GKE 備份服務可備份及還原 GKE 叢集中的工作負載。

網路和資料移轉

下表摘要列出 Google Cloud 網路和資料移轉服務中的功能,這些功能是災難復原的建構區塊:

產品 功能
Cloud Load Balancing
  • 健康狀態檢查
  • 全域負載平衡
  • 地區性負載平衡
  • 多區域容錯移轉
  • 多通訊協定負載平衡
  • 外部和內部負載平衡
Cloud Service Mesh
  • Google 代管的服務網格控制層
  • 進階要求轉送和多元流量控管政策
Cloud DNS
  • 以程式輔助的方式管理 DNS
  • 存取權控管
  • 使用 Anycast 提供區域服務
  • DNS 政策
Cloud Interconnect
  • Cloud VPN (IPsec VPN)
  • 直接對等互連

Cloud Load Balancing

Cloud Load Balancing 會在應用程式的多個執行個體之間分配使用者流量,為 Google Cloud 運算產品提供高可用性。您可以為 Cloud Load Balancing 設定健康狀態檢查,以判定執行個體是否可執行工作,讓流量不會轉送至故障的執行個體。

Cloud Load Balancing 提供單一 Anycast IP 位址,做為應用程式的前端。您的應用程式可以允許執行個體在不同地區 (例如,在歐洲和美國) 執行,並可將使用者導向最接近的一組執行個體。除了為暴露在網際網路的服務提供負載平衡外,您也可以為在私人負載平衡 IP 位址後面的服務設定內部負載平衡。此 IP 位址只能由虛擬私有雲 (VPC) 內部的 VM 執行個體存取。

詳情請參閱 Cloud Load Balancing 總覽

Cloud Service Mesh

Cloud Service Mesh 是 Google 代管的服務網格,適用於 Google Cloud。Cloud Service Mesh 提供深入的遙測資料,協助您收集應用程式的詳細洞察資料。支援在各種運算基礎架構上執行的服務。

Cloud Service Mesh 也支援進階流量管理和轉送功能,例如斷路和容錯植入。使用斷路機制,您可以對特定服務強制執行要求限制。達到斷路限制時,系統會阻止要求抵達服務,避免服務進一步降級。透過錯誤植入,Cloud Service Mesh 可以延遲或中止部分服務要求。錯誤植入可讓您測試服務在要求延遲或取消時的存活能力。

詳情請參閱 Cloud Service Mesh 總覽

Cloud DNS

Cloud DNS 會在自動化復原程序中提供程式輔助的方法來管理您的 DNS 項目。Cloud DNS 採用 Google Anycast 名稱伺服器的全球網路,從世界各地的備援位置供應 DNS 區域服務,為您的使用者提供高度的服務可用性及極短的延遲時間。

如果您選擇在內部部署環境管理 DNS 項目,可以啟用Google Cloud 中的 VM,透過 Cloud DNS 轉送解析這些位址。

Cloud DNS 支援政策,可設定 DNS 要求的回應方式。舉例來說,您可以設定 DNS 轉送政策,根據特定條件導引流量,例如啟用容錯移轉至備份設定,以提供高可用性,或是根據 DNS 請求的地理位置轉送請求。

Cloud Interconnect

Cloud Interconnect 提供將資訊從其他來源移至 Google Cloud的方法。我們稍後會在「與 GCP 之間來回轉移資料 Google Cloud」部分討論此產品。

管理和監控

下表摘要列出 Google Cloud 管理和監控服務中的功能,這些功能是 DR 的建構區塊:

產品 功能
Cloud 狀態資訊主頁
  • 服務狀態 Google Cloud
Google Cloud Observability
  • 運作時間監控
  • 快訊
  • 記錄
  • 錯誤報告
Google Cloud Managed Service for Prometheus
  • Google 代管的 Prometheus 解決方案

Cloud 狀態資訊主頁

Cloud 狀態資訊主頁會顯示服務目前的可用情形。 Google Cloud 您可以在該頁面上查看狀態,並且可以訂閱 RSS 動態消息。每當服務有最新動態時,RSS 動態消息就會更新。

Cloud Monitoring

Cloud Monitoring 會收集來自 Google Cloud、AWS、託管型運作時間探測器、應用程式檢測設備,以及各種其他應用程式元件的指標、事件與中繼資料。您可以設定快訊,向第三方工具 (例如 Slack 或 Pagerduty) 傳送通知,以便即時為系統管理員提供最新資訊。

Cloud Monitoring 可讓您為公開可用的端點虛擬私有雲中的端點建立運作時間檢查。舉例來說,您可以監控網址、Compute Engine 執行個體、Cloud Run 修訂版本和第三方資源,例如 Amazon Elastic Compute Cloud (EC2) 執行個體。

Google Cloud Managed Service for Prometheus

Google Cloud Managed Service for Prometheus 是由 Google 管理的多雲跨專案解決方案,適用於 Prometheus 指標。您可以使用 Prometheus 監控世界各地的工作負載並接收快訊,無須大規模管理及操作 Prometheus。

詳情請參閱 Google Cloud Managed Service for Prometheus

跨平台 DR 構成要素

當您跨多個平台執行工作負載時,可減少管理作業負擔的一種方法是選擇適用於您使用的所有平台的工具。本節將討論一些可跨平台使用,因此可支援跨平台 DR 情境的工具和服務。

基礎架構即程式碼

使用程式碼定義基礎架構,而非圖形介面或指令碼,即可採用宣告式範本工具,自動佈建及設定跨平台的基礎架構。舉例來說,您可以使用 TerraformInfrastructure Manager,啟動宣告式基礎架構設定。

設定管理工具

對於大型或複雜的 DR 基礎架構,建議您利用 Chef 和 Ansible 等可跨平台使用的軟體管理工具。這些工具可確保無論您的運算工作負載在何處,都可以應用可重現的設定。

自動化調度管理服務工具

容器也可以被視為一種 DR 構成要素。容器是一種可封裝服務並在不同平台之間引入一致性的方法。

使用容器時,通常也會使用自動化調度管理服務。 Kubernetes 不僅可以管理 Google Cloud 中的容器(使用 GKE),還提供在多個平台之間自動化調度管理容器型工作負載的方法。 Google CloudAWS 和 Microsoft Azure 都提供 Kubernetes 的代管版本。

如要將流量分配到在不同雲端平台上執行的 Kubernetes 叢集,您可以使用支援加權記錄並納入健康狀態檢查的 DNS 服務。

您也需要確保可以將映像檔擷取至目標環境。 這表示您必須能夠在發生災難時存取您的映像檔註冊資料庫。另一個可跨平台使用的好選擇是 Artifact Registry

資料移轉

資料移轉是跨平台 DR 情境的重要元件。請確保使用 DR 資料移轉情境所要求的實際版面編排工具來設計、實作和測試您的跨平台 DR 情境。我們將會在下一節中討論資料移轉情境。

備份和災難復原服務

備份和災難復原服務是雲端工作負載的備份和災難復原解決方案。這項服務可協助您復原資料、恢復重要業務運作,並支援多種Google Cloud 產品、第三方資料庫和資料儲存系統。

詳情請參閱「備份和災難復原服務總覽」。

DR 的模式

本節將根據前面討論的構成要素來討論 DR 架構的一些最常見模式。

與 Google Cloud之間來回轉移資料

DR 計畫的重要環節是資料在 Google Cloud之間轉移的速度。如果您的 DR 計畫是根據從內部部署到 Google Cloud 或從其他雲端服務供應商到 Google Cloud的資料遷移作業,這項功能就非常重要。本節將討論網路和Google Cloud 服務,確保良好的輸送量。

當您使用 Google Cloud 做為內部部署或其他雲端環境中的工作負載的復原站點時,請考慮以下重要事項:

  • 如何連線至 Google Cloud?
  • 您和互連網路供應商之間有多少頻寬?
  • 供應商直接提供給 Google Cloud的頻寬是多少?
  • 將會使用該連結轉移哪些其他資料?

如要進一步瞭解如何將資料轉移至 Google Cloud,請參閱「遷移至 Google Cloud:轉移大型資料集」。

平衡映像檔設定和部署速度

在設定機器映像檔以部署新的執行個體時,請考慮您的設定會對部署速度造成的影響。映像檔預先設定的數量、維護映像檔的費用及部署速度之間存在取捨關係。例如,如果機器映像檔採用最低設定,則使用它的執行個體將需要更多時間來啟動,因為它們需要下載並安裝依附元件。另一方面,如果您的機器映像檔採用較高的設定,則使用它的執行個體啟動速度會較快,但您必須更頻繁地更新映像檔。啟動可完全運作的執行個體所花的時間將與您的 RTO 直接相關。

顯示 3 個組合層級 (分離到完全組合) 對應至映像檔啟動時間 (組合程度最高的映像檔啟動速度最快) 的圖表

在混合式環境之間維護機器映像檔的一致性

如果您實作混合型解決方案 (內部部署至雲端或雲端至雲端),則需要找到一種方法以在實際工作環境之間維護映像檔的一致性。

如果需要設定完整的映像檔,請考慮使用 Packer 之類的工具,因為它可以為多個平台建立相同的機器映像檔。您可以將相同的指令碼與平台專屬的設定檔搭配使用。使用 Packer 時,您可以將設定檔放在版本控制中,以追蹤實際工作環境中部署的版本。

或者,您也可以使用 Chef、Puppet、Ansible 或 Saltstack 等設定管理工具以更精細的程度設定執行個體,並視需要建立基礎映像檔、最低設定的映像檔或設定完整的映像檔。

您也可以手動轉換現有的映像檔 (例如 Amazon AMI、Virtualbox 映像檔和 RAW 磁碟映像檔) 並將其匯入 Compute Engine。

實作分層儲存空間

分層儲存模式通常用於最新的備份儲存在速度較快的儲存空間中的備份,而且您可以慢慢地將較舊的備份遷移至成本較低 (但速度較慢) 的儲存空間。套用這個模式後,您可以在不同儲存空間級別的值區之間遷移備份,通常是從 Standard 遷移至成本較低的儲存空間級別,例如 Nearline 和 Coldline。

如要實作這個模式,可以使用物件生命週期管理。舉例來說,您可以自動將超過特定時間的物件儲存空間級別變更為 Coldline。

後續步驟

貢獻者

作者: