共计 2759 个字符,预计需要花费 7 分钟才能阅读完成。
一. 概述
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 上会获得更佳性能。
CentOS 下 Openfire 详细安装过程 http://www.linuxidc.com/Linux/2012-09/69539.htm
CentOS 5.4 下基于 Jabber/XMPP 协议的 Openfire 服务器配置笔记 http://www.linuxidc.com/Linux/2012-02/55497.htm
Ubuntu 12.04 安装 Openfire http://www.linuxidc.com/Linux/2012-07/64945.htm
Openfire 在使用 MySQL 数据库后的中文乱码问题解决 http://www.linuxidc.com/Linux/2014-03/97989.htm
通过 Nginx 实现 Openfire 集群的负载均衡 http://www.linuxidc.com/Linux/2015-09/122943.htm
Openfire 的启动过程与 session 管理 http://www.linuxidc.com/Linux/2016-08/134021.htm
Openfire 的详细介绍 :请点这里
Openfire 的下载地址 :请点这里
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-11/137301.htm