我想集群ejabberd节点,所以我希望每个节点都有不同的节点名称。 我在网上搜索,它说你可以通过改变ERLANG_NODE = ejabberd @ desired_name来改变ejabberdctl.cfg文件中的节点名。
但是当我将该行修改为任何其他名称时,在启动服务器时,它会显示“Crash dump to ......”,并且当使用ejabberdctl stop停止服务器时,它会显示“RPC连接失败”到节点ejabberd @ desired_name:nodedown“。
有人可以告诉我如何成功更改节点名称吗?
提前致谢!!!
答案 0 :(得分:3)
无论您添加到Ejabberd节点的主机名是什么,您都必须在主机文件(/ etc / hosts)中反映它,因为ejabberd会尝试解析您添加的域名,如果它不可解析,它将失败。它应该是那么简单,仅此而已。
答案 1 :(得分:1)
虽然有点太晚了,但对于那些遇到同样问题的人来说,这就是你必须做的事情:
搜索ejabberd的所有正在运行的进程并将其杀死。
ps aux | grep ejabberd
kill process_id_of_daemon
终止与epmd相关的所有进程,这是由erlang运行时运行的守护进程。
ps aux | grep epmd
kill process_id_of_daemon
重启ejabberd
这里的问题是,如果你的系统中也安装了erlang,那么守护进程epmd仍在运行,ejabberd将其作为试图调用的重复实例。(因此崩溃日志中出现重复的名称错误)
停止这些进程然后运行ejabberd会使epmd再次运行,因此它也不会影响erlang。
答案 2 :(得分:1)
仅供记录。您可以使用ejabberdctl提供的选项。你所要做的就是......
/var/lib/ejabberd
ejabberdctl mnesia_change_nodename $OLDNODE $NEWNODE $OLDFILE $NEWFILE
ejabberdctl install_fallback $NEWFILE
整个过程在ejabberd docs
中说明答案 3 :(得分:0)
ERLANG_NODE的前部应该是你的名字。后面的'@'部分是域/主机。
ERLANG_NODE =您的名称@宿主
在新节点上清理mnesia目录(由于您从未进行过群集,因此它们不包含任何相关信息)