應用程式的高可用性

本文提供技術指引和最佳做法,說明如何在 Google Distributed Cloud (GDC) 實體隔離環境中,跨多個區域設計及部署高可用性 (HA) 工作負載。本指南列出重要架構模式、服務設定和作業考量,協助您盡量減少停機時間,確保業務持續運作。

本文所述策略適用於下列技術專業人員:

  • 雲端架構師設計具彈性的基礎架構和應用程式架構。

  • 開發運作工程師和網站穩定性工程師,為高可用性工作負載導入部署策略、自動化、監控和事件應變措施。

  • 應用程式開發人員,建構與高可用性模式整合的容錯應用程式。

詳情請參閱 GDC 氣隙環境適用的目標對象說明文件

高可用性的重要性

在現代分散式系統中,規劃高可用性至關重要。 停機可能會導致業務中斷、營收損失,以及使用者體驗不佳。

對於使用 GDC 在私有資料中心執行的工作負載,可用性通常與核心營運成功直接相關,尤其是延遲時間敏感或重要業務應用程式。從一開始就設計高可用性,是建構彈性且可靠服務的必要條件。

GDC 可在氣隙隔離環境中提供超大規模功能,並支援多個中斷連線的資料中心或區域。多可用區應用程式的高可用性取決於多可用區服務,例如負載平衡和非同步儲存空間。如要進一步瞭解高可用性適用的重要服務,請參閱本文的「可擴充性和負載平衡」和「跨區域部署高可用性應用程式,並搭配非同步儲存空間」部分。

在當地提供超大規模功能

GDC 可將基礎架構和服務擴展至邊緣和資料中心。 Google Cloud GDC 提供全代管的軟硬體解決方案,可讓您在 GDC 叢集和其他Google Cloud 服務上執行 Google Kubernetes Engine (GKE),更貼近資料產生和使用位置。

本文著重說明在多區域拓撲中設定的 GDC Universe。在這個設定中,單一宇宙包含同一位置內多個實體隔離的區域

這些區域的電力、降溫和網路系統各自獨立,可防範局部實體基礎架構故障。可用區之間的高頻寬、低延遲網路連線可實現資料複製和快速容錯移轉,是建構高可用性應用程式的基礎。

擴充性和負載平衡

除了基本元件備援之外,有效管理流量及啟用無縫擴充功能,對於維持高可用性至關重要,尤其是在負載條件各異的情況下。GDC 提供多種機制,可進行負載平衡和精密的流量管理。

處理南北向流量的外部負載平衡器

如要向 GKE on GDC 叢集外部的使用者或系統公開應用程式 (南北向流量),請使用 GDC 的受管理外部負載平衡功能。外部負載平衡器 (ELB) 服務提供這些功能,並與 Kubernetes 無縫整合。

ELB 服務提供高可用性和可擴充性,主要特點如下:

  • 代管服務:以 GDC 專屬服務的形式執行,專為無網路連線環境中的高可用性和復原能力而設計。

  • 外部存取:從 GDC 管理的集區佈建穩定的外部 IP 位址,為外部用戶端提供一致的進入點。

  • 負載平衡器與 Kubernetes 整合:建立沒有特定內部註解的 Kubernetes Service type: LoadBalancer 時,系統會自動佈建及設定負載平衡器。

  • 可用區感知:將傳入流量分配到 GDC 宇宙中所有可用區內執行的健全應用程式 Pod。ELB 會依據 Pod 完備性探測來判斷後端健康狀態。

  • 擴充性:當應用程式在節點和可用區之間橫向擴充時,可處理外部流量分配作業。

如要為外部流量進入提供高可用性,讓用戶端要求自動避開故障區域或執行個體,建議使用外部負載平衡器。

詳情請參閱「設定外部負載平衡器」。

用於東西向流量的內部負載平衡器

如要在同一個 GKE on GDC 叢集內執行的服務之間進行通訊 (東西向流量),GDC 會提供內部負載平衡器 (ILB)。ILB 對於解除內部服務的耦合,以及提供高可用性和可擴充的內部通訊路徑至關重要。

ILB 服務提供高可用性和可擴充性,主要特徵如下:

  • 內部存取權:提供穩定的內部 IP 位址,只能從 GDC 網路內部存取,例如叢集節點或其他內部服務。

  • 負載平衡器與 Kubernetes 整合:建立 Kubernetes Servicetype: LoadBalancer,並加上特定註解,指出必須是內部負載平衡器,藉此佈建負載平衡。例如 networking.gke.io/load-balancer-type: "Internal"

  • 區域感知:將流量分配到所有可用區域中,透過就緒探針識別的健康狀態良好的後端 Pod。如果某個區域發生問題,這種分配方式可避免內部通訊失敗。

  • 服務探索與解除耦合:透過 kube-dns 和 CoreDNS 整合,提供穩定的內部 IP 位址和 DNS 名稱。服務可以互相探索及通訊,因此用戶端不必知道個別 Pod 的 IP 位址。

  • 可擴充性:將流量分配到所有可用的健康狀態良好副本,有助於擴充內部後端服務。

使用 ILB 進行內部服務間通訊,可讓內部流量在區域發生故障時保持韌性,並提供有效的擴充功能,與外部 ELB 和基礎運算資源分配提供的 HA 相輔相成。這項策略通常用於分層應用程式,其中前端 API 必須與 Kubernetes 叢集中的後端 API 或資料庫通訊。

詳情請參閱「設定內部負載平衡器」。

透過非同步儲存空間,在各個區域部署高可用性應用程式

GDC 可讓您在更靠近資料來源的位置執行基礎架構和應用程式。如要部署具備彈性資料來源的高可用性應用程式,請實作非同步儲存空間複製功能,確保資料保留和災難復原。

可用區代表單一宇宙中的不同故障網域。將應用程式元件分散到各個可用區,並在這些可用區之間複製資料,可大幅提升韌性,防範區域性硬體故障或維護事件。

詳情請參閱「使用多區域儲存空間保護資料」。

後續步驟