本文由Android郎哲共享
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@admin']" \
-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,要写全称如:admin@langzhetest.com。
4)admin和adminlxw最好是在两台机器(一个host配置是192.168.1.2 irgstest.com另一个hosts配置是 192.168.1.3 langzhetest.com)上进行测试,是为了保证S1,S2两个服务器能相互通信。
7.结束OK,休息一下。 |