win10 玩轉keycloak集群部署-協議JDBC_PING


下載安裝 Keycloak,建議安裝 keycloak 4.8.3 及以上版本,Keycloak 官網下載地址:https://www.keycloak.org/downloads

這里以 win64 系統為例,下載安裝 keycloak-4.8.3.Final.zip,需求的 Java 版本為 JDK 1.8及以上。下載完成后,解壓縮文件,雙擊運行 keycloak-4.8.3.Final/bin 目錄下的 standalone.bat 文件,啟動 Keycloak。

Keycloak 的本地訪問地址為:http://localhost:8080/auth/,訪問該地址,點擊頁面中的“Administration Console“,創建 Keycloak 的管理員賬戶,該賬戶用於在 Keycloak 中進行配置,管理用戶、角色等。

您可以通過以下方式配置使用 IP並更改 Keycloak 的端口:

在 keycloak-4.8.3.Final/bin 目錄下,執行以下 DOS 命令:

standalone.bat -Djboss.socket.binding.port-offset=100 -Djboss.bind.address=192.168.112.172

  • -Djboss.socket.binding.port-offset:設置端口偏移量,100表示默認端口號+100,此時 Keycloak 端口號更改為:8180
  • -Djboss.bind.address:設置 Keycloak 所在機器的 IP 地址

 

如果你通過上面的步驟能打開頁面。說明你對部署keycloak有一定的熟悉了。我們使用keycloak的目的是什么呢?,為什么要用集群模式么?集群使用哪種模式?,怎么部署集群?

好多的問題,和考驗。因為keycloak目前並不是很開放的原因,因此外界的文檔都不是很成熟的集群部署,好多文章都是復制粘貼官網的信息。然而官網的信息配置也只是大概,也不是完全能成功部署的,我這篇文章,來源本人花費整整兩周的時間,一點一點的研究起來的。

先說一下,集群的大概思想:

一。同步共享keycloak數據信息,如果共享,那就是接外數據庫。這個步驟網上不少,我是mysql數據庫。

二。數據同步共享以后,我們要解決session共享問題。這個就是下面講解的通過JDBC_PING協議,同步信息

三。上面好多人對Jgroup協議不了解。官網推薦好多種。新手看着頭大。本人推薦用JDBC_PING協議。這個協議是跨機器信息同步。只需要連接一個共享mysql數據庫,就可以解決我們

session同步的問題,並且不用關心,節點發現、因為。JDBC_PING協議已經幫我們解決了這個大難題。那就是通過數據庫一張表評價jgroupping這個表

 

通過上面的思想以后,我們要在下面解決我們的難題:

一。啟動

keycloak部署集群的方式 目前是通過。。standalone\configuration\standalone-ha.xml  這個模式配置文件啟動的。

第一步就應該難道好多人吧,啟動命令:

就是通過bin\standalone.bat 啟動,上面說過啟動必須指定standalone-ha.xml 文件,這樣才是集群啟動的方式。

啟動方式直接給大家 bin\standalone.bat  --server-config=standalone-ha.xml -DJGROUPS_DISCOVERY_EXTERNAL_IP=192.168.1.107  -DJGROUPS_DISCOVERY_PROTOCOL=JDBC_PING -Dfile.encoding=UTF-8 -Dfile.io.encoding=UTF-8 -DjavaEncoding=UTF-8 

 

好對人對面的啟動命令,不是很了解。JGROUPS_DISCOVERY_EXTERNAL_IP 是指定本地ip; JGROUPS_DISCOVERY_PROTOCOL=JDBC_PING 是同步session按照JDBC_PING 的方式啟動。有了這兩個命令。我們才能玩轉session同步問題

 

二。配置

上面把啟動的方式告訴大家了。下面也是最難得,就是配置。配置的難度,按照上面的思想。下面同步數據配置:

跟着步驟走:

配置數據源信息:

1.先寫一個module.xml

 

 

 

這個xml放置的問題,如下面標題的位置放置。沒有這個目錄自己創建

 

 

 

接着我們需要在我們的standalone-ha.xml 配置如下:

 

 

 

 

經過以上的步驟我們就完成了,數據源共享的問題:

 

二。session同步

 

下面才是最難的配置,這個也是目前我認為keycloak的精華點。目前官網都有指導,但是目前市場上面很難有一篇文章講清楚,玩轉這個的。我也是在摸索的情況下完成的,對JDBC_PING協議session共享的實現。

首先講解一下,為什么keycloak可以實現session共享,那就不得不說,keycloak內部有一個好東西。那就是infinispan 分布式緩存。市場很難流行。但是就常常能在高端場景見到。

 

不像redis那樣流行,但就是一個好東西。分布式緩存。就是因為有這個組件的存在,keycloak的內部節點才能被通知,發現。也是因為這個,keycloak的集群才能玩的起來。

因此懂infinispan 比較重要。owners 更是亮點簡單配置

 

 

 

 

上面了解一下分布式內存,下面我們就根據這個原理,開始配置

三。配置JDBC_PING (重點)--需要請聯系本人,因為這個配置是本人花費兩周日夜研究的配置。---------很重要呦,不知道這個地方的配置,集群就無法玩轉session同步。

可以簡單給點模糊配置

 

 

四。http通信為什么不能發現目標,而是報錯:

 

 如果大家遇到這個問題,也請聯系本人。這個問題。也是本人花費了好幾天的時間研究出來的。

通信問題

1、通信報錯、

2,通信節點發現不了

3.節點之間退去程序無法刪除session信息節點,造成重啟,連接失敗

 

上面的配置大家可以自己玩。目前不是研究太深。但是跨機器的集群是完全可以使用的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM