Ejaberred安装时提示输入的服务器名称,,对应后面的创建管理员,两者结合才是ejabberd的登陆名。。
中文指南
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}.