我正在以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但添加后我无法访问网络管理员。
答案 0 :(得分:0)
如果您不想从任何节点获取任何旧数据,那么您可以按照以下步骤进行群集。