Openfire 集群部署和负载均衡方案
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上会获得更佳性能。
Openfire 集群部署和负载均衡方案的更多相关文章
- ASP.NET Core使用Docker-Swarm集群部署实现负载均衡实战演练
一.需求背景 人生苦短,我用.NET Core!阿笨对Docker是这样评价的:Docker在手,环境我有!Docker出手,集群我有!前面的Doc基础课程我们学习了如何使用Docker来部署搭建单机 ...
- Dubbo工作原理,集群容错,负载均衡
Remoting:网络通信框架,实现了sync-over-async和request-response消息机制. RPC:一个远程过程调用的抽象,支持负载均衡.容灾和集群功能. Registry:服务 ...
- Dubbo之旅--集群容错和负载均衡
当我们的系统中用到Dubbo的集群环境,由于各种原因在集群调用失败时,Dubbo提供了多种容错方案,缺省为failover重试. Dubbo的集群容错在这里想说说他是由于我们实际的项目中出现了此类的问 ...
- Tomcat6+nginx集群,达到负载均衡和session复制
nginx+tomcat做web项目集群,达到负载均衡.故障转移.session复制功能. 1.nginx配置文件见上一篇“nginx配置文件(反向代理+集群+动静分离)” 2.tomcat集群,修改 ...
- 4.Dubbo2.5.3集群容错和负载均衡
转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.集群容错和负载均衡原理 各节点关系: 这里的Invoker是Provider的一个可调用Service的抽 ...
- Apache反向代理结合Tomcat集群来实现负载均衡(一)、概念理解
好的博文一般都能做到"望题知文",看下标题就知道下边要讲的内容,写这个标题时犹豫了一下,本来要将标题定位apache+tomcat实现负载均衡,但是又认为这样显得比較模糊.后来想了 ...
- docker集群——Mesos集群下的负载均衡marathon-lb
前面的章节介绍了Mesos+Zookeeper+Marathon的Docker管理平台,接下来介绍如何在该平台下构建负载均衡. 默认情况下,mesos marathon会把app发布到随机节点的随机端 ...
- Linux下Apache与Tomcat的完全分布式集群配置(负载均衡)
最近公司要给客户提供一套集群方案,项目组采用了Apache和Tomcat的集群配置,用于实现负载均衡的实现. 由于以前没有接触过Apache,因此有些手生,另外在网上搜寻了很多有关这方面的集群文章,但 ...
- Dubbo学习笔记7:Dubbo的集群容错与负载均衡策略
Dubbo的集群容错策略 正常情况下,当我们进行系统设计时候,不仅要考虑正常逻辑下代码该如何走,还要考虑异常情况下代码逻辑应该怎么走.当服务消费方调用服务提供方的服务出现错误时候,Dubbo提供了多种 ...
随机推荐
- 在thinkphp中,写的博文标签多对多关系的标签频率统计算法
常常看到别人的博客里面,或者网站里面有这样随机颜色,但字体大小与标签出现频率有关的标签云,于是自己就想写一个.至于颜色的随机显示,那就很简单了,这里就不列代码. 因为正在学thinkphp,所以数据查 ...
- 介介介是一个ORM
介个是一个ORM,介个ORM基于Dapper扩展. 为什么需要一个ORM呢? 支持简单的LINQ查询 但是不能连表查询,why?why?why?为什么不能连接查询 ^.^ ok.但是就是不支持.哈哈哈 ...
- Moon.Orm 入门总指南
注意:下面的pdf文件强烈建议下载或在线查看 1)旗舰版帮助文档点击查看或下载 2)http://pan.baidu.com/s/1hq7krFu(新手手册下载)(强烈推荐) 3)性能及规范下载,网友 ...
- Vmware虚拟机安装Ubuntu并设置root登陆
主机操作系统是win7.在Ubuntu官网下好系统镜像.iso文件,安装好Vmware workstation软件 1 安装Ubuntu系统到Vmware虚拟机: 注意下面这步是无法直接设置账号为ro ...
- [WinForm] DataGridView 绑定 DT && ComboBox 列绑定 Dict
一 需求介绍 一般像枚举类型的数据,我们在数据库里存储着诸如(1.2.3.4-)或者("001"."002"."003"-)此类,但是界面 ...
- MVC5+EF6+AutoMapper+Bootstrap打造在线博客(1.1)
DAL层的三个Model类: 字典表:CFDict 用户表:CFUser 用户爱好表:CFUserHobby(关联cfuser表和cfdict表) CFUser表和CFUserHobby表是一对多关系 ...
- dSYM 文件分析工具
来到新公司后,前段时间就一直在忙,前不久 项目 终于成功发布上线了,最近就在给项目做优化,并排除一些线上软件的 bug,因为项目中使用了友盟统计,所以在友盟给出的错误信息统计中能比较方便的找出客户端异 ...
- iOS类中的属性设置背景色(统一)
unsigned int count; objc_property_t *properties = class_copyPropertyList([self class], &count); ...
- DXGI 1.5新特性
为了支持更具弹性和的输出设定和副本机制,DXGI1.5添加了下面这些功能: 高动态范围(HDR)和宽色域(WCG) 可变刷新率显示 复制输出 奉献和再生资源 高动态范围(HDR)和宽色域(WCG) H ...
- ThinkPHP实现定时任务
项目服务端框架我选用的是ThinkPHP,由于策划案中有需求要定时刷新指定数据,所以在windows平台我使用微软的计划任务调用bat脚本来执行下面的命令来完成 php index.php /Home ...