我正在使用安装了ejabberd 13.12的2个ec2实例。我正在关注this guide设置群集。在我运行命令的第二个节点上 -
erl -sname ejabberd \
-mnesia dir '"/var/lib/ejabberd/"' \
-mnesia extra_db_nodes "['ejabberd@first']" \
-s mnesia
发生第一个节点错误 -
Application ejabberd started on node ejabberd@ejabberdn1
dets: file "/var/lib/ejabberd/schema.DAT" not properly closed, repairing ...
=SUPERVISOR REPORT==== 27-May-2014::07:11:59 ===
Supervisor: {local,mnesia_kernel_sup}
Context: child_terminated
Reason: killed
Offender: [{pid,<0.152.0>},
{name,mnesia_locker},
{mfargs,{mnesia_locker,start,[]}},
{restart_type,permanent},
{shutdown,3000},
{child_type,worker}]
=SUPERVISOR REPORT==== 27-May-2014::07:11:59 ===
Supervisor: {local,mnesia_kernel_sup}
Context: shutdown
Reason: reached_max_restart_intensity
Offender: [{pid,<0.152.0>},
{name,mnesia_locker},
{mfargs,{mnesia_locker,start,[]}},
{restart_type,permanent},
{shutdown,3000},
{child_type,worker}]
它给出了第二个节点上的mnesia网络分区错误。如何解决这个问题?
答案 0 :(得分:1)
最好清除本地数据库文件,并在设置主机名等后让ejabberd重新生成它们。
我已经按照this指南运行我的集群,直到两个节点上的第5步,然后(因为我不想使用这个自定义模块进行数据库同步)我去了the guide你提到并按照您当前尝试的方式手动执行数据库同步。 (我仍然需要花费半天时间来跟踪所有错误,但是上面提到的指南和来自日志文件的谷歌搜索错误消息最终解决了。;))
答案 1 :(得分:0)
最后,我解决了我的问题。问题出在Erlang OTP版本上。我使用的是Ejabberd 13.12和Erlang OTP 15B1。尽管这种组合在本地网络中运行良好但在AWS EC2上无效。现在我用OTP 17替换了Erlang OTP版本,我的集群工作正常。