Azure 應用程式閘道 for Containers 是一款管理式應用層(第 7 層)負載平衡與動態流量管理服務,適用於運行於 Kubernetes 中的工作負載。 它會將收到的請求導向叢集中的後端目標。
當您使用 Azure 時, 可靠性是共同的責任。 Microsoft 提供一系列功能以支援韌性與復原。 您有責任瞭解這些功能在您使用的所有服務中如何運作,並選取符合業務目標和正常運作時間目標所需的功能。
本文說明 Azure 應用程式閘道 for Containers 如何處理暫時性故障、可用性區域故障、區域性故障及服務維護。 同時也說明了備份與還原選項,以及服務水準協議(SLA)的關鍵資訊。
可靠性的生產部署建議
Application Gateway for Containers 預設為高度可用。 針對生產工作負載:
為了區域冗餘,請在支援可用性區域的區域部署容器應用閘道(Application Gateway for Containers)。 該服務在這些區域中會自動進行跨可用性區域備援。
配置你的 Kubernetes 叢集、Kubernetes 資源和後端工作負載以提升區域韌性。 相關指引請參見「 可用性區失效韌性」。
為了因應整個區域範圍的故障,請在每個區域部署 Application Gateway for Containers 及其相依工作負載,並設定跨區域流量管理。 如需指引,請參閱自訂的多區域復原解決方案。
關於拓撲、流量、可靠性、安全性與營運的範例架構與指引,請參閱 在 Azure Kubernetes Service 上部署 Application Gateway for Containers。
可靠性架構概觀
本節說明服務運作中從可靠性角度來看最為重要的部分。 本節介紹邏輯架構,包含你部署和使用的部分資源與功能。 它還討論了物理架構,其中提供了有關服務如何在幕後工作的詳細信息。
邏輯架構
Application Gateway for Containers 部署包含 Azure 及 Kubernetes 叢集中的資源。
- Azure 資源:控制平面會根據你的設定來協調閘道的代理設定。 Azure 管理的資料平面在叢集外部執行,處理應用程式流量。
- Kubernetes 資源: 你可以透過 Kubernetes 資源來定義路由和其他設定。 ALB 控制器會在您的叢集中執行、監看這些資源,並將您的設定傳播到 Azure 中的容器應用程式閘道。
你可以在兩種 部署策略中選擇。 採用自備(BYO)策略時,您會透過 Azure 工具管理容器應用程式閘道、關聯與前端資源的生命週期。 採用 ALB 控制器管理策略,ALB 控制器會根據你定義的 Kubernetes 資源來管理這些 Azure 資源的生命週期。
關於元件的完整說明,請參閱 Application Gateway for Containers 元件。
部署並設定 Application Gateway for Containers 後,它會將收到的要求路由至 後端目標,這些目標代表你在 Kubernetes 中執行的應用程式。
若 ALB 控制器或控制平面無法使用,資料平面繼續使用最後成功套用的設定處理流量。 在服務中斷期間,設定更新不會傳播,服務也無法以程式設計方式設定擴增事件所需的組態。
實體架構
Azure 根據應用程式流量管理並自動擴展資料平面基礎設施。 容器適用的應用程式閘道總是以高可用性配置部署:在支援可用性區域的區域,閘道器是區域冗餘的;在不支援可用性區域的區域,Azure 會使用可用性集。
對瞬態故障的彈性
暫時性錯誤是元件中的短暫間歇性失敗。 它們經常出現在雲端等分散式環境中,而且是作業的一般部分。 暫時性錯誤會在短時間內自行修正。 請務必確保您的應用程式能妥善處理暫時性錯誤,通常透過重試受影響的請求來進行。
所有雲端託管應用程式在與任何雲端託管的 API、資料庫及其他元件通訊時,都應遵循 Azure 暫態故障處理指引。 如需相關資訊,請參閱處理瞬態故障的建議。
使用 容器應用閘道時,請考慮以下最佳實務:
實作重試邏輯: 設定客戶端在短暫連線失敗後重試請求。
設定具有容錯的健全狀態探查。 如果你設定自訂健康探針,請將 不健康閾值 設定為可容忍暫時性故障。 不健康閾值指定連續失敗探測次數,會觸發後端目標被標記為不健康。 預設健康探針將不健康閾值設為三次探針,有助於防止單一暫態探針故障將後端標記為不健康。
對可用性區域故障的抵抗力
可用性區域 是 Azure 區域內物理上獨立的資料中心群組。 當某個區域發生故障時,服務可以切換至其他剩餘的區域。
當你在支援可用性區域的 Azure 區域部署容器適用的應用程式閘道時,Microsoft 會自動將控制平面和資料平面設定為跨多個可用性區域的區域冗餘。 您不會自行選擇服務要使用哪些區域。
Important
Microsoft 負責管理 Application Gateway for Containers 控制平面與資料平面的區域冗餘。 為了達成端到端區域韌性,請配置你的 Kubernetes 叢集、Kubernetes 資源與後端工作負載,以提供跨區域的健康目標。
Requirements
區域支援: 要使用區域冗餘,請選擇同時支援適用於容器的 Application Gateway 與可用性區域的區域。 檢查 Application Gateway for Containers 區域可用性,並與 支援可用性區域的區域清單做比較。
Considerations
與你的 Kubernetes 平台共同負責:Microsoft 在可用性區域故障期間,負責管理 Application Gateway for Containers 的流量重新導向。 對於 Azure Kubernetes Service (AKS),Microsoft 管理 Kubernetes 控制平面。 您必須負責為叢集的節點集區與其他受管理的資源設定區域復原能力,並負責應用程式在區域中斷期間的行為。
叢集:請將您的 AKS 節點集區與其他由您管理、綁定至區域的叢集資源設定為橫跨可用性區域。 AKS負責管理控制平面;請參見「為 AKS 節點池配置可用性區域」。
你的工作量: 你負責部署多個 pod 副本,分散在不同區域,並確保後端工作負載健全,能在區域中斷時處理流量。 你可以使用跨可用區的節點池、拓撲擴散限制和 Pod 反親和性。
Kubernetes 配置物件: Application Gateway for Containers 使用由叢集 API 儲存的 Kubernetes 配置物件。 它們的可用性取決於 Kubernetes 控制平面以及你在叢集中管理的配置。
ALB 控制器:您會在 Kubernetes 叢集中部署 ALB 控制器,以協調設定。 它不屬於 Application Gateway for Containers 的資料路徑。
ALB 控制器會執行兩個複本,其中一個擔任領導者,另一個則擔任次要角色。 若主節點無法使用,次節點可成為主節點並繼續傳播組態設定。 兩個副本可能會在同一個可用區域執行,視叢集如何排程而定。 你負責配置叢集和控制器 Pods 以提升區域韌性。 使用 pod 拓撲擴散限制或 pod 反親和性來將副本分配到不同區域。 更多資訊請參閱 「設定 AKS 節點池的可用性區域」。
Cost
容器應用閘道的可用性區域支援不會產生超出標準服務價格的額外費用。 欲了解價格詳情,請參閱 Azure 應用程式閘道 定價。
設定可用性區域支援
當你在支援的區域部署新閘道器時,預設它是區域冗餘的。 你不需要在 Azure 資源上啟用區域冗餘。
你負責配置 Kubernetes 叢集、ALB Controller 以及後端工作負載以提升區域韌性。
所有區域都狀況良好時的行為
本節說明當您在支援可用性區域的區域中部署容器應用程式閘道,且服務使用的所有區域均正常運作時,會有何預期情況。
跨區作業:由 Azure 管理的適用於容器的 Application Gateway 資料平面,將收到的請求分散到多個可用區的基礎設施中。
你負責設定後端工作負載跨可用區運行,並提供健康的目標來接收這些流量。
跨區域資料複寫: Application Gateway for Containers 不會儲存應用程式資料。 平台透過區域冗餘控制平面管理配置狀態,以提供耐用性與韌性。
區域失敗期間的行為
本節說明當您在支援可用性區域的區域部署 Application Gateway for Containers,且服務所使用的其中一個可用性區域發生中斷時,會遇到的情況。
偵測與回應: 區域中斷期間,容器應用程式閘道會將流量重新導向到其餘健全區域中的基礎結構。 你不需要對閘道的流量重新分配採取行動。
然而,你必須對這次中斷對 Kubernetes 叢集和後端應用程式的影響負責。
- 通知: Microsoft 不會在區域關閉時自動通知您。 不過,你可以使用 Azure 服務健康狀態 來了解服務整體健康狀況,包括任何區域故障,並且可以設定 Service Health 警示來通知你問題。
作用中的要求:對失敗區域的現有連線會被捨棄。 用戶端應依照《 Resilience to transient faults》中的指引重新嘗試請求。 在剩餘的健康區域中,建立了與基礎設施的新連線。
預期資料遺失: Application Gateway for Containers 不會儲存應用程式資料。 平台透過區域冗餘控制平面管理配置狀態,以提供耐用性與韌性。
預期的停機時間: 當與故障區域的連線中斷時,用戶端可能會遇到短暫中斷。 用戶端應重新嘗試請求,以與剩餘健康區域中的基礎設施建立新連線。
Azure 管理的控制平面在單一可用性區域中斷時仍可使用。 不過,你能否套用設定更新,也取決於 Kubernetes 控制平面和 ALB 控制器的可用性。
重新分配: Application Gateway for Containers 會將流量導向剩餘健康區域的基礎設施。
區域復原
Application Gateway for Containers 可從底層問題中自行復原。 Azure 負責管理閘道基礎設施的復原。
測試區域失敗
容器應用程式閘道平台會管理流量路由,以及閘道本身對區域失敗的回應。 你不需要啟動或管理閘道器的回應內容。 如果你有管理的 Kubernetes 叢集,可以用 Azure Chaos Studio 測試叢集對可用區故障的反應。 欲了解更多資訊,請參閱 測試可用性區域韌性。
對區域範圍故障的復原能力
Application Gateway for Containers 是一項單一區域服務。 如果你部署閘道器的 Azure 區域無法使用,那該閘道器就無法使用。
客製化多區域韌性解決方案
Application Gateway for Containers 並未提供內建的多區域部署或故障轉移解決方案。 要為因應區域性故障進行設計,請在每個區域部署並配置獨立的閘道器與 Kubernetes 叢集。 你負責在區域閘道間導引流量並設定故障轉移。
在各區域間一致配置 Application Gateway for Containers。 為了簡化部署並保持配置一致,請使用像 Bicep 或 Terraform 這類工具,將你的基礎設施定義為程式碼(IaC)。
選擇並設定全域流量管理服務,例如 Azure Front Door 或 Azure 流量管理員,將客戶導向區域閘道。 這些服務使用不同的路由模型與健康探測配置。 設定所選服務將流量導離無法使用的閘道器,並檢視其文件以了解路由行為及故障轉移的考量。 Azure Front Door 也提供分散式阻斷服務攻擊(DDoS)防護、網頁應用防火牆(WAF)功能,以及基於規則的路由等功能。
在每個區域部署後端應用程式,並設定它們在發生中斷期間維持工作負載健康。 如果你的應用程式依賴資料或其他 Azure 服務,也要設計並配置這些服務以支援多區域可用性。 請查閱各項服務的可靠性指引,了解其多區域選項與限制。
備份與還原
Application Gateway for Containers 不會儲存應用程式資料。 Azure Resource Manager 儲存閘道的 Azure 資源配置。 你可以透過重新部署這些資源的設定來重建它們。
你負責維護設定以及定義閘道如何部署與流量路由的 Kubernetes 資源:
以程式碼形式的基礎結構 (IaC) 定義 Azure 資源及其設定,例如 Bicep 或 Terraform,並將這些定義保留在版本控制中。 你可以用它們重新部署閘道資源。
備份配置閘道的 Kubernetes 資源,例如
ApplicationLoadBalancer、Gateway和HTTPRoute資源。 當你需要重新建立路由設定時,請將它們還原到你的叢集。在版本控制或標準組態備份流程中,保留相關設定,包括自訂規則與網頁應用防火牆政策。 你可以使用部署管線來穩定重建 Azure 和 Kubernetes 資源。
服務維護的韌性
Microsoft 管理 Application Gateway for Containers 的維護,同時維持服務的高可用性。
每個關聯所需的最小子網大小 /24 已將維護時段納入考量,因此不需要額外分配子網 IP 位址空間來進行維護。
欲了解更多資訊,請參閱 適用於容器的 Application Gateway 的擴展與可用性。
服務等級協定
Azure 服務的服務層級協議(SLA)描述了每項服務的預期可用性,以及您的解決方案必須符合的條件,以達成該可用性預期。 欲了解更多資訊,請參閱線上服務的服務等級協議。
容器應用程式閘道的 SLA 會分別衡量控制平面與資料平面。 兩個平面都會納入整體 SLA 計算。