ejabberd-16.09群集和名称节点问题

时间:2017-09-26 12:02:14

标签: ejabberd

我正在以root身份使用centos7。 我使用RPM包在两台不同的机器上安装了ejabberd 16.09。在这两种情况下,我都有相同的节点名( ejabberd @ localhost )和相同的主机( ejabberd.c.southern-silo-174209.internal ),因为我克隆了磁盘第一台机器进入第二台。一切都很好。

当我想要集群这些机器时出现问题。由于磁盘是克隆,我在这两台机器上都有 .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)。相反,我发现这个名为" ejabberd @ localhost"在 /opt/ejabberd-16.09/database 内,其中包含所有.DAT,.DCD和.DCL文件。所以我创建了一个文件夹 /opt/ejabberd-16.09/database/oldfiles ,并将所有文件从ejabberd @ localhost目录迁移到此目录。

一切顺利,直到第6步。当我执行第7步时,我收到以下错误。

无法安装" /tmp/new.backup"在节点ejabberd @ localhost:{"无法安装后备",                                                                            {"本地节点上没有光盘驻留架构",                                                                             [ejabberd @ myfirstmachine]}}

所以我在这里被困住了。我只想获得不同机器的集群。我对namenode不感兴趣。我甚至尝试了另一种技术,那就是在ejabberdctl.cfg中添加ERLANG_NODE但添加后我无法访问网络管理员。

1 个答案:

答案 0 :(得分:0)

如果您不想从任何节点获取任何旧数据,那么您可以按照以下步骤进行群集。

  1. 停止所有节点
  2. 使用rm-rf opt / ejabberd-16.09 / database
  3. 从所有三个节点中的opt / ejabberd-16.09 / database目录中删除所有内容
  4. 根据' ejabberd @ hostname'更改所有三个节点中的ERLANG_NODE其中hostname应该是可路由的
  5. 重新启动所有节点
  6. 现在使用ejabberdctl join_cluster' ejabberd @ node2'
  7. 将群集从节点1加入到节点2
  8. 之后转到节点3并使用与上面相同的命令ejabberdctl join_cluster' ejabberd @ node2'
  9. 您的群集应立即设置。可以通过ejabberdctl list_cluster检查