【发布时间】:2018-03-07 15:35:26
【问题描述】:
我以 root 身份工作并使用 centos7。 我已经使用 RPM 包在两台不同的机器上安装了 ejabberd 16.09。在这两种情况下,自从我克隆了第一台机器变成第二台。一切正常。
当我想对这些机器进行集群时出现了问题。由于磁盘是克隆的,我在两台机器上都有 .erlang.cookie 和 ejabberd.yml 的精确副本(我亲自验证了内容)。现在,当我在任一机器上执行此命令时,ejabberdctl join_cluster "ejabberd@localhost" 我收到一条错误消息:{not_master,ejabberd@localhost}。这似乎很自然,因为当我有两个相同的节点名时如何形成集群。
为了克服这个问题,我在第二台机器上新安装了 ejabberd。但令我惊讶的是,它再次给了我相同的节点名!!(ejabberd@localhost) 因此,要实现集群,很自然的事情就是更改节点名。好的,让我们试试吧!
按照这些步骤 ejabberd change nodename guide
我能够跟随到第 3 步。
[OLDNODE=ejabberd@localhost 和 NEWNODE=ejabberd@myfirstmachine 其中 myfirstmachine 是我的计算机的主机名]
对于第 4 步,我无法在我的系统中找到任何 /var/lib/ejabberd 目录(可能是因为我没有创建用户 ejabberd)。相反,我在 /opt/ejabberd-16.09/database 中找到了这个名为“ejabberd@localhost”的目录,其中包含所有 .DAT、.DCD 和 .DCL 文件。于是我创建了一个文件夹 /opt/ejabberd-16.09/database/oldfiles 并将所有文件从 ejabberd@localhost 目录迁移到这个目录。
在第 6 步之前一切正常。当我执行第 7 步时,出现以下错误。
无法从节点 ejabberd@localhost 的“/tmp/new.backup”安装回退:{“无法安装回退”, {"本地节点上没有磁盘驻留模式", [ejabberd@myfirstmachine]}}
所以我在这里卡住了。我只想实现不同机器的集群。我对namenode没有兴趣。我什至尝试了另一种技术,即在 ejabberdctl.cfg 中添加 ERLANG_NODE,但添加后我无法访问网络管理员。
【问题讨论】:
标签: ejabberd