openfire3.10.2安装部署及集群配置及openfire优化

来源:互联网 发布:建站系统源码php 编辑:程序博客网 时间:2024/06/07 13:14

建议:使用openfire3.10.3 这个版本相较于3.10.2修复了几个重大BUG。


版权声明:本文为博主原创文章,未经博主允许不得转载。

由于是纯手打,并没有实际操作一遍(懒),所以有些名词可能不对,见谅!
图片太小则缩放页面比例调高


openfire单节点安装

步骤:

1.修改主机名Hostname:

对于CentOS系统,需要修改两处:
一是/etc/sysconfig/network,二是/etc/hosts,只修改任一处会导致系统启动异常。

对于Ubuntu系统,也需要修改两处:
一是/etc/hostname,二是/etc/hosts

最后,两个系统都需要执行:
hostname hostname1

完成后 hostname查看

2.安装jdk

  • 把jdk1.8 tar.gz压缩文件丢入 /home
  • 解压到/usr/local
  • 重命名为jdk1.8
  • vi /etc/profile,加入
 export JAVA_HOME=/usr/local/jdk export PATH=$JAVA_HOME/bin:$PATH  export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
  • xshell重进 OK

3.安装openfire

  • 百度搜索openfire,进入官网http://www.igniterealtime.org/
  • 点击download,找到 openfire3.10.2 或者最新版本,选择linux,选择tar.gz
  • 下载好后,丢到linux服务器上,此处以/home目录为例
  • tar -zxvf openfire3.10.2.tar.gz -C /usr/local,解压到 /usr/local 目录
  • vi /openfire/bin/openfire,加入jvm参数,按需分配
INSTALL4J_ADD_VM_PARAMS="-Xms10240m -Xmx10240m -XX:MaxPermSize=1024m -XX:PermSize=1024m -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider"

而后保存退出

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述
完成!

4.配置openfire

  • openfire目录下 ./bin/openfire start启动openfire
  • 浏览器进入控制台 ip:9090(conf/openfire.xml可以改端口,或者在管理控制台更改)
  • 控制台设置,按需分配,此处为: ubuntu,意味之后客户端连接用户名为 username@ubuntu
  • 选择mysql 下面填写内网地址,填写对应的账号密码:
// mysql数据库提前安装好,并建好openfire专用库,此处库名openfirejdbc:mysql://172.168.111.13:3306/openfire?rewriteBatchedStatements=true
  • 连接数最大设置为300,管理员账户改为admin,密码随意设置,此处admin
  • 至此openfire设置完毕.已经可以用客户端注册登录了

图示:

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

默认配置下openfire能支持5000+在线用户


5.openfire集群安装

  • 提前配置好两个服务器的openfire(参考上面步骤)
  • openfire控制台加入插件broadcast和Hazelcast
  • 完成后,在2台openfire控制台的clusting/集群,点击启用集群
  • 等待5-10分钟,若是没有动静(期间一定要等几分钟等集群设置生效),则重启openfire,重启后进入,可以看到两个节点已经加入了集群
  • 至此,集群配置成功

ps:hazelcast插件默认方式是广播,可以配置点对点。
配置文件在openfire/plugins/hazelcast/class/hazelcast.xml

替换如下:

<join>    <multicast enabled="false">        <multicast-group>224.2.2.3</multicast-group>        <multicast-port>54327</multicast-port>    </multicast>    <tcp-ip enabled="true">        <member>172.168.111.1:5701</member>        <member>172.168.111.2:5701</member>    </tcp-ip>    <aws enabled="false"/></join>

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述
现在,2台节点的openfire已经可以支撑10000+在线用户了!


其他设置以及优化

插件

  • Subscription插件:自动同意好友请求,添加插件后在服务器设置最下面设置方式。

服务器设置

  • 把没用的一些设置关掉,例如HTTP绑定等等

优化

  • 修改打开最大文件数目:ulimit –n 65535
  • 设置服务器缓存大小,系统属性加入:
// 注意不能有空格,特别是 size后面// -1代表无穷大 100000000即是95MClientSessionInfoCache:     cache.ClientSessionInfoCache.sizeRoster:                     cache.username2roster.sizeuser:                       cache.userCache.sizegroup:                      cache.group.sizegroupMeta:                  cache.groupMeta.sizeoffline message:            cache.offlinemessage.sizeofflinePresence:            cache.offlinePresence.sizeLast Activity Cache:        cache.lastActivity.sizeVCard:                      cache.VCard.size// 以上都是高压下容易飘红的

附图:

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述


未来需要优化的几个点:

1.加大服务器内存 20G变成150G2.之前源码修改的是3.10.2,之后把新版本的源码下载下来重新修改,而后打包部署.  以解决3.10.2遗留的BUG(现在4.0beta版本出来了,可能过段时间会开源,改了很多bug)3.根据需求定制openfire,即去除无用的组件,出去无用的消耗资源的一些cache或hashMap,变量之类4.移出session,把session存入到redis中。5.除了session,其他的很多cache(服务器缓存)全部移入redis。

更加科幻的展望:

1.openfire不使用mysql,使用redis作为数据库存储数据,再做个mysql持久化及主从就行了。

论坛有牛人说过:openfire使用了它那不知所谓的cache(其实就是HashMap),就注定无法支撑数十万连接。
(强哥说了:HashMap存储超过几万后,会有问题,好像是jdk自带的问题)

2016-1-8:
另外一个最重要的优化的方面,就是保证连上服务器的是 有用 的用户。

譬如我们服务器之前连了10W,但是其实真正用户绑定并使用XX系统的只有1W,但是10W个客户端却是连着的。(举例子,之前我们的系统就好比进入淘宝后台自动登录旺旺,那么进淘宝多少人就有多少人登录了旺旺,但是其实真正使用旺旺的只有十分之一甚至更少,我们只需要让用户在需要旺旺对话的时候才连接服务器的话,那么瞬间服务器压力能减少 90%这是比任何优化方案都有效的解决方法。是从业务本身去思考并优化,这个需要集思广益。)

自带BUG解决
需修改源码重新打包部署,后续补上

2016-1-8:
新的3.10.3甚至4.0版本已经解决了很多个大bug了,我们坐享其成即可。
4.0beta估计不久后就开源了,那时候应该就无比稳定健壮了.


0 0
原创粉丝点击