Openfire 集群部署和負載均衡方案
一. 概述
Openfire是在即時通訊中廣泛使用的XMPP協議通訊服務器,本方案采用Openfire的Hazelcast插件進行集群部署,采用Haproxy進行負載均衡,在示例環境中測試通過。
二. 示例環境
服務器配置如下:
服務器名 |
用途 |
操作系統 |
IP |
PC647 |
Openfire節點1 |
Windows7 |
10.200.10.11 |
seasky |
Openfire節點2 |
Windows xp |
10.200.10.18 |
Lub1 |
Mysql數據庫 |
LUbuntu 12 |
10.200.10.12 |
Lub3 |
負載均衡器 |
LUbuntu 12 |
10.200.10.19 |
所用軟件版本如下:
軟件名稱 |
版本號 |
用途 |
提供商 |
Openfire |
3.10beta |
Xmpp服務器 |
Jive Software |
Hazelcast |
1.3.3 |
Openfire集群插件 |
Tom Evans |
Mysql server |
5.5.0 |
配套數據庫 |
Oracle |
Haproxy |
1.4.18 |
TCP負載均衡器 |
HAProxy |
RooyeeMessager |
3.6.1 |
Xmpp客戶端 |
深圳如意通 |
三. 軟件安裝
- 在PC647和seasky上安裝openfire,軟件下載地址:http://download.igniterealtime.org/openfire/openfire_3_10_0_beta.exe
- 在lub1上安裝mysql
安裝命令:sudo apt-get install mysql-server
- 在lub3上安裝haproxy.
安裝命令:sudo apt-get install haproxy
四. 集群部署
1.安裝openfire后啟動管理控制台進行配置,
2.設置安裝語言后進入服務器設置,設置域名信息。注意集群中每個openfire節點應該使用相同的域名。
3.在mysql數據庫中創建openfire數據庫,執行openfire_mysql.sql創建數據表,該文件位於openfire的安裝目錄的\resources\database文件夾里,也可以使用其它類型的數據庫。
4.在openfire管理控制台配置數據庫連接信息。
5.在特性中使用初始設置,在隨后的界面中輸入管理員密碼。
6.設置完畢后登錄管理控制台
7.切換到插件選項卡,進入有效的插件頁面。
8.安裝 Broadcast,Clustering Plugin 和Hazelcast Clustering Plugin 三個插件,注意集群中的每個節點都要安裝。
9.在openfire安裝目錄下的plugins\hazelcast\classes文件夾里找到hazelcast-cache-config.xml配置文件,然后找到其中的join和interfaces配置節。
將其修改為以下形式:
其中member中是集群中各節點的IP地址和端口號,interface中是當前機器的IP地址。注意集群中的每個節點都要進行如此配置。
10.進入openfire管理控制台,切換到服務器選項卡,進入到集群頁面。
11.在集群設置中選擇“啟用”並保存設置。集群中的每個節點都要做這個設置。
12.啟用成功后集群概述中將出現各節點的信息,如下圖所示。注意啟動可能較慢,耗時可能在30秒到兩分鍾之間。
五. 負載均衡
1.進入haproxy所在的lub3服務器, 將當前用戶加入到haproxy用戶組中,本例中當前用戶為lunacy
2.修改haproxy配置文件 haproxy.cfg,將global配置節中的user改為當前用戶。
3.將defaults節下的mode改為tcp, option改為tcplog,並移除其它與http有關的選項。
4.加入listen配置節,轉發openfire端口5222,7070和9090,其它端口若有需要,也可以加入。
5.使用修改后的配置文件啟動haproxy,本例中使用如下命令:
Sudo /usr/sbin/haproxy –f /etc/haproxy/haproxy.cfg
6. 在瀏覽器中輸入http://10.200.10.19:9090,已經能夠正常進入控制台,注意該IP地址是負載均衡器所在的服務器地址,該機器上沒有安裝openfire.
7.啟動xmpp客戶端rooyeemessager,在網絡設置中輸入ip為10.200.10.19,端口5222,點擊測試后,軟件提示測試連接成功。
8.使用rooyeemessager登錄admin@im.quanya.com用戶, 提示登錄成功:
6.至此,openfire集群部署和負載均衡已經配置完畢,分別在PC647和seasky的openfire中創建兩個用戶,用兩個客戶端在不同的機器中收發信息,證實openfire集群可以正常運行。
六. 注意事項
1.openfire和hazelcast插件的版本必須匹配,否則無法啟用集群。
2.在實際的集群部署中mysql也應當配置為集群,本例中不再演示。
3.oepnfire3.10已經不支持spark2.6.3,請勿使用此軟件作為測試客戶端。
4.本例使用lbuntu系統,在centos或redhat上部署時使用的命令可能不同。
5.測試時不要在一台機器同時登錄兩個賬戶進行收發,有些客戶端會引起混亂。
6.haproxy不提供關閉命令,如果需要關閉要使用kill殺死進程。
7.本例中openfire部署在windows上,實際中部署在linux上會獲得更佳性能。