ejabberd集群,当master宕机时Slave不工作
ejabberd clustering, Slave doesn't work when master goes down
我已经设置了 ejabberd 集群,一个是主节点,另一个是从节点 here。
我已经将 .erlang.cookie 和数据库文件从主服务器复制到从服务器。
一切正常。
问题是当我停止主节点时:
- 然后没有请求被路由到从站。
- 尝试重新启动从属节点时,它一旦关闭就无法启动。
我卡在这里了,请帮帮我。
谢谢
这是 Mnesia 的标准行为。如果您启动的节点不是集群中最后一个停止的节点,那么它无法知道它是否具有最新、最新的数据。
启动 Mnesia 集群的过程是以节点关闭的相反顺序启动节点。
万一在 Mnesia 集群上最后看到的节点无法启动或加入集群,您需要使用 Mnesia 命令强制集群 "master",即告诉它您考虑这个节点有最新的内容。这是通过使用 Erlang 命令 mnesia:set_master_nodes/1.
完成的
例如,来自 ejabberd Erlang command-line:
mnesia:set_master_nodes([node1@myhost]).
在大多数情况下,Mnesia 集群会自动处理所有事情。当一个节点出现故障时,其他节点会意识到并自动继续透明地工作。您需要将哪个节点设置为参考数据(使用 set_master_nodes/1
)的唯一情况是当这对 Mnesia 不明确时,即仅启动仍然存在 运行 个节点时关闭的节点或者当有网络分裂时。
按照下面的步骤进行操作 link:
http://chadillac.tumblr.com/post/35967173942/easy-ejabberd-clustering-guide-mnesia-mysql
并调用 easy_cluster 模块的方法 join_as_master(NodeName)。
我已经设置了 ejabberd 集群,一个是主节点,另一个是从节点 here。
我已经将 .erlang.cookie 和数据库文件从主服务器复制到从服务器。
一切正常。
问题是当我停止主节点时:
- 然后没有请求被路由到从站。
- 尝试重新启动从属节点时,它一旦关闭就无法启动。
我卡在这里了,请帮帮我。 谢谢
这是 Mnesia 的标准行为。如果您启动的节点不是集群中最后一个停止的节点,那么它无法知道它是否具有最新、最新的数据。
启动 Mnesia 集群的过程是以节点关闭的相反顺序启动节点。
万一在 Mnesia 集群上最后看到的节点无法启动或加入集群,您需要使用 Mnesia 命令强制集群 "master",即告诉它您考虑这个节点有最新的内容。这是通过使用 Erlang 命令 mnesia:set_master_nodes/1.
完成的例如,来自 ejabberd Erlang command-line:
mnesia:set_master_nodes([node1@myhost]).
在大多数情况下,Mnesia 集群会自动处理所有事情。当一个节点出现故障时,其他节点会意识到并自动继续透明地工作。您需要将哪个节点设置为参考数据(使用 set_master_nodes/1
)的唯一情况是当这对 Mnesia 不明确时,即仅启动仍然存在 运行 个节点时关闭的节点或者当有网络分裂时。
按照下面的步骤进行操作 link: http://chadillac.tumblr.com/post/35967173942/easy-ejabberd-clustering-guide-mnesia-mysql 并调用 easy_cluster 模块的方法 join_as_master(NodeName)。