我已经安装ejabberd聚类,一个是主站和另一个是如所描述的从这里.
我已将.erlang.cookie和数据库文件从master复制到slave.一切都很好.
问题是当我停止主节点时:
然后没有请求被路由到slave.
当尝试重新启动从属节点时,它一旦停止就不会启动.
我被困在这里,请帮帮我.谢谢
这是Mnesia的标准行为.如果您启动的节点不是最后一个在集群中停止的节点,那么它无法知道它是否具有最新的,最新的数据.
启动Mnesia群集的过程是以与它们关闭的相反顺序启动节点.
如果最后在Mnesia群集上看到的节点无法启动或加入群集,则需要使用Mnesia命令强制群集"master",即告诉您认为此节点具有最新内容.这是通过使用Erlang命令mnesia:set_master_nodes/1来完成的.
例如,从ejabberd Erlang命令行:
mnesia:set_master_nodes([node1@myhost]).
在大多数情况下,Mnesia群集会自动处理所有内容.当节点发生故障时,其他节点会知道并自动继续透明地工作.您需要将哪个节点设置为参考数据(with set_master_nodes/1
)的唯一情况是,对于Mnesia而言这是不明确的,即在仅启动仍在运行节点时关闭的节点或存在netsplit时.