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 分鐘的停機時間。
有關限制的更多詳細資訊,請參閱 多站點部署的概念 指南。
不同的指南介紹了必要的概念和建構區塊。對於每個建構區塊,藍圖展示了如何設定一個完全正常運作的範例。在準備生產環境時,仍然建議進行額外的效能調整和安全性強化。