如何设置ejabberd集群



我正在使用安装了ejabberd 13.12的2个ec2实例。我遵循这个指南来设置集群。在第二个节点上,当我运行命令-

 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网络分区的错误。如何解决这个问题?

最好清除本地数据库文件,并在设置主机名等之后重新生成它们。

我按照本指南在两个节点上运行到第5步,然后(因为我不想使用这个自定义模块进行数据库同步),我去了您提到的指南,并像您目前尝试的那样手动执行数据库同步。(我仍然花了半天的时间来追踪所有的错误,但在上面提到的指南和谷歌错误信息从日志文件最终解决了。;)

最后,我解决了我的问题。问题是与Erlang OTP版本。我使用Ejabberd 13.12和Erlang OTP 15B1。尽管这种组合在本地网络中工作得很好,但在AWS EC2上却不能工作。现在我已经用OTP 17取代了Erlang OTP版本,我的集群工作得很好。

最新更新