為防範基礎架構中斷或設定錯誤,您可以為全域外部應用程式負載平衡器設計容錯移轉策略。這些策略會使用區域外部應用程式負載平衡器,並從全域外部應用程式負載平衡器將流量轉送至這些平衡器,以便在全域基礎架構中斷或發生設定錯誤時,維持高可用性。
在容錯移轉架構中,您會部署主要負載平衡器和一或多個備用負載平衡器:
- 主要負載平衡器是全域外部應用程式負載平衡器,負責在正常運作期間處理用戶端流量。
- 備份負載平衡器是區域性外部應用程式負載平衡器,會在主要負載平衡器健康狀態檢查失敗時接收流量。
容錯移轉和容錯回復是自動流量路由程序:
- 當 Cloud DNS 偵測到服務中斷時,就會發生容錯移轉,並將流量從主要負載平衡器轉送至備用負載平衡器。
- 回復是指 Cloud DNS 逆向轉送,在通過健康狀態檢查後,將流量重新導向至主要負載平衡器。
本文說明如何從全域外部應用程式負載平衡器容錯移轉至區域備份負載平衡器。如要在不同區域的區域性外部應用程式負載平衡器之間設定容錯移轉,請參閱「區域性外部應用程式負載平衡器的高可用性」。
為何使用區域性負載平衡器進行容錯移轉
區域性外部應用程式負載平衡器最適合做為全域外部應用程式負載平衡器的容錯移轉負載平衡器,原因如下:
- 區域性外部應用程式負載平衡器會獨立於個別Google Cloud 區域,且與在同一區域執行的任何全域外部應用程式負載平衡器基礎架構隔離。
- 區域性外部應用程式負載平衡器和全域外部應用程式負載平衡器都以 Envoy Proxy 為基礎,處理流量的方式也類似。
如要為全域外部應用程式負載平衡器實作全域到區域的容錯移轉,請在您希望流量容錯移轉的區域中,建立兩個以上的區域性外部應用程式負載平衡器。
容錯移轉策略
您可以採用下列策略,為全域外部應用程式負載平衡器實作容錯移轉:
- 主動-被動 (全域到區域的容錯移轉):您部署一或多個區域外部應用程式負載平衡器,僅做為備份用途。在穩定狀態下,Cloud DNS 會解析為全域外部應用程式負載平衡器的 IP 位址。如果全域負載平衡器發生故障,Cloud DNS 會將流量導向備份區域負載平衡器。這項設定使用 Cloud DNS 容錯移轉路由政策。
- 主動-主動 (全域到區域的略過):全域外部應用程式負載平衡器會做為邊緣前端,提供 Cloud CDN 功能 (例如邊緣快取),並使用網際網路網路端點群組 (NEG),透過完整網域名稱 (FQDN) 將要求轉送至區域外部應用程式負載平衡器。在穩定狀態下,流量會依序流經兩個負載平衡層。這項設定可透過 Cloud DNS 地理位置路由政策完成。 如果全域負載平衡器發生中斷情形,DNS 路由政策會略過全域層,直接將用戶端流量導向區域負載平衡器。
根據最佳做法,如果您的架構不依賴容量感知全域後端負載平衡,建議採用主動-主動策略。不過,如果應用程式明確要求全域後端負載平衡,以便根據後端容量在各區域分配及溢出流量,請實作主動-被動策略。
容錯移轉策略比較
下表比較主動/被動和雙主動容錯移轉策略:
| 策略屬性 | 主動/被動 | Active-active |
|---|---|---|
| 穩定的流量 | 用戶端 → 全域外部應用程式負載平衡器 → 後端 | 用戶端 → 全域外部應用程式負載平衡器 → 區域性外部應用程式負載平衡器 → 後端 |
| 失敗狀態流量流程 | 用戶端 → 區域性外部應用程式負載平衡器 → 後端。 服務仍可使用,但由於邊緣效能優勢消失,延遲時間可能會增加。 |
用戶端 → 區域性外部應用程式負載平衡器 → 後端 (略過全域外部應用程式負載平衡器)。 服務仍可使用,但由於邊緣效能優勢消失,延遲時間可能會增加。 |
| 設定管理 | 需要同步處理全域和區域性負載平衡器的獨立設定。 | 由於大部分的應用程式邏輯都位於區域負載平衡器,因此全域層只需要進行最少的設定。不過,您必須在這兩層複製邊緣安全性政策 (Cloud Armor) 和連線終止設定 (TLS 憑證)。 |
| 可靠性驗證 | 區域性外部應用程式負載平衡器在穩定狀態下處於閒置狀態。建議定期測試或使用 DNS 微量流量。 | 穩定狀態流量會持續測試區域性外部應用程式負載平衡器。建議定期測試或直接將微量流量導向區域負載平衡器。 |
| 漸進式部署安全防護 | 全域外部應用程式負載平衡器的設定變更會套用至全域。區域性外部應用程式負載平衡器變更會受到隔離,但穩定狀態流量不會測試這些變更。 | 您可以逐步套用區域性外部應用程式負載平衡器變更,一次一個區域。如果某個區域發生故障,全域層會自動將流量從該區域導向健康狀態良好的區域。 |
| 全域後端負載平衡 | 支援 全域外部應用程式負載平衡器可根據容量,在不同區域的後端之間平衡流量。 |
受限 全域外部應用程式負載平衡器會將流量轉送至最近的區域性外部應用程式負載平衡器。區域負載平衡器只會在本地平衡流量,不會根據後端容量將流量溢出至其他區域。 |
| 費用與帳單 | 資料處理費用適用於單一負載平衡層。在穩定狀態下,費用來自全域外部應用程式負載平衡器;區域外部應用程式負載平衡器的費用只會在測試或容錯移轉事件期間適用。 | 由於流量會同時流經全域和區域層級,因此這兩個負載平衡層級會同時產生資料處理費用。 |
| 建議用途 | 需要進階全域後端負載平衡,以及跨區域流量溢出 (以容量為準) 的工作負載。 | 工作負載以區域隔離為基礎設計,並使用全域層提供邊緣效能和快取。 |
主動/被動策略
在主動/被動設定中,您會在一個或多個區域中部署獨立的區域性外部應用程式負載平衡器,以及主要的全域外部應用程式負載平衡器或傳統應用程式負載平衡器。
主動-被動容錯移轉的運作方式
下列設定示範如何從全域外部應用程式負載平衡器容錯移轉至兩個備份區域外部應用程式負載平衡器,每個區域各有一個,而全域負載平衡器已在這些區域部署後端。
主動/被動容錯移轉的流程如下:
- 穩定狀態:Cloud DNS 會將所有用戶端流量轉送至全域外部應用程式負載平衡器。
- 偵測失敗: Google Cloud 使用設定了三個來源區域的健康狀態檢查,偵測主要負載平衡器是否正常運作。如果來自兩個以上來源區域的健康狀態檢查失敗,Cloud DNS 就會觸發容錯移轉。
- 容錯移轉:Cloud DNS 容錯移轉路由政策會將用戶端流量直接轉送至備份區域外部應用程式負載平衡器。容錯移轉期間的延遲影響:由於區域外部應用程式負載平衡器會在特定 Google Cloud 區域內終止連線,因此位於目的地區域遠處的用戶端,在容錯移轉啟動期間可能會遇到延遲時間和往返時間 (RTT) 增加的情況。
- 回復:健康狀態檢查再次成功後,Cloud DNS 會自動將流量還原至主要負載平衡器,不會發生停機情形,因為兩個負載平衡器都會提供流量。
雙主動策略 (從全域到區域的旁路)
在主動-主動策略中,全域外部應用程式負載平衡器會使用網際網路 FQDN NEG (INTERNET_FQDN_PORT),將流量傳送至兩個以上區域的區域外部應用程式負載平衡器。
雙主動旁路的運作方式
下列設定示範如何從全域外部應用程式負載平衡器容錯移轉至兩個備份區域外部應用程式負載平衡器,每個區域各有一個,而全域負載平衡器已在這些區域部署後端。
主動-主動容錯移轉工作流程如下:
- 穩定狀態:流量從用戶端流向全域外部應用程式負載平衡器。
全域負載平衡器會使用網際網路 FQDN 網路端點群組 (NEG) (類型為
INTERNET_FQDN_PORT),將流量轉送至最近的區域外部應用程式負載平衡器。接著,區域負載平衡器會將流量傳送至本機後端。 - 偵測失敗:在穩定狀態下,如果單一區域性外部應用程式負載平衡器或其所在區域發生故障,全域外部應用程式負載平衡器會使用網際網路 NEG 上的 Cloud DNS 健康狀態檢查政策偵測故障。全域負載平衡器會自動將流量從健康狀態不佳的區域,導向至健康狀態良好的區域負載平衡器。
- 略過:如果全域外部應用程式負載平衡器發生中斷情形,Cloud DNS 容錯移轉政策會偵測到故障,並將流量直接轉送至區域性外部應用程式負載平衡器,完全略過全域層。繞過時的延遲影響:全域外部應用程式負載平衡器可提供邊緣效能優勢,例如終止更靠近使用者的連線,以及邊緣快取。如果流量繞過全域負載平衡器,用戶端連線會直接與區域 VIP 建立連線,這可能會增加地理位置較遠用戶端的連線延遲和 RTT。
- 回復:全域負載平衡器通過連續健康狀態檢查後,Cloud DNS 會自動在 DNS 回應中恢復傳回全域任意傳播 VIP,還原全域邊緣轉送層級。
查看主要負載平衡器設定
設定容錯移轉前,請確認備份區域外部應用程式負載平衡器支援主要負載平衡器使用的功能。
- 在主動-被動模式中,備份區域負載平衡器必須支援類似的功能,才能在服務中斷期間順暢接管流量。
- 在主動-主動模式中,核心路由和安全防護規則必須直接在區域層級設定,而全域邊緣功能 (例如 Cloud CDN) 會在全域中斷期間遭到略過。
| 功能 | 相容性需求 |
|---|---|
| Google Kubernetes Engine 部署作業 | 使用 GKE Gateway 部署主要和備份負載平衡器。這是因為使用 GKE Gateway 部署的負載平衡器,比使用 GKE Ingress 控制器部署的負載平衡器,更適合這個容錯移轉機制。GKE Ingress 控制器僅支援傳統版應用程式負載平衡器。 |
| Cloud CDN | 區域性外部應用程式負載平衡器不支援 Cloud CDN。如果發生容錯移轉,依賴 Cloud CDN 的作業就會受到影響。 |
| Cloud Armor | 如果您在主要負載平衡器上使用 Cloud Armor,請在備份負載平衡器上設定對等的區域 Cloud Armor 安全性政策。Cloud Armor 在區域和全域範圍內提供的功能有所不同。詳情請參閱「區域 Cloud Armor 安全性政策」和「全域 Cloud Armor 安全性政策」。 |
| SSL 憑證 | 確認主要負載平衡器使用的 SSL 憑證類型與備份區域外部應用程式負載平衡器相容。請參閱全域、區域和傳統版負載平衡器提供的 SSL 憑證差異。詳情請參閱「Compute Engine 安全資料傳輸層 (SSL) 憑證」和「Certificate Manager 安全資料傳輸層 (SSL) 憑證」。 |
區域性負載平衡器的注意事項
在您希望發生故障時重新導向流量的區域中,設定及部署區域性外部應用程式負載平衡器。
設定區域負載平衡器時,請注意容錯移轉或繞過架構的下列注意事項:
您必須盡可能將備份區域外部應用程式負載平衡器的功能,設定得與主要負載平衡器相似,這樣兩個部署作業處理流量的方式才會類似。
全域外部應用程式負載平衡器。區域性外部應用程式負載平衡器支援的功能,與全域外部應用程式負載平衡器大致相同,只有少數例外。區域負載平衡器也支援與全域負載平衡器相同的進階流量管理功能,因此更容易在主要和備份負載平衡器之間實現等效性。
傳統版應用程式負載平衡器。使用傳統版應用程式負載平衡器時,由於區域性外部應用程式負載平衡器是以 Envoy 為基礎的負載平衡器,處理流量的方式不同,因此較難在主要和備份負載平衡器之間實現功能對等。部署至正式環境前,請務必徹底測試容錯移轉和容錯回復。
如要查看區域、全域和傳統版應用程式負載平衡器的特定功能,請參閱負載平衡器功能比較頁面。
建議您使用 Terraform 等自動化架構,協助在主要和備份部署作業中,達成並維持負載平衡器設定的一致性。
區域性外部應用程式負載平衡器支援進階和標準網路服務級別。如果容錯移轉期間的延遲不是您主要考量的問題,建議您使用標準層級設定備份區域外部應用程式負載平衡器。使用標準級基礎架構可進一步隔離全域外部應用程式負載平衡器所用的進階級基礎架構。
請確認僅限 Proxy 的子網路大小足夠,可在容錯移轉事件期間容納增加的流量,且不會中斷同一區域和網路中的其他區域負載平衡器。詳情請參閱「保留額外的僅限 Proxy 子網路容量」。
如要瞭解如何設定區域性外部應用程式負載平衡器,請參閱「設定具備 VM 執行個體群組後端的區域性外部應用程式負載平衡器」。
預留額外的僅限 Proxy 子網路容量
區域和虛擬私有雲網路中的所有區域 Envoy 型負載平衡器,都會共用同一個 Envoy Proxy 集區。發生容錯移轉事件時,備份區域外部應用程式負載平衡器的 Proxy 使用量會增加,以處理主要負載平衡器的容錯移轉流量。預留足夠的 Proxy 容量,可確保容錯移轉事件不會中斷相同區域和網路中的其他區域 Envoy 型負載平衡器。
為確保備份負載平衡器隨時有可用容量,請檢查僅限 Proxy 的子網路大小。建議您計算預估的 Proxy 數量,以處理特定區域的流量,並視需要增加容量。如要進一步瞭解 Proxy 容量限制和大小計算,請參閱「Cloud Load Balancing 定價」中的「Proxy 執行個體費用」一節。
如果您使用 DNS 政策將流量分配給不同區域的多個備份負載平衡器,估算每個區域和網路的 Proxy 需求時,就必須將這點納入考量。較大的 Proxy 專用子網路可讓系統在必要時,為負載平衡器Google Cloud 指派更多 Envoy Proxy。
您無法以擴展主要位址範圍的方式 (使用 expand-ip-range 指令) 擴展僅限 Proxy 的子網路。您必須建立符合需求的備份僅限 Proxy 子網路,然後將其升級為活動角色。
如要瞭解如何變更僅限 Proxy 子網路的大小,請參閱「變更僅限 Proxy 子網路的大小或位址範圍」。
在主要和備份負載平衡器之間共用後端
如要實現完整的基礎架構備援,您必須在負載平衡器和後端層級導入備援機制。也就是說,您必須設定備份區域外部應用程式負載平衡器,並搭配與主要負載平衡器不重疊的後端 (執行個體群組或網路端點群組)。
如果您選擇為主要和備份負載平衡器使用相同的後端,則必須在這些後端所在的區域中,建立每個備份區域外部應用程式負載平衡器。此外,如果執行個體群組已啟用自動調度資源功能,您必須符合下列條件,才能確保系統正常執行容錯移轉:
- 僅使用 CPU 調整自動配置器。系統不支援根據負載平衡器使用率自動調度資源。
- 全域和區域後端服務都只能使用
UTILIZATION平衡模式。請勿使用RATE平衡模式,因為在容錯移轉程序期間,執行個體可能會從全域和區域負載平衡器接收 2 倍的流量。 - 設定縮減控制項,防止自動調度器在停機期間,流量從全域負載平衡器切換至區域負載平衡器時,過早縮減群組。這段停機時間可能長達 DNS 存留時間 (TTL) 加上設定的健康狀態檢查間隔。
如果未正確設定自動調度資源功能,可能會在容錯移轉期間發生次要中斷,因為全域負載平衡器失去流量後,區域負載平衡器接管前,執行個體群組會快速縮減。
設定主動/被動容錯移轉
如要設定主動/被動容錯移轉,請按照下列步驟操作:
- 查看架構注意事項:建立資源前,請先查看區域負載平衡器的注意事項,確認功能相容性、Proxy 容量和共用後端自動調度資源需求。
- 設定主要負載平衡器:設定全域外部應用程式負載平衡器,後端服務分布在一個或多個區域。如要進一步瞭解如何設定全域外部應用程式負載平衡器,請參閱「設定全域外部應用程式負載平衡器」。
- 檢查主要負載平衡器設定:確認備份區域外部應用程式負載平衡器支援主要負載平衡器使用的功能,例如安全性功能、流量管理和路由功能,以及 Cloud CDN。如果沒有類似功能,這個負載平衡器可能就不適合用於容錯移轉。
- 設定備份區域性外部應用程式負載平衡器:在要進行流量容錯移轉的區域中,設定獨立的區域性外部應用程式負載平衡器。如要瞭解如何設定區域性外部應用程式負載平衡器,請參閱「設定具有 VM 執行個體群組後端的區域性外部應用程式負載平衡器」。
- 設定 DNS 路由和健康狀態檢查:為主要負載平衡器建立健康狀態檢查,並設定 Cloud DNS 容錯移轉路由政策,偵測中斷情形並將用戶端流量轉送至備份區域負載平衡器。
設定主動/主動旁路
如要設定「作用中-作用中」架構,請按照下列步驟操作:
查看架構注意事項:建立資源前,請先查看區域負載平衡器的注意事項,確認功能相容性,並確保僅限 Proxy 的子網路容量可處理穩定狀態和容錯移轉流量。
設定區域性外部應用程式負載平衡器:設定區域性負載平衡器前,請先參閱功能相容性和限制。在兩個或多個區域中部署區域性外部應用程式負載平衡器,並搭配後端服務、外部 IP 位址、SSL 憑證和區域性 Cloud Armor 安全性政策。如需設定操作說明,請參閱「設定具有 VM 執行個體群組後端的區域性外部應用程式負載平衡器」。
設定區域負載平衡器的 DNS:建立 DNS 記錄 (例如
regional-api.example.com),使用地理位置或延遲時間路由政策,指向區域外部應用程式負載平衡器的外部 IP 位址。在這項記錄中啟用 DNS 健康狀態檢查,即可偵測特定區域的故障情形,並自動將流量從該區域轉送至其他健康區域。設定全域外部應用程式負載平衡器:預留全域外部 IP 位址,並建立類型為
INTERNET_FQDN_PORT的全域網際網路網路端點群組 (NEG)。將端點新增至網際網路 NEG,指向區域 DNS 記錄 FQDN,例如regional-api.example.com。設定全域外部應用程式負載平衡器的後端服務、連結網際網路 NEG,並視需要啟用 Cloud CDN 或 Cloud Armor。設定網址對應、目標 HTTP(S) Proxy 和全域轉送規則。設定 DNS 容錯移轉和健康狀態檢查:使用
FAILOVER轉送政策建立主要服務 DNS 記錄 (例如api.example.com)。請確認記錄集的主要端點指向全域外部應用程式負載平衡器的 IP 位址,備份端點則指向區域外部應用程式負載平衡器的外部 IP 位址。設定 DNS 健康狀態檢查,監控全域外部應用程式負載平衡器。
最佳做法
設定 Cloud DNS 記錄和健康狀態檢查時,請注意下列最佳做法:
計算服務中斷時間:流量從主要負載平衡器容錯移轉至備用負載平衡器所需的時間,取決於 DNS TTL、健康狀態檢查間隔和健康狀態檢查的不良健康狀態判定門檻參數:
使用 Google Cloud DNS 時,這段期間的上限可透過下列公式計算:
Duration of outage = DNS TTL + Health Check Interval * Unhealthy Threshold將 DNS TTL 設為 30 到 60 秒。TTL 值越高,容錯移轉時間就越長,因為即使 DNS 已容錯移轉至備份區域外部應用程式負載平衡器,網際網路上的用戶端仍會繼續存取主要外部應用程式負載平衡器。
設定健康狀態檢查門檻:設定「健康狀態良好」和「健康狀態不佳」門檻參數,避免因暫時性網路錯誤而導致容錯移轉。門檻越高,流量容錯移轉至備份負載平衡器所需的時間就越長。
使用微量流量進行驗證:設定
--backup-data-trickle-ratio旗標,即使主要負載平衡器健康狀態良好,仍持續將一小部分流量傳送至備份負載平衡器。確保備份基礎架構處於啟用狀態,且已準備好處理流量。您可以設定傳送至備份負載平衡器的流量比例,設定的值須為介於 0 到 1 之間的分數。一般值為 0.1,但 Cloud DNS 允許您將 100% 的流量傳送至備用 VIP 位址,手動觸發容錯移轉。定期測試容錯移轉和容錯回復:在災難復原計畫中加入容錯移轉測試。確認流量是否從主要負載平衡器逐漸或突然轉移至備份負載平衡器,並確認流量在容錯回復後是否順利返回主要負載平衡器。