以下安装步骤在linux centos上进行。
Ø 安装erlang编译环境
tar xzvf otp_src_R14B04.tar.gz
./configure
make
make install
运行erl,成功说明安装没问题。
如果缺少依赖库:
yum install ncurses-devel
yum install openssl-devel
yum install expat-devel
Ø 安装ejabberd
tar xzvf ejabberd-2.1.11.tar.gz
./configure --enable-odbc --enable-full-xml --enable-pam
make
make install
Ø 配置
配置虚拟主机名/etc/ejabberd/ejabberd.cfg,修改{hosts, ["xmppserver"]}.
修改{mod_ping, [{send_pings,true}, {ping_interval, 120}, {timeout_action, kill}]}
配置node名,该部分需要与本机host名一致(修改/etc/hosts/etc/sysconfig/network)。
在/etc/ejabberd/ejabberdctl.cfg中修改ERLANG_NODE=ejabberd@xmppnode
如果修改了主机名,在不需要保留数据的情况下,把/var/lib/ejabberd下的文件(数据库文件)全部删除,然后重启ejabberd。
Ø 启动服务器
ejabberdctl start 日志在/var/log/ejabberd/ejabberd.log
ejabberdctl status 查看运行状态
ejabberdctl stop 停止服务程序
Ø 添加管理用户
ejabberdctl register admin xmppserver admin
修改ejabberd.cfg,修改如下两行:
{acl, admin, {user,"admin","xmppserver"}}.
{access, configure, [{allow, admin}]}. 该行基本已有。
在ie中输入http://serverip:5280/admin,用户名admin@xmppserver,密码admin,可以打开配置页面。
Ø 打开spark客户端,用户名admin;服务器xmppserver(此处不能填ip,要用虚拟主机名)
搭建集群
Ø 将node1上/var/lib/ejabberd/.erlang.cookie拷到node2相同目录下。(此处注意/root/.erlang.cookie和/var/lib/ejabberd/.erlang.cookie内容保持一样,因为不确定ejabberd到底用的哪个目录下的cookie)。
Ø 分别修改两台主机上的/etc/ejabberd/ejabberdctl.cfg,
INET_DIST_INTERFACE={0,0,0,0},表示监听本机所有IP地址,注意IP数字之间为逗号。
修改两台主机上的/etc/ejabberd/inetrc
{host,{0,0,0,0}, ["xmppnode1","hostalias"]}.表示监听本机所有IP地址,注意IP数字之间为逗号。
以上两步设定要做,否则下面数据库节点间不能建立连接。然后在第一台主机上启动ejabberd程序。
在第二台主机上运行
erl -sname ejabberd@xmppnode2 -mnesiadir '"/var/lib/ejabberd/"' \
-mnesia extra_db_nodes "['ejabberd@xmppnode1']" -s mnesia
在erlang命令符下执行mnesia:info().应该能看到
running db nodes = [ejabberd@xmppnode1,ejabberd@xmppnode2]
说明数据库节点间成功建立连接。
如果不能成功建立连接,可在erlang命令符下执行
net_adm:ping('ejabberd@xmppnode1'). 返回pong表示网络通,pang表示网络不通。
在erlang命令符下分别运行
mnesia:change_table_copy_type(schema, node(), disc_copies).
q().
Ø 在第二台主机上启动ejabberd程序。
此时浏览器管理界面中应该能看到两个节点,说明集群搭建成功。
如果需要删除节点,运行:mnesia:del_table_copy(schema,'ejabberd@xmppnode1').