如何更改ejabberd @ localhost的ejabberd的默认节点名称?

时间:2013-07-04 13:01:58

标签: ejabberd

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

但是当我将该行修改为任何其他名称时,在启动服务器时,它会显示“Crash dump to ......”,并且当使用ejabberdctl stop停止服务器时,它会显示“RPC连接失败”到节点ejabberd @ desired_name:nodedown“。

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

提前致谢!!!

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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

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

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

答案 2 :(得分:1)

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

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

    中说明

答案 3 :(得分:0)

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

ERLANG_NODE =您的名称@宿主

在新节点上清理mnesia目录(由于您从未进行过群集,因此它们不包含任何相关信息)