1 XMPP和OpenFire的基本介紹
1.1 XMPP協定
http://baike.baidu.com/view/189676.htm
1.2 XMPP協定的實作
1.2.1 XMPP協定服務端
OpenFire
1.2.2 XMPP協定用戶端
Spark、JWChat
http://zh.wikipedia.org/wiki/XMPP%E5%8D%94%E8%AD%B0%E7%9A%84%E5%AE%A2%E6%88%B6%E7%AB%AF%E8%BB%9F%E9%AB%94%E5%88%97%E8%A1%A
2 OpenFire叢集的搭建
2.1 安裝Linux作業系統和MySQL資料庫
2.2 安裝JDK環境
1、利用Xshell工具将jdk安裝檔案jdk-7u55-linux-i586.tar.gz放到/usr/local目錄中
2、解壓縮檔案
tar –zxvf jdk-7u55-linux-i586.tar.gz
3、将解壓縮後的檔案名重命名為jdk
4、用vi編輯器配置jdk環境變量
在檔案最後加上如下配置:
5、vi編輯器儲存修改後的檔案(:wq退出),用source讓剛剛編輯的檔案生效
6、輸入java -version指令,列印出如下資訊表示jdk安裝成功
2.3 安裝OpenFire
1、利用Xshell工具将OpenFire的安裝檔案openfire_3_9_3.tar.gz傳到/opt/目錄下
2、利用tar指令解壓縮該檔案
3、啟動OpenFire
4、進入網頁對伺服器進行配置(選擇語言、資料庫等)
http://localhost:9090/index.jsp
注意【資料庫選擇外接的資料庫,不要選擇預設的資料庫,本測試環境安裝的是MySQL資料庫,所有openfire都配置到同一個MySQL資料庫中】
5、安裝broadcast和Hazelcast ClusteringPlugin插件【配置叢集用的】
登入伺服器以後,點選插件-》可用的插件,點選右側的 + 按鈕,安裝Broadcast和Hazelcast ClusteringPlugin插件
6、安裝好插件以後,配置/etc/hosts檔案,分别配置對應Server的ip和名稱
添加紅色選中内容
2.4 配置OpenFire叢集
1、按照2.3步驟分别在三台機器上安裝好OpenFire【注意:每台機器上要分别配置好所有Openfire的ip和機器名】
2、分别修改HazelcastClustering 插件的配置檔案hazelcast-cache-config.xml
先進入配置檔案目錄:
當然,修改檔案之前備份一下檔案是一個良好的習慣,是以先備份一下
用vim編輯器修改檔案内容如下:
注意<interface></interface>中填寫目前伺服器的名稱(openfires1、openfires2等,不同的機器的配置是不一樣的)
3、關閉防火牆(由于openfire 叢集涉及到不同機器之間的通信,防火牆可能會過濾掉這些端口之間的通信,先關掉,跑通以後在開啟)
4、按照如上1-3步驟分别修改其他OpenFire機器的配置
5、啟動openfire(每個用戶端要分别啟動)
6、别在浏覽器打開三個Server的管理頁
http://192.168.32.128:9090/
http://192.168.32.131:9090/
http://192.168.32.132:9090/
選擇伺服器-》Clustering->Enabled
重新開機openfire以後在重新登入該網頁,看到如下資訊,恭喜你,叢集配置成功
2.5 其他說明
2.5.1 OpenFire的開啟關閉等指令
/opt/openfire/bin/openfire start|stop|restart|status
分别代表Openfire的啟動|關閉|重新開機|目前狀态指令
2.5.2 安裝telnet工具進行調試
1、安裝telnet-server(注意:需要root權限)
2、安裝telnet相關的用戶端(注意:需要root權限)
3、預設情況下telnet是關閉的,需要開啟,有如下兩種方式:
一、使用chkconfig指令直接開啟
二、直接修改配置檔案
将disable = yes 改為 disable = no
4、重新開機xinetd,激活telnet服務
5、關閉防火牆(每個OpenFire都要關閉,這裡是為了防止防火牆把openfire通信的端口給過濾掉了,後面再介紹如何開啟)
6、測試不同OpenFire之間是否能通信(出現如下資訊,辨別openfires3分别能與openfires1和openfires2之間進行通信了,當然也可以在其他機器上連openfires3,5701是openfire叢集通信的一個端口,退出telnet的指令是Ctrl + ] ,再輸入close指令就能關閉連接配接)
2.5.3 防火牆開啟情況
1、開啟防火牆
2、在openfires1機器上通過telnet連接配接openfires3的5701端口時,發現不能連接配接,原因是openfires3的防火牆直接把通路該端口的請求給pass掉了
3、解決上述問題的方法是開啟對5701端口的通路
儲存一下:
重新開機防火牆讓修改生效:
再檢視防火牆狀态
可以看到多了如下一條記錄,表示可以通路5701端口了
再次在openfies1上用telnet通路openfires3的5701端口,就可以連上了
2.5.4 防火牆指令