ejabberd安装与集群可以版

本文详细介绍了ejabberd的安装过程,包括ejabberd.run的执行、用户注册和iptables配置。此外,还重点讲解了ejabberd集群的配置,如修改ejabberdctl.cfg、ejabberd.yml和inetrc文件,以及如何同步$.erlang.cookie。文章提到了 ejabberd 集群中节点的验证和数据库设置,并提供了配置MySQL作为数据库的链接。最后,讨论了ejabberd的负载均衡机制。
摘要由CSDN通过智能技术生成

 

 

Ejaberred安装时提示输入的服务器名称,,对应后面的创建管理员,两者结合才是ejabberd的登陆名。。

 

官网www.ejabberd.im

中文指南

http://wiki.jabbercn.org/Ejabberd2:%E5%AE%89%E8%A3%85%E5%92%8C%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97

 

 

安装流程流程:

Chmod g+wx,o+wx  ejabberd.run(在官网可直接下载)

sh

./ejabberd.run

接下来按步奏next,完成安装后,

其中安装服务器域名和用户名时请记住,后面登陆要用。

cd /opt/ejabberd/bin(切换到ejabberd的bin目录下)

./start 启动ejabberd服务器,会弹出个start.html

或者可以./status查看启动情况。

启动后可以用./ejabberdctlregister username  域名  passwd来注册新用户。

这里说下如果你想直接运行ejabberdctl的话,可以把bin目录放到path去。

先vim /etc/profile 在文件末尾添加PATH=/opt/ejabberd/bin:$HOEM.重启下就可以了。

然后进入127.0.0.1:5280/admin后台管理,这时会要求输入用户名为类似于node@domain(都是你安装是设置的),密码。

然后如果需要给用户设置管理员权限需要在ejabberd.yml中,找到acl;在对应位置设置用户。

 

与客户端进行通信时,确保iptables处于关闭状态(service iptables stop)

或者Iptables  -A INPUT –I eth0  –p tcp -m tcp –dport 5222 –j ACCEPT

         Iptables  -A INPUT –I eth0  –p tcp -m tcp –dport 5280 –j ACCEPT

         允许例外端口。

 

yum (YellowdogUpdater Modified)是一个集与查找,安装,更新和删除程序的Linux软件

与客户端的测试,先去下载spark,可以在openfire的官网找到。。安装,略

然后启动spark,会看到高级,进入修改主机和端口。然后把对应的用户和域名,还有密码对上就可以了。。。

集群配置:

先两个服务器上分别在ejabberdctl.cfg里面修改。

ERLANG_NODE=ejabberd@yourgame.com


INET_DIST_INTERFACE={192,168,106,107} 

这里注意ip间隔用的是逗号。。具体我也不清楚,网上说会报错。(未实测)

再分别修改ejabberd.yml文件中的host;这里有两种修改方式:一种是host:

         -“first” –“second” 另一种是host:-“本机域名” –“共同名字”。

后者是为了集群用同一个域名。

再修改同样是配置里面的inetrc文件,把对应的127,0,0,1改为本机ip,同样的也是逗号哦。

然后保证两个服务器$HOME/.erlang.cookie一致,把其中一个替换掉另一个。

然后执行类似下面的代码,mnesiadir 里面的目录对应的是spool目录(注意以下内容请在第二节点服务器执行)

erl –nameejabberd@yourgame.com –mnesiadir ‘”/opt/ejabberd-15.03/database/”' –mnesia extra_db_nodes “[‘ejabberd@mygame.com’]”–s mnesia –setcookie sfafjaslkfj(与.erlang.cookie里面的内容一致,这个如果前面已经修改好$HOME/.erlang.cookie,这里就可以忽略)

然后你就可以执行mnesia:info().  查看结果qRunningdb=有两个节点说明正确,不然就是失败。然后在通过nodes().验证,如果有出现主节点方为成功,,成功的话执行这个命令 mnesia:change_table_copy_type(chema, node(), disc_copies)为数据库建立本地磁盘。其他根据具体情况具体分析。

这个是配置MySQL为所用的数据库的

http://www.tuicool.com/articles/A3Ir6z

当然还有个负载均衡,,好像是在配置ejabberd.yml里添加类似于这个。

{domain_balancing_component_number, "component.example.com",Number}.

 

解释:

 

服务负载均衡

组件负载均衡
域负载均衡机制

ejabberd包含了一个机制来对插入一个ejabberd集群的组件进行负载均衡. 它意味着你可以在每一个ejabberd集群插入相同组件的一个或多个实例并且流量将自动分布.

缺省的分布式机制尝试递送到组件的一个本地实例. 如果有多个本地实例可用, 随机地选取一个实例. 如果没有本地实例可用, 随机选取一个远程组件实例.

如果你需要一个不同的行为, 你可以通过选项 domain_balancing 修改负载均衡行为. 这个选项的语法如下:

{domain_balancing, "component.example.com", BalancingCriteria}.

多个负载均衡标准可用:

§  destination:使用包的to属性的全JID.

§  source:使用包的from属性的全JID.

§  bare_destination:使用包的to属性的纯JID(没有资源).

§  bare_source:使用包的from属性的纯JID(没有资源).

如果对应标准的这个值是相同的, 则集群中相同的组件实例将被使用.

负载均衡水桶

当一个给定的组件有失败的风险的时候, 域均衡可能导致服务麻烦. 如果一个组件失败了,服务将无法正确工作,除非会话被重新均衡了.

在这种情况下, 最好限制这个问题在由失败组件处理的这些会话. 这就是domain_balancing_component_number 选项所做的, 使负载均衡机制不动态化, 而是粘在固定数目的组件实例上.

语法是:

{domain_balancing_component_number, "component.example.com", Number}.

 

                                                                                                                           本人水平有限,请高手指点,如有错误欢迎指点。。小弟在此谢过了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值