5

我想集群 ejabberd 节点,所以我希望每个节点都有不同的节点名称。我在网上搜索,到处都说您可以通过更改 ERLANG_NODE=ejabberd@desired_name 来更改 ejabberdctl.cfg 文件中的节点名。

但是当我将该行修改为任何其他名称时,在启动服务器时,它显示“崩溃转储写入......”,当使用 ejabberdctl stop 停止服务器时,它显示“与节点的 RPC 连接失败ejabberd@desired_name:nodedown”。

有人可以告诉我如何成功更改节点名称吗?

提前致谢!!!

4

4 回答 4

4

无论您添加到 Ejabberd 节点的主机名是什么,您都必须在主机文件 (/etc/hosts) 中反映它,因为 ejabberd 会尝试解析您添加的域名,如果它不可解析,它将失败.. 它应该就这么简单,仅此而已。

于 2013-11-02T12:12:27.017 回答
1

ERLANG_NODE 的前面部分应该是你的名字。'@' 之后的部分是域/主机。

ERLANG_NODE=your-name@host

清理新节点上的 mnesia 目录(它们不包含任何相关信息,因为您从未集群过)

于 2013-07-04T15:55:40.077 回答
1

虽然有点晚了,但对于那些遇到同样问题的人,这是你必须做的:

  1. 搜索 ejabberd 的所有正在运行的进程并杀死它们。

    ps aux | grep ejabberd

    kill process_id_of_daemon

  2. 杀死所有与 epmd 有关的进程,它是一个由 erlang 运行时运行的守护进程。

    ps aux | grep epmd

    kill process_id_of_daemon

  3. 重启ejabberd

这里的问题是,如果您的系统中还安装了 erlang,则守护进程 epmd 仍在运行,并且 ejabberd 将其作为尝试调用的重复实例。(因此崩溃日志中出现重复名称错误)

停止这些进程然后运行 ​​ejabberd 将使 epmd 再次运行,因此它也不会影响 erlang。

于 2014-05-19T14:07:06.607 回答
1

只是为了记录。您可以使用 ejabberdctl 提供的选项。你所要做的就是...

  1. 使用旧节点名启动服务器
  2. 备份 mnesia db
  3. 停止服务器并从中移动所有 mnesia 文件/var/lib/ejabberd
  4. 使用新节点名启动服务器
  5. 更改 mnesia 备份中的节点名称
    ejabberdctl mnesia_change_nodename $OLDNODE $NEWNODE $OLDFILE $NEWFILE
  6. 将新文件设置为后备
    ejabberdctl install_fallback $NEWFILE
  7. 停止服务器并再次停止

整个过程在ejabberd 文档中进行了解释

于 2015-02-03T12:50:36.707 回答