一. 概述
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
配套数据库
Haproxy
1.4.18
TCP负载均衡器
HAProxy
RooyeeMessager
3.6.1
Xmpp客户端
深圳如意通
三. 软件安装
在PC647和seasky上安装openfire,软件下载地址:
在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