专业IM即时通讯软件开发,值得信赖!

Openfire 集群部署和负载均衡方案

openfire 云聊IM 144℃

一.概述

Openfire是在即时通讯中广泛使用的XMPP协议通讯服务器,本方案采用Openfire的Hazelcast插件进行集群部署,采用Haproxy进行负载均衡,在示例环境中测试通过。

二.示例环境

服务器配置如下:

服务器名用途操作系统IP
PC647Openfire节点1Windows710.200.10.11
seaskyOpenfire节点2Windows xp10.200.10.18
Lub1Mysql数据库LUbuntu 1210.200.10.12
Lub3负载均衡器LUbuntu 1210.200.10.19

所用软件版本如下:

软件名称版本号用途提供商
Openfire3.10betaXmpp服务器Jive Software
Hazelcast1.3.3Openfire集群插件Tom Evans
Mysql server5.5.0配套数据库Oracle
Haproxy1.4.18TCP负载均衡器HAProxy
RooyeeMessager3.6.1Xmpp客户端深圳如意通

三.软件安装

  1. 在PC647和seasky上安装openfire,软件下载地址:http://download.igniterealtime.org/openfire/openfire_3_10_0_beta.exe
  2. 在lub1上安装mysql

安装命令:sudo apt-get install mysql-server

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

喜欢 (1)
仿微信聊天软件开发
点击这里给我发消息