阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Openfire Hazelcast集群详解

502次阅读
没有评论

共计 4104 个字符,预计需要花费 11 分钟才能阅读完成。

一、概述
Openfire Hazelcast 插件提供了在一个集群上运行多个冗余 Openfire 服务器的支持。通过把 Openfire 运行为一个集群,可以把终端的连接分配到多台 Openfire 服务器上,同时还提供了服务器的故障转移。Hazelcast 个插件是 Openfire 原集群插件的替代,它使用了开源的 Hazelcast 数据分布框架来代替昂贵的专有第三方产品。目前 Hazelcast 版本是 3.5.1。

Hazelcast 的主页:http://www.hazelcast.org/

二、集群与联邦的比较
XMPP 协议的设计与邮箱相似,每个 Openfire 的安装支持单个的 XMPP 域,且服务器到服务器(Server to Server,S2S)协议在 XMPP 规范中描述为把多个 XMPP 域连接到一起,也就是联邦(Federation)。联邦代表了 XMPP 横向扩展的有效方式,因为它允许一个 XMPP 用户能够安全地与其他联邦域的任意用户进行通信。这些联邦可以是公共的或者是私有的。联邦域可以在互联网上交换 XMPP 节(Stanzas),甚至可以使用基于 DNS 的服务查找或是地址解析进行发现。

与之相反,集群是单个 XMPP 域进行纵向扩展的技术,集群内的诚意共享相同的配置。集群中的每一个成员都允许任意用户在域内进行连接、授权认证、交换节。所有集群的服务器都共享单个的数据库,因此需要部署在同一个局域网内,以保持网络通信的低延迟。集群的部署适合提供运行时的冗余,而且能支持更大的用户数量和更多的连接数。

对于比较大的 Openfire 部署,结合联邦和集群两种技术能提供比较佳的效果。单个的 XMPP 域能够支持数万甚至数十万的用户,再结合联邦部署,就能达到支持百万级以上的用户规模。

三、安装
要创建 Openfire 集群,至少要有 2 台 Openfire 服务器,每一台都必须安装 Hazelcast 插件。要按照 Hazelcast,只需简单的把 hazelcast.jar 包放入 Openfire 的 plugins 子目录。还可以在管理控制台的插件页直接安装此插件。

要注意,集群内的每一台 Openfire 服务器都必须配置为连接同一个外部数据库。

默认情况下,Openfire 在启动并初始化进程期间,服务器节点会彼此互相发现(通过彼此互相交换 UDP 广播数据包)。要注意一点,如果局域网不支持广播通信,那么可以使用一些初始化的配置选项。

每个 Openfire 服务器部署了 Hazelcast 插件后,在管理控制台的集群页面上使用单选按钮激活 / 启用集群。只需要启用一次集群,此变更会自动通知到集群的其它节点。在刷新集群页面后就能看到所有的服务器已经成功加入集群了。

注意,Hazelcast 和更早的集群插件(如 clustering.jar 或 enterprise.jar)是互斥的。也就是说,使用了 Hazelcast 插件,就不能使用早期的集群插件。

在集群运行后,你就需要某种形式的负载均衡来把用户的访问分配到各个 Openfire 节点上。这里有多个商业解决方案和开源解决方案。如果你使用 HTTP/BOSH Openfire 连接器来连接 Openfire 的话,那么可以使用 Apache HTTP Server 来做负载均衡器(使用 mod_proxy_balancer 模块)。一些流行的选项如 F5 LTM(商业解决方案)和 HAProxy(开源解决方案)都可以。

F5 LTM:http://www.f5.com/products/big-ip/big-ip-local-traffic-manager/overview/
HAProxy:http://haproxy.1wt.eu/

还有一个简单的 Round-robin DNS 配置可以帮助分配 XMPP 连接到集群中的 uogeOpenfire 服务器节点。尽管流行的轻量级、低成本的方法提供了基本的可扩展性,但要注意这些方法是既没有考虑到足够满足实际的负载均衡,又没有提供高可用性的能力。

四、Hazelcast 插件的升级
升级 Hazelcast 插件需要额外的一些步骤,而且集群中的每个节点都需要安装同一个插件版本,以避免各种错误和数据同步的问题。

方法 1:离线升级
这种升级方法很简洁,但会发生短暂的服务中断。
1)关闭集群中所有的 Openfire 服务
2)对集群中的第一台 Openfire 服务器,执行以下步骤:
a. 移除 plugins 目录下现有的 Hazelcast 插件 hazelcast.jar;
b. 移除 plugins 目录下现有的 hazelcast 子目录;
c. 复制最新的 hazelcast.jar 文件到 plugins 目录;
d. 重启 Openfire 服务器,实现插件的解压和安装。
3)对剩余的每一个 Openfire 服务器重复以上工作。

方法 2:在线升级
这种方法在升级期间也不影响 Openfire 的服务。
1. 关闭集群中的 Openfire 服务器,只保留一台还运行。
2. 登录这台 Openfire 服务器的管理控制台,在插件页面移除现有的 Hazelcast 插件。
3. 上传最新的 Hazelcast 插件,并完成安装。
4. 使用“离线”步骤升级并启动剩余的服务器。

方法 3:分割升级
注意:如果你只能访问 Openfire 的控制台,那么可以使用本方法。但是要注意,在升级过程中,用户可能彼此无法互相通信。
1)在 Openfire 管理控制台的集群页面,让集群停用(Disable),这会对集群的所有成员都关闭集群。
2)对于每一台 Openfire,更新其 Hazelcast 插件。
3)当所有 Openfire 服务器的 Hazelcast 插件都更新完毕后,在管理控制台的集群页面启用(Enable),它会激活集群中的所有 Openfire 成员。

五、配置
Hazelcast 有数个配置选项可作为 Openfire 的系统属性。

1、hazelcast.startup.delay.seconds (5)
运行 Hazelcast 插件的等待时间(秒)。这可以让 Openfire 在初始化集群的缓存时部署其他插件。

2、hazelcast.startup.retry.count (1)
集群首次启动失败后重复启动的次数。

3、hazelcast.startup.retry.seconds (10)
相邻两次启动的间隔时间。(秒)

4、hazelcast.max.execution.seconds (30)
在集群成员间执行同步任务时的最大等待时间。

5、hazelcast.config.xml.filename (hazelcast-cache-config.xml)
Hazelcast 插件配置文件的名字,便于安装自定义的缓存配置文件。

6、hazelcast.config.xml.directory ({OPENFIRE_HOME}/conf)
可以添加到插件类路径下的目录,便于加载自定义的 Hazelcast 配置文件。

7、hazelcast.config.jmx.enabled (false)
为 Hazelcast 集群启用 JMX 功能。

Hazelcast 插件使用了 XML 配置建立器来初始化集群。默认情况下,集群的成员间会尝试通过广播下面的位置实现彼此互相发现。
IP 地址:224.2.2.3
端口:54327

六、Hazelcast 使用
Hazelcast 对于延迟是非常敏感的,它或许会导致一个长期运行的 GC 周期,尤其是在使用默认的 JVM 配置时。在大多数情况下,优先激活并行的垃圾收集器(CMS)或者是使用新的 G1 垃圾收集器来使得阻塞最小化。
另外,Openfire 集群的运行特点在很大程度上取决于客户端的数量、连接的类型、以及部署的 XMPP 服务类型。但是要注意,许多在堆(Heap)上分配的对象是短活动期的,增加年轻代的空间或许会对性能产生积极的影响。

比如,下面提供一个适合 3 个节点的服务器集群(4 核 CPU),支持大约 5 万个活动用户:

OPENFIRE_OPTS=”-Xmx4G -Xms4G -XX:NewRatio=1 -XX:SurvivorRatio=4
              -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+UseParNewGC
              -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=1
              -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly
              -XX:+PrintGCDetails -XX:+PrintPromotionFailure”

————————————– 分割线 ————————————–

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

————————————– 分割线 ————————————–

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-09/123291.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4104字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7960744
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...