全域外部應用程式負載平衡器的容錯移轉

為防範基礎架構中斷或設定錯誤,您可以為全域外部應用程式負載平衡器設計容錯移轉策略。這些策略會使用區域性外部應用程式負載平衡器,並將流量從全域外部應用程式負載平衡器轉送至這些負載平衡器,以便在全域基礎架構中斷或設定錯誤時,維持高可用性。

在容錯移轉架構中,您會部署一個主要負載平衡器和一或多個備份負載平衡器:

  • 「主要負載平衡器」是全域外部應用程式負載平衡器,負責在正常運作期間處理用戶端流量。
  • 備用負載平衡器是區域性外部應用程式負載平衡器,會在主要負載平衡器未通過健康狀態檢查時接收流量。

容錯移轉和容錯回復是自動流量轉送程序:

  • 當 Cloud DNS 偵測到服務中斷,並將流量從主要負載平衡器轉送至備用負載平衡器時,就會發生容錯移轉。
  • 當健康狀態檢查通過後,Cloud DNS 會反轉這項路由,並將流量重新導向至主要負載平衡器,這稱為容錯回復。

本文說明如何從全域外部應用程式負載平衡器,容錯移轉至區域性備用負載平衡器。如要設定不同區域間的區域性外部應用程式負載平衡器容錯移轉,請參閱「區域性外部應用程式負載平衡器的高可用性」。

為何要使用區域性負載平衡器進行容錯移轉

區域性外部應用程式負載平衡器具有下列特性,因此最適合做為全域外部應用程式負載平衡器的容錯移轉負載平衡器:

  • 區域性外部應用程式負載平衡器獨立於個別Google Cloud 區域,也與在同一區域運作的任何全域外部應用程式負載平衡器基礎架構隔離。
  • 區域性外部應用程式負載平衡器和全域外部應用程式負載平衡器都以 Envoy Proxy 為基礎,並以類似的方式處理流量。

如要為全域外部應用程式負載平衡器實作全域至區域容錯移轉,請在要容錯移轉流量的區域中,建立兩個以上的區域性外部應用程式負載平衡器。

容錯移轉策略

您可以採用下列策略,為全域外部應用程式負載平衡器實作容錯移轉:

  • 主動-被動 (全域至區域容錯移轉):您部署一或多個區域性外部應用程式負載平衡器,僅用於備份。在穩定狀態下,Cloud DNS 會解析為全域外部應用程式負載平衡器的 IP 位址。如果全域負載平衡器故障,Cloud DNS 會將流量轉送至備用區域性負載平衡器。這項設定會使用 Cloud DNS 容錯移轉路由政策。
  • 主動-主動 (全域至區域略過):全域外部應用程式負載平衡器會做為邊緣前端,提供邊緣快取等 Cloud CDN 函式,使用具備完整網域名稱 (FQDN) 的網際網路網路端點群組 (NEG),將要求轉送至區域性外部應用程式負載平衡器。在穩定狀態下,流量會依序通過兩個負載平衡層。您可以使用 Cloud DNS 地理位置路由政策設定這項功能。如果全域負載平衡器發生中斷,DNS 路由政策會略過全域層,直接將用戶端流量轉送至區域性負載平衡器。

根據最佳做法,如果架構不仰賴具備容量感知功能的全球後端負載平衡,建議採用主動-主動策略。不過,如果應用程式明確要求全域後端負載平衡,根據後端容量分配及溢出流量,請實作主動-被動策略。

容錯移轉策略比較

下表比較主動-被動和主動-主動容錯移轉策略:

策略屬性 主動/被動 運作中對運作中
穩態流量 用戶端 → 全域外部應用程式負載平衡器 → 後端 用戶端 → 全域外部應用程式負載平衡器 → 區域性外部應用程式負載平衡器 → 後端
故障狀態流量

用戶端 → 區域性外部應用程式負載平衡器 → 後端。

服務仍可使用,但由於失去邊緣效能優勢,延遲時間可能會增加。

用戶端 → 區域性外部應用程式負載平衡器 → 後端 (略過全域外部應用程式負載平衡器)。

服務仍可使用,但由於失去邊緣效能優勢,延遲時間可能會增加。

設定管理 必須同步處理全域和區域性負載平衡器的獨立設定。 全域層只需要最基本的設定,因為大部分應用程式邏輯都位於區域性負載平衡器。不過,您必須在兩個層級複製邊緣安全性政策 (Cloud Armor) 和連線終止設定 (TLS 憑證)。
可靠性驗證 區域性外部應用程式負載平衡器在穩定狀態下處於閒置狀態。建議定期測試或傳送 DNS 微量流量。 穩態流量會持續測試區域性外部應用程式負載平衡器。建議您定期測試,或將微量流量直接傳送至區域性負載平衡器。
漸進式部署安全性 全域外部應用程式負載平衡器的設定變更會套用至全域。區域性外部應用程式負載平衡器變更會隔離,但穩態流量不會測試這些變更。 您可以逐一對各區域套用區域性外部應用程式負載平衡器變更。如果某個區域發生故障,全域層會自動將流量從該區域轉送至健康狀態良好的區域。
全域後端負載平衡

支援

全域外部應用程式負載平衡器可根據容量,平衡不同區域後端的流量。

受限

全域外部應用程式負載平衡器會將流量轉送至最靠近的區域性外部應用程式負載平衡器。區域性負載平衡器只會在本機平衡流量,不會根據後端容量將流量分散到其他區域。

費用與計費 資料處理費用適用於單一負載平衡層。在穩定狀態下,費用來自全域外部應用程式負載平衡器;區域性外部應用程式負載平衡器的費用僅在測試或容錯移轉事件期間產生。 在穩定狀態下,流量會同時流經全域和區域級,因此兩個負載平衡層會同時產生資料處理費用。
建議用途 工作負載需要進階全域後端負載平衡,以及跨區域的容量型流量溢出功能。 工作負載採用區域隔離設計,並使用全域層來提升邊緣效能和快取。

主動-被動策略

在主動-被動設定中,您可以在一或多個區域部署獨立的區域性外部應用程式負載平衡器,以及主要的全域外部應用程式負載平衡器或傳統版應用程式負載平衡器。

主動-被動容錯移轉的運作方式

下列設定示範如何從全域外部應用程式負載平衡器,容錯移轉至兩個備用區域性外部應用程式負載平衡器,其中一個位於全域負載平衡器已部署後端的各個區域。

從全域外部應用程式負載平衡器容錯移轉至兩個區域性外部應用程式負載平衡器。
從全域外部應用程式負載平衡器容錯移轉至兩個區域性外部應用程式負載平衡器 (按一下即可放大)。

主動-被動容錯移轉的工作流程如下:

  1. 穩定狀態:Cloud DNS 會將所有用戶端流量轉送至全域外部應用程式負載平衡器。
  2. 故障偵測: Google Cloud 會使用設定三個來源區域的健康狀態檢查,偵測主要負載平衡器是否健康。如果來自兩個以上來源區域的健康狀態檢查失敗,Cloud DNS 就會觸發容錯移轉。
  3. 容錯移轉:Cloud DNS 容錯移轉路由政策會將用戶端流量直接轉送至備份區域性外部應用程式負載平衡器。容錯移轉期間的延遲影響:區域性外部應用程式負載平衡器會在特定 Google Cloud 區域內終止連線,因此在容錯移轉期間,距離目的地區域較遠的用戶端可能會遇到延遲時間和封包往返時間 (RTT) 增加的情況。
  4. 容錯回復:健康狀態檢查再次成功後,Cloud DNS 會自動將流量還原至主要負載平衡器,不會造成停機,因為兩個負載平衡器都會提供流量。

主動-主動策略 (全域至區域略過)

在主動-主動策略中,全域外部應用程式負載平衡器會使用網際網路 FQDN NEG (INTERNET_FQDN_PORT),將流量傳送至兩個以上區域的區域性外部應用程式負載平衡器。

主動-主動略過模式的運作方式

下列設定示範如何從全域外部應用程式負載平衡器,容錯移轉至兩個備用區域性外部應用程式負載平衡器,其中一個位於全域負載平衡器已部署後端的各個區域。

從全域外部應用程式負載平衡器容錯移轉至兩個區域性外部應用程式負載平衡器。
從全域外部應用程式負載平衡器略過至兩個區域性外部應用程式負載平衡器 (按一下可放大)。

主動-主動容錯移轉的工作流程如下:

  1. 穩定狀態:流量從用戶端流向全域外部應用程式負載平衡器。全域負載平衡器會使用 INTERNET_FQDN_PORT 類型的網際網路 FQDN 網路端點群組 (NEG),將流量轉送至最近的區域性外部應用程式負載平衡器。區域性負載平衡器會將流量傳送至本機後端。
  2. 故障偵測:在穩定狀態下,如果單一區域性外部應用程式負載平衡器或其區域故障,全域外部應用程式負載平衡器會使用網際網路 NEG 上的 Cloud DNS 健康狀態檢查政策偵測故障。全域負載平衡器會自動將流量從健康狀態不佳的區域,轉送至健康狀態良好的區域性負載平衡器。
  3. 略過:如果全域外部應用程式負載平衡器發生中斷,Cloud DNS 容錯移轉政策會偵測到故障,並將流量直接轉送至區域性外部應用程式負載平衡器,完全略過全域層。略過時的延遲影響:全域外部應用程式負載平衡器可提供邊緣效能優勢,例如在更靠近使用者的位置終止連線,以及邊緣快取。流量略過全域負載平衡器時,用戶端連線會直接與區域 VIP 建立,這可能會增加地理位置較遠的用戶端連線延遲時間和 RTT。
  4. 容錯回復:全域負載平衡器通過連續健康狀態檢查後,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) 加上設定的健康狀態檢查間隔。

如果未正確設定自動調度資源,全域負載平衡器流量中斷,會導致執行個體群組在區域性負載平衡器接管前迅速縮減,進而在容錯移轉期間造成二次中斷。

設定主動/被動容錯移轉

如要設定主動-被動容錯移轉,請按照下列步驟操作:

  1. 查看架構注意事項:建立資源前,請先查看區域性負載平衡器的注意事項,確認功能相容性、Proxy 容量和共用後端自動調度資源需求。
  2. 設定主要負載平衡器:設定全域外部應用程式負載平衡器,並將後端服務分散至一或多個區域。如要進一步瞭解如何設定全域外部應用程式負載平衡器,請參閱「設定全域外部應用程式負載平衡器」。
  3. 查看主要負載平衡器設定:確認主要負載平衡器使用的功能 (例如安全防護功能、流量管理和轉送功能,以及 Cloud CDN),是否適用於備用區域性外部應用程式負載平衡器。如果沒有類似功能,這個負載平衡器可能不適合用於容錯移轉。
  4. 設定備份區域性外部應用程式負載平衡器:在要進行流量容錯移轉的區域,設定獨立的區域性外部應用程式負載平衡器。如要瞭解如何設定區域性外部應用程式負載平衡器,請參閱「設定具有 VM 執行個體群組後端的區域性外部應用程式負載平衡器」。
  5. 設定 DNS 路由和健康狀態檢查:為主要負載平衡器建立健康狀態檢查,並設定 Cloud DNS 容錯移轉路由政策,偵測服務中斷情形,並將用戶端流量轉送至備份區域性負載平衡器。

設定主動-主動略過

如要設定主動-主動架構,請按照下列步驟操作:

  1. 查看架構注意事項:建立資源前,請先查看區域負載平衡器的注意事項,確認功能相容性,並確保僅限 Proxy 子網路容量可處理穩定狀態和容錯移轉流量。

  2. 設定區域性外部應用程式負載平衡器:設定區域性負載平衡器之前,請先詳閱「功能相容性和限制」。在兩個以上的區域部署區域性外部應用程式負載平衡器,並搭配後端服務、外部 IP 位址、SSL 憑證和區域性 Cloud Armor 安全性政策。如需設定操作說明,請參閱「設定具有 VM 執行個體群組後端的區域性外部應用程式負載平衡器」。

  3. 設定區域性負載平衡器的 DNS:建立 DNS 記錄 (例如 regional-api.example.com),使用地理位置或延遲時間路由政策,指向區域性外部應用程式負載平衡器的外部 IP 位址。啟用這筆記錄的 DNS 健康狀態檢查功能,即可偵測特定區域是否發生故障,並自動將流量從該區域轉送至其他健康狀態良好的區域。

  4. 設定全域外部應用程式負載平衡器:保留全域外部 IP 位址,並建立 INTERNET_FQDN_PORT 類型的全域網際網路網路端點群組 (NEG)。在網際網路 NEG 中新增端點,指向區域 DNS 記錄 FQDN,例如 regional-api.example.com。為全域外部應用程式負載平衡器設定後端服務、附加網際網路 NEG,並視需要啟用 Cloud CDN 或 Cloud Armor。設定網址對應、目標 HTTP(S) Proxy 和全域轉送規則。

  5. 設定 DNS 容錯移轉和健康狀態檢查:使用 FAILOVER 路由政策建立主要服務 DNS 記錄 (例如 api.example.com)。請確認記錄集的主要端點指向全域外部應用程式負載平衡器的 IP 位址,備份端點則指向區域性外部應用程式負載平衡器的外部 IP 位址。設定 DNS 健康狀態檢查,監控全域外部應用程式負載平衡器。

最佳做法

設定 Cloud DNS 記錄和健康狀態檢查時,請注意下列最佳做法:

  • 計算中斷時間長度:流量從主要負載平衡器容錯移轉至備份負載平衡器所需的時間,取決於 DNS 存留時間、健康狀態檢查間隔,以及健康狀態檢查的不良門檻參數:

    使用 Google 的 Cloud DNS 時,這段時間的上限可透過下列公式計算:

    Duration of outage = DNS TTL + Health Check Interval * Unhealthy Threshold
    

    將 DNS 存留時間設為 30 到 60 秒。存留時間值越高,容錯移轉時間就越長,因為即使 DNS 已容錯移轉至備份區域性外部應用程式負載平衡器,網際網路上的用戶端仍會繼續存取主要外部應用程式負載平衡器。

  • 設定健康狀態檢查門檻:設定健康和不健康門檻參數,避免因暫時性網路錯誤而導致容錯移轉。門檻越高,流量容錯移轉至備用負載平衡器所需的時間就越長。

  • 使用微量流量進行驗證:設定 --backup-data-trickle-ratio 旗標,即使主要負載平衡器健康狀態良好,仍持續將一小部分流量傳送至備份負載平衡器。這可確保備份基礎架構處於運作狀態,並準備好處理流量。您可以設定傳送至備份負載平衡器的流量比例,設定的值須為介於 0 到 1 之間的分數。一般值為 0.1,但 Cloud DNS 可讓您將所有流量傳送至備用 VIP 位址,手動觸發容錯移轉。

  • 定期測試容錯移轉和容錯回復:在災難復原計畫中加入容錯移轉測試。確認流量從主要負載平衡器逐漸或突然轉移至備用負載平衡器,並確認流量在容錯回復後順利返回主要負載平衡器。