Keycloak 和 JDBC Ping

2019 年 8 月 12 日 由 Sebastian Łaskaiwec 發佈

幾個月前,我們發表了一篇關於使用 JDBC_PING 協定進行叢集化的精彩文章。自那時起,我們針對 Keycloak 容器映像 引入了一些改進,可以簡化設定。因此,在深入閱讀這篇部落格文章之前,我強烈建議您先瀏覽 Keycloak 叢集設定 文章。

我們的容器映像做了哪些變更?

可能最重要的變更,是使用變數設定 JGroups 探索協定(請參閱 Pull Request)。變更實施後,我們可以透過設定兩個屬性來設定 JGroups 探索:

讓我們應用這些變更吧...

基於 JDBC_PING 的設定在所有將所有 Keycloak 實例連接到同一個資料庫的場景中都能正常運作。由於 JDBC_PING 可以設定為使用 JNDI 綁定來取得資料庫連線,因此可以輕鬆連接到 Keycloak 資料庫。我們需要做的只是在我們的 Docker 映像中新增兩個參數:

您可以在這裡找到一個端到端的案例。

額外的設定

在某些情況下,您可能需要額外的設定。所有額外的設定都可以新增至 JGROUPS_DISCOVERY_PROPERTIES。以下是一些提示和常見問題,您可能會遇到:

問題描述 可能的解決方案
需要調整初始化 SQL 在這種情況下,您可能會想查看initialize_sqlJDBC_PING 屬性
當 Keycloak 崩潰時,資料庫不會被清除 開啟remove_old_coords_on_view_change屬性
當 Keycloak 崩潰時,資料庫不會被清除 此外,當叢集不太大時,您可以開啟remove_all_data_on_view_change屬性
有時,Keycloak 不會將其資料寫入資料庫 您可以降低info_writer_sleep_timeinfo_writer_max_writes_after_view屬性值


玩得開心,別忘了使用 使用者郵件列表 告訴我們您對這篇部落格文章的看法。
Sebastian Łaskawiec 和 Keycloak 團隊