2013-07-04 39 views
3

我想集群ejabberd节点,所以我希望每个节点具有不同的节点名称。 我在网上搜索,无处不在,它说你可以通过更改ERLANG_NODE = ejabberd @ desired_name来更改ejabberdctl.cfg文件中的nodename。如何更改ejabberd的默认节点名ejabberd @ localhost?

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

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

在此先感谢!

+0

说明你可能有Mnesia成为一个问题。我不记得细节,但mnesia表保持锁定在节点的本地主机上。如果您不需要恢复mnesia上的数据,只需删除数据库目录并重新启动ejabberd服务器 –

回答

0

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

ERLANG_NODE =您的名称@主机

清理Mnesia的新节点上的目录(它们不持有任何有关的信息,因为你从来没有群集)添加到Ejabberd节点无论主机名

+0

感谢您的回复,但我在哪里可以找到mnesia目录以将其删除。我已经通过使用终端搜索ejabberd *删除了与ejabberd相关的所有内容。尽管如此,在全新安装ejabberd之后,即使使用localhost,服务器也无法正常工作。 – user2323620

+0

它是在YOURDIR/var/lib/*之外的cookie文件。也许你的目标没有受到不良主机的“污染”,因为mnesia可能无法启动。 – user425720

+1

修改ejabberdctl.cfg中的节点名称后,服务器不会启动,即使我已完全删除mnesia db目录(如您指定的那样)。恢复modf后,它工作得很好。我究竟做错了什么?? – user2323620

3

,你会必须在主机文件(/ etc/hosts)中反映出来,因为ejabberd试图解析你添加的域名,如果它不能被解析,它将会失败。它应该是那么简单,没有更多。

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

这里的问题是,如果你也有安装在系统二郎,守护EPMD仍在运行和ejabberd以此为(因此崩溃日志中的重复名称错误)

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

1

只为记录。您可以使用ejabberdctl提供的选项。你所要做的就是......与旧节点名称

    1. 启动服务器采取Mnesia的数据库的备份
    2. 停止服务器,并从/var/lib/ejabberd
    3. 启动服务器与新节点名在Mnesia中
    4. 变化节点名称将所有的Mnesia文件备份与
      ejabberdctl mnesia_change_nodename $OLDNODE $NEWNODE $OLDFILE $NEWFILE
    5. 设置新文件作为后备
      ejabberdctl install_fallback $NEWFILE
    6. 停止服务器,并再次停止

    整个过程中ejabberd docs