多站點部署

連接不同站點中的多個 Keycloak 部署,以提高整體可用性

Keycloak 支援由多個 Keycloak 實例組成的部署,這些實例使用其 Infinispan 快取相互連接;負載平衡器可以將負載平均分配到這些實例。這些設置適用於單一站點上的透明網路。

Keycloak 高可用性指南更進一步描述了跨多個站點的設置。雖然此設置增加了額外的複雜性,但對於某些環境來說,額外的高可用性可能是必需的。

何時使用多站點設置

Keycloak 的多站點部署功能主要針對以下使用案例:

  • 限制在單個 AWS 區域或等效的低延遲設置中。

  • 允許計劃性的維護停機。

  • 符合定義的用戶和請求數量。

  • 可以接受週期性停機的影響。

已測試的配置

我們定期使用以下配置測試 Keycloak:

  • 在同一個 AWS 區域中的兩個 Openshift 單一可用區域叢集

    • 使用 Red Hat OpenShift Service on AWS (ROSA) 透過 ROSA HCP 佈建。

    • 每個 Openshift 叢集的所有工作節點都在單一可用區域中。

    • OpenShift 版本 4.16。

  • Amazon Aurora PostgreSQL 資料庫

    • 高可用性,在一個可用區域中具有主要資料庫實例,在第二個可用區域中具有同步複製的讀取器

    • 版本 16.1

  • AWS Global Accelerator,將流量發送到兩個 ROSA 叢集

  • 由 ROSA 的 Prometheus 和 Alert Manager 觸發的 AWS Lambda,以自動化故障轉移

雖然等效的設置應該可行,但您需要驗證您環境的效能和故障行為。我們在 Keycloak Benchmark Project 中提供了功能測試、故障測試和負載測試。

請參閱 建構區塊多站點部署 指南以了解更多關於每個項目的資訊。

已測試的負載

我們定期使用以下負載測試 Keycloak:

  • 100,000 個使用者

  • 每秒 300 個請求

雖然我們在這些值的測試中沒有看到硬性限制,但我們建議您使用水平和垂直擴展的 Keycloak 名稱實例和資料庫來測試更高的容量。

請參閱 CPU 和記憶體資源大小調整的概念 指南以獲取更多資訊。

限制

即使兩個站點具有額外的冗餘,仍然可能發生停機

  • 在升級 Keycloak 或 Infinispan 期間,兩個站點都需要離線一段時間才能完成升級。

  • 在某些故障情況下,可能會出現長達 5 分鐘的停機時間。

  • 在某些故障情況發生後,可能需要人工干預才能透過將故障站點重新上線來恢復冗餘。

  • 在某些切換情況下,可能會出現長達 5 分鐘的停機時間。

有關限制的更多詳細資訊,請參閱 多站點部署的概念 指南。

下一步

不同的指南介紹了必要的概念和建構區塊。對於每個建構區塊,藍圖展示了如何設定一個完全正常運作的範例。在準備生產環境時,仍然建議進行額外的效能調整和安全性強化。

在本頁中