Erlang 如何建立ejabberd集群?

Erlang 如何建立ejabberd集群?,erlang,ejabberd,Erlang,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:

我使用的是安装了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}]
节点上已启动应用程序ejabberdejabberd@ejabberdn1
详细信息:文件“/var/lib/ejabberd/schema.DAT”未正确关闭,正在修复。。。
=主管报告===2014年5月27日::07:11:59===
主管:{local,mnesia_kernel_sup}
上下文:child_终止
原因:被杀
罪犯:[{pid,},
{name,mnesia_locker},
{mfargs,{mnesia_locker,start,[]},
{restart_type,permanent},
{关闭,3000},
{child_type,worker}]
=主管报告===2014年5月27日::07:11:59===
主管:{local,mnesia_kernel_sup}
上下文:关机
原因:达到\u最大\u重新启动\u强度
罪犯:[{pid,},
{name,mnesia_locker},
{mfargs,{mnesia_locker,start,[]},
{restart_type,permanent},
{关闭,3000},
{child_type,worker}]

它给出了第二个节点上mnesia网络划分的错误。如何解决此问题?

最好清除本地数据库文件,并在设置主机名等后让ejabberd重新生成这些文件


我在两个节点上都按照指南第5步运行了集群,然后(因为我不想使用此自定义模块进行数据库同步),我找到了前面提到的您,并按照您当前尝试的方式手动进行了数据库同步。(我仍然花了半天的时间来追踪所有的错误,但是通过上面提到的指南和谷歌搜索日志文件中的错误消息,我终于解决了问题。

最后,我解决了我的问题。问题在于Erlang OTP版本。我使用的是Ejabberd13.12和ErlangOTP15B1。尽管这种组合在本地网络中运行良好,但在AWS EC2上不起作用。现在,我已将Erlang OTP版本替换为OTP 17,我的群集工作正常。

你想说什么?关闭两台服务器,然后删除两台计算机上的所有DAT文件,然后再试一次。ubuntu中的这些文件在哪里?@NathanielWaisbrot我已经删除了/var/lib/ejabberd/中的所有文件,但是也显示了同样的问题。你没有做一些奇怪的事情,比如在两个节点之间共享相同的
/var/lib/ejabberd
,对吗?您的Mnesia DB已损坏。要么它当前已损坏,而您在重试之前没有对其进行足够的清理,要么它正在被您正在做的事情损坏。在日志的前面部分查找其他错误。考虑在VM下运行每个节点,以确保它不会被周围的其他进程所困扰。在本地网络上,上述方法工作良好。当我在AWSEC2上创建集群时,问题就出现了。我已经遵循了这两个指南。但同样的问题也发生了。嗯,好的,我的集群实际上是通过VPN运行的(运行良好+安全通道),但我没有本地网络以外的经验,对不起