erlang-ejabberd集群配置

 

1.环境Ubuntu10.4
2.在两台服务器S1、S2安装ejabberd
  在此假设 S1安装ejabberd的node为ejabberd@admintest。
           S2安装ejabberd的node为ejabberd@clustertest。
  (注意:1)/sbin/ejabberdctl 中HOST的默认localhost,我在此把默认的HOST改为admintest和clustertest。
         2)分别在S1、S2把admintest与clustertest添加到/ect/hosts中 如:192.168.1.2 admintest  192.168.1.3 clustertest)。
3.在S1上通过shell执行 ejabberdctl start 启动 ejabberd
  1)可以在shell用ejabberdctl status来检查 ejabberd 是否启动成功。
  2)ejabberd成功启动后。在shell中用ejabberdctl register admin langzhetest.com 123456 来注册用户。并修改/etc/ejabberd.ctg 文件添加hosts(如:{hosts,["langzhetest.com"]}.)和acl(如:{acl,admin,{user,"admin","langzhetest.com"}}.) 详细请参考官方文档。
  3)参照2)再次创建其他账户如adminlxw,当然可以通过http://langzhetest.com:5280/admin/操作界面继续添加用户。
  4)在此为了确保服务器的正确性,可以使用客户端验证,方法略。
4.在S2上进行集群配置
  1)确保S1和S2有相同的cookie,假设当前cookie为langxianzhe,复制S1 ~ejabberd/.erlang.cookie 到S2 ~ejabberd./erlang.cookie(其它设置方法请参考官方文档)。
  2)在linux shell中执行
  erl -sname ejabberd@clustertest \
      -mnesia dir '"/var/lib/ejabberd/"' \
      -mnesia extra_db_nodes "['ejabberd@admintest']" \
      -s mnesia -setcookie langxianzhe(官方文档没有在此设置cookie,但发不设置cookie mnesia:info/0 查看到得runing db nodes信息,会少一个node)。
  3)在erlang shell中执行
    mnesia:change_table_copy_type(schema, node(), disc_copies). 
    可以根据实际需要,再执行 mnesia:add_table_copy/3 详细请参考官方文档。
  4)退出erlang shell
    输入"q()."或"init:stop()."。
  5)在linux shell中执行 ejabberdctl start,通过ejabberdctl status 检查是否启动成功。
  6)修改/etc/ejabberd.ctg 文件添加hosts(如:{hosts,["langzhetest.com"]}.),在此不需要修改acl,它会自动从S1上获取。
  7)注意:修改配置文件后需要重新启动ejabberd才生效(如:ejabberdctl restart)。

5.进行负载均衡配置
  1)修改S1、S2 /etc/ejabberd/ejabberd.ctf 在文件末尾添加
  {domain_balancing_component_number, "langzhetest.com", 2}.。
  2)修改日志级别为debug方便观察后台信息。
  3)完成以上操作重启ejabberd服务。
   
6.用户客户端测试服务器
  1)修改客户端的hosts 添加 192.168.1.2 irgstest.com或 192.168.1.3 langzhetest.com。
  2)添加登录用户的时候去掉ssl验一项,不然可能登陆不上。
  3)添加好友时不要只写admin,要写全称如:[email protected]。
  4)admin和adminlxw最好是在两台机器(一个host配置是192.168.1.2 irgstest.com另一个hosts配置是 192.168.1.3 langzhetest.com)上进行测试,是为了保证S1,S2两个服务器能相互通信。
7.结束OK,休息一下。

 

  

你可能感兴趣的:(linux,erlang)