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上会获得更佳性能。