【问题标题】:How to change bydefault node name of ejabberd which is ejabberd@localhost?如何更改 ejabberd 的默认节点名称为 ejabberd@localhost?
【发布时间】:2013-07-02 12:03:35
【问题描述】:

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

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

谁能告诉我如何成功更改节点名称?

提前致谢!!!

【问题讨论】:

  • 您的记忆可能有问题。我不记得细节,但 mnesia 表一直锁定在节点的本地主机中。如果您不需要恢复 mnesia 上的数据,只需删除 db 目录并重新启动 ejabberd 服务器

标签: ejabberd


【解决方案1】:

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

ERLANG_NODE=your-name@host

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

【讨论】:

  • 感谢您的回复,但是我在哪里可以找到mnesia目录来删除它。我已经通过使用终端搜索 ejabberd* 删除了与 ejabberd 相关的所有内容。尽管如此,在全新安装 ejabberd 后,即使使用 localhost,服务器也无法正常工作。
  • 除了 cookie 文件之外,它还在 YOURDIR/var/lib/* 中。也许你的目录没有被坏主机“污染”,因为 mnesia 可能无法启动。
  • 在 ejabberdctl.cfg 中修改节点名称后,服务器无法启动,即使我已经完全删除了您指定的 mnesia db 目录。恢复 modf 后,它工作得很好。我做错了什么??
  • 它说“故障转储已写入:/home/...../var/log/ejabberd/erl_crash_20130705-170203.dump 内核 pid 终止 (application_controller) ({application_start_failure, kernel, { {shutdown, {failed_to_start_child, net_sup,{shutdown,{failed_to_start_child, auth,{“读取 /home/时出错...” 当我尝试 ejabberdctl stop 时,它说“节点 ejabberd@srv 上的 RPC 失败:nodedown”跨度>
  • 你的host -s 是什么?你能用这个代替'srv'吗?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

      ps aux | grep ejabberd

      kill process_id_of_daemon

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

      ps aux | grep epmd

      kill process_id_of_daemon

    3. 重启ejabberd

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

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

    【讨论】:

      【解决方案4】:

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

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

      整个过程在ejabberd docs中解释

      【讨论】:

        猜你喜欢
        • 2015-10-10
        • 1970-01-01
        • 2018-03-07
        • 2016-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-12
        • 1970-01-01
        相关资源
        最近更新 更多