Share via


Azure Kubernetes Service (AKS) 的被動冷解決方案概觀

在 Azure Kubernetes Service (AKS) 中建立應用程式,並於資源建立過程中選擇 Azure 區域時,此為單一區域應用程式。 當區域在災害期間變得無法使用時,您的應用程式也將無法使用。 如果您在次要 Azure 區域中建立相同的部署,應用程式就不容易受到單一區域災害影響,可保證商務持續性,且跨區域的任何資料複寫都可讓您復原最近的應用程式狀態。

本指南概述 AKS 的被動冷解決方案。 在此解決方案中,我們將兩個獨立且相同的 AKS 叢集部署到兩個配對的 Azure 區域,當需要應用程式時,僅一個叢集會主動提供流量。

注意

我們已在內部檢閱下列做法,並與 Microsoft 合作夥伴合作進行審查。

被動冷解決方案概觀

在此方法中,我們會在兩個 Azure 區域中部署兩個獨立的 AKS 叢集。 需要應用程式時,會啟動被動叢集來接收流量。 如果被動叢集關閉,必須手動啟動冷叢集以接管流量。 可以每次透過手動輸入來設定此條件,也可以指定一個特定事件。

案例和組態

此解決方案最適合實作為「視需要」使用的工作負載,適用於需要工作負載在特定時間執行或視需要執行的情況。 被動冷方法的使用案例範例包括:

  • 製造企業需要在大型資料集上執行複雜且大量資源的模擬。 在這種情況下,被動叢集位於提供高效能運算和儲存體服務的雲端區域中。 只有使用者或排程觸發模擬時,才會使用被動叢集。 如果在觸發後叢集無法運作,則冷叢集可以做為備份使用,而工作負載可以改為在冷叢集上執行。
  • 政府機構需要在遭受網路攻擊或自然災害的情況下,依然能夠維護其重要系統和資料的備份。 在這種情況下,被動叢集位於公眾無法存取的安全隔離位置。

元件

被動冷災害復原解決方案會使用許多 Azure 服務。 此範例架構會用到下列元件:

多個叢集和區域:您可以部署多個 AKS 叢集,每個叢集都位於個別的 Azure 區域中。 需要應用程式時,會啟動被動叢集以接收網路流量。

Key Vault:您會在每個區域中佈建 Azure Key Vault 來儲存秘密和金鑰。

Log Analytics:區域 Log Analytics 執行個體可儲存區域網路計量和診斷記錄。 共用執行個體則可儲存所有 AKS 執行個體的計量和診斷記錄。

中樞輪輻組:每個區域 AKS 執行個體都會部署中樞輪輻組。 Azure 防火牆管理員原則可管理每個區域的防火牆規則。

Container Registry:工作負載的容器映像可儲存在受控容器登錄中。 透過此解決方案,單一 Azure Container Registry 執行個體可用於叢集中的所有 Kubernetes 執行個體。 Azure Container Registry 的異地複寫可讓您將映像複寫至選取的 Azure 區域,即使某個區域發生中斷,依然可持續存取映像。

容錯移轉程序

如果被動叢集因特定 Azure 區域中的問題而無法正常運作,您可以啟動冷叢集,並將所有流量重新導向至該叢集的區域。 當被動叢集停用時,您可以使用此流程,直到被動叢集再次開始運作為止。 冷叢集可能需要幾分鐘的時間才能上線,因為其已關閉且需要完成設定流程。 這種方法不適合時間敏感的應用程式。 在此情況下,建議您考慮主動-主動容錯移轉

應用程式 Pod (區域)

Kubernetes 部署物件可建立 Pod 的多個複本 (ReplicaSet)。 如果其中一個無法使用,則會在其餘複本之間路由傳送流量。 Kubernetes ReplicaSet 會嘗試使指定數目的複本正常執行。 如果一個執行個體停止運作,應重新建立新的執行個體。 活躍度探查可檢查 Pod 中執行的應用程式或程序的狀態。 如果 Pod 沒有回應,活躍度探查會移除該 Pod,將強制 ReplicaSet 建立新的執行個體。

如需詳細資訊,請參閱 Kubernetes ReplicaSet

應用程式 Pod (全域)

若整個區域變得無法使用,叢集中的 Pod 將無法為要求提供服務。 在這種情況下,Azure Front Door 執行個體會將所有流量路由傳送到其餘健康的區域。 這些區域中的 Kubernetes 叢集和 Pod 將繼續為要求提供服務。 若要對剩餘叢集增加的流量和要求進行補償,請記住下列指導:

  • 確保網路和計算資源的大小正確,可承受因區域容錯移轉而導致的流量突增。 例如,使用 Azure 容器網路介面 (CNI) 時,請確保您有一個子網路可支援具有尖峰流量負載的所有 Pod IP。
  • 使用水平 Pod 自動調整程式來增加複本計數,以針對增加的區域需求進行補償。
  • 使用 AKS 叢集自動調整程式來增加 Kubernetes 執行個體節點計數,以針對增加的區域需求進行補償。

Kubernetes 節點集區 (區域)

計算資源有時候可能會發生局部故障,例如單一 Azure 伺服器機架中的電源無法使用。 若要保護 AKS 節點以免變成單點區域失敗,請使用 Azure 可用性區域。 可用性區域可確保每個可用性區域中的 AKS 節點實際獨立於另一個可用性區域中定義的節點。

Kubernetes 節點集區 (全域)

在完全區域失敗中,Azure Front Door 會將流量路由傳送到其餘健康的區域。 同樣地,請務必針對剩餘叢集增加的流量和要求進行補償。

容錯移轉測試策略

雖然 AKS 中目前沒有機制可基於測試目的關閉整個部署區域,但 Azure Chaos Studio 提供了在叢集上建立混沌實驗的功能。

下一步

如果考慮使用不同的解決方案,請參閱下列文章: