【发布时间】:2014-06-27 20:22:43
【问题描述】:
我正在使用 2 个安装了 ejabberd 13.12 的 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 网络分区错误。如何解决这个问题?
【问题讨论】:
-
你想说什么?
-
关闭两台服务器,然后删除两台机器上的所有 DAT 文件,然后重试。
-
这些文件在 ubuntu 中的什么位置?
-
@NathanielWaisbrot 我已经从 /var/lib/ejabberd/ 中删除了所有文件,但随后也出现了同样的问题。
-
你不会做一些奇怪的事情,比如在两个节点之间共享相同的
/var/lib/ejabberd,对吧?您的 Mnesia DB 已损坏。要么它当前已损坏,并且您在重试之前清理得不够好,要么它被您正在做的事情损坏了。在日志中查找其他错误。考虑在 VM 下运行每个节点,以确保它不会被您周围的其他进程破坏。