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提供了多种 ...
随机推荐
- JavaScript原型链分析
Js之原型链 1.object 与 Object 1.object是类型,表示对象类型 2.Object是函数 2.js成员的访问规则 o.方法( ...
- asp.net webform 自定义分页控件
做web开发一直用到分页控件,自己也动手实现了个,使用用户自定义控件. 翻页后数据加载使用委托,将具体实现放在在使用分页控件的页面进行注册. 有图有真相,给个直观的认识: 自定义分页控件前台代码: & ...
- 报错:已有打开的与此命令相关联的 DataReader,必须首先将它关闭。
SqlParameter[] sp = { new SqlParameter("@nGridID",SqlDbType.BigInt), new SqlParameter(&quo ...
- 《连载 | 物联网框架ServerSuperIO教程》1.4种通讯模式机制。附小文:招.NET开发,结果他转JAVA了,一切都是为了生活
参考文章: 1.SuperIO通讯框架介绍,含通信本质 2.C#跨平台物联网通讯框架ServerSuperIO(SSIO) 一.感慨 上大学的时候,没有学过C#,花了5块钱在地坛书市买了一本教程,也就 ...
- 《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制 一.综述 SuperIO(SIO)定位 ...
- Maven远程仓库的认证
大部分远程仓库无须认证就可以访问,但有时处于安全方面的考虑,我们需要提供认证信息才能访问一些远程仓库.为了防止非法的仓库访问,管理员为每个仓库提供了一组用户名及密码. 这时,为了能让Maven访问仓库 ...
- datatables中的Options总结(2)
datatables中的Options总结(2) 五.datatable,列 columnDefs.targets 分配一个或多个列的列定义. columnDefs 设置列定义初始化属性. colum ...
- 最新Android系统版本与API等级对应关系表
最新Android系统版本与API等级对应关系表 从Android官网拷过来的,方便查阅... 官网地址:https://developer.android.com/guide/topics/mani ...
- ABP督导项目(1)
创建实体 项目名TQMASP 在领域层创建entities文件夹存放实体类如图 创建Dbcontext public virtual IDbSet<Supervisor> Supervis ...
- sql server 常用的扩展存储过程
sql server 里面提供了丰富的系统存储过程来辅助我们管理数据库以及开发.今天分享介绍一些常用的数据库扩展存储过程 xp_cmdshell 这个大家都比较熟悉了,使用xp_cmdshell 可以 ...