ejabberd群集,当主人关闭时奴隶不起作用

时间:2016-01-11 06:04:21

标签: erlang ejabberd mnesia

我设置了ejabberd群集,一个是主人,另一个是奴隶,如here所述。

我已将.erlang.cookie和数据库文件从master复制到slave。 一切都很好。
问题是当我停止主节点时:

  1. 然后没有请求被路由到奴隶。
  2. 当尝试重新启动从属节点时,它一旦停止就不会启动。
  3. 我被困在这里,请帮帮我。 感谢

2 个答案:

答案 0 :(得分:5)

这是Mnesia的标准行为。如果您启动的节点不是最后一个在集群中停止的节点,那么它无法知道它是否具有最新的,最新的数据。

启动Mnesia群集的过程是以相反的顺序启动节点。

如果最后在Mnesia群集上看到的节点无法启动或加入群集,则需要使用Mnesia命令强制群集" master",即告诉它您认为这个节点具有最新的内容。这是通过使用Erlang命令mnesia:set_master_nodes/1完成的。

例如,从ejabberd Erlang命令行:

mnesia:set_master_nodes([node1@myhost]).

在大多数情况下,Mnesia群集会自动处理所有内容。当节点发生故障时,其他节点会知道并自动继续透明地工作。您需要将哪个节点设置为参考数据(使用set_master_nodes/1)的唯一情况是,对于Mnesia来说这是不明确的,即在仅启动仍在运行节点时关闭的节点时或者当有一个netsplit。

答案 1 :(得分:0)

按照以下步骤链接:  http://chadillac.tumblr.com/post/35967173942/easy-ejabberd-clustering-guide-mnesia-mysql 并调用easy_cluster模块的方法join_as_master(NodeName)。