本文提供技術指引和最佳做法,說明如何在 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
Servicetype: LoadBalancer時,系統會自動佈建及設定負載平衡器。可用區感知:將傳入流量分配到 GDC 宇宙中所有可用區內執行的健全應用程式 Pod。ELB 會依據 Pod 完備性探測來判斷後端健康狀態。
擴充性:當應用程式在節點和可用區之間橫向擴充時,可處理外部流量分配作業。
如要為外部流量進入提供高可用性,讓用戶端要求自動避開故障區域或執行個體,建議使用外部負載平衡器。
詳情請參閱「設定外部負載平衡器」。
用於東西向流量的內部負載平衡器
如要在同一個 GKE on GDC 叢集內執行的服務之間進行通訊 (東西向流量),GDC 會提供內部負載平衡器 (ILB)。ILB 對於解除內部服務的耦合,以及提供高可用性和可擴充的內部通訊路徑至關重要。
ILB 服務提供高可用性和可擴充性,主要特徵如下:
內部存取權:提供穩定的內部 IP 位址,只能從 GDC 網路內部存取,例如叢集節點或其他內部服務。
負載平衡器與 Kubernetes 整合:建立 Kubernetes
Service的type: LoadBalancer,並加上特定註解,指出必須是內部負載平衡器,藉此佈建負載平衡。例如networking.gke.io/load-balancer-type: "Internal"。區域感知:將流量分配到所有可用區域中,透過就緒探針識別的健康狀態良好的後端 Pod。如果某個區域發生問題,這種分配方式可避免內部通訊失敗。
服務探索與解除耦合:透過 kube-dns 和 CoreDNS 整合,提供穩定的內部 IP 位址和 DNS 名稱。服務可以互相探索及通訊,因此用戶端不必知道個別 Pod 的 IP 位址。
可擴充性:將流量分配到所有可用的健康狀態良好副本,有助於擴充內部後端服務。
使用 ILB 進行內部服務間通訊,可讓內部流量在區域發生故障時保持韌性,並提供有效的擴充功能,與外部 ELB 和基礎運算資源分配提供的 HA 相輔相成。這項策略通常用於分層應用程式,其中前端 API 必須與 Kubernetes 叢集中的後端 API 或資料庫通訊。
詳情請參閱「設定內部負載平衡器」。
透過非同步儲存空間,在各個區域部署高可用性應用程式
GDC 可讓您在更靠近資料來源的位置執行基礎架構和應用程式。如要部署具備彈性資料來源的高可用性應用程式,請實作非同步儲存空間複製功能,確保資料保留和災難復原。
可用區代表單一宇宙中的不同故障網域。將應用程式元件分散到各個可用區,並在這些可用區之間複製資料,可大幅提升韌性,防範區域性硬體故障或維護事件。
詳情請參閱「使用多區域儲存空間保護資料」。
後續步驟
如要部署服務,將虛擬機器 (VM) 集合分散到各個區域,並使用非同步複製的區塊儲存空間,請參閱「部署高可用性 VM 應用程式」。
如要使用非同步複製的永久磁碟區,在 Kubernetes 的各個區域中將服務部署為容器化應用程式,請參閱「部署高可用性容器應用程式」。
如要進一步瞭解區域和宇宙,請參閱GDC air-gapped 中的區域。