【问题标题】:ejabberd 16.03 with Elixir, node gets stuck when first node is down带有Elixir的ejabberd 16.03,当第一个节点关闭时节点卡住
【发布时间】:2016-07-25 15:57:02
【问题描述】:

我已更新到 ejabberd 16.03 并将其设置为 Elixir 项目依赖项(如:https://blog.process-one.net/how-to-use-ejabberd-as-an-elixir-application-dependency/)。 然后,我设置了一个包含三个节点(node1、node2、node3)的集群,其中节点 2 和 3 运行:ejabberd_cluster.join "node1"。

问题是,当我将节点 1 和 3 关闭时,我关闭了 node2 并尝试再次运行 node2,但它不起作用。

我读过:ejabberd clustering, Slave doesn't work when master goes down,但使用 Ejabberd 14 和 Erlang,问题没有发生。

我知道 Mnesia 的行为方式是这样,但是,为什么它在升级之前就起作用了?

【问题讨论】:

    标签: elixir ejabberd mnesia


    【解决方案1】:

    确实,正如您所指出的,Mnesia 的预期和预期行为是您必须以相反的顺序启动节点或强制主节点。

    自 10 多年前首次发布具有集群功能的 ejabberd 以来,Mnesia 一直以这种方式工作,并且行为没有改变。

    在您的情况下不正确的是您最后停止 node2 并首先启动 node 2。它没有理由卡住,因此您可能遇到了另一个问题,或者您之前的集群节点在您停止节点 2 时没有正确关闭。

    【讨论】:

    • 这正是问题所在。由于某种原因,两个节点宕机(不是故意的),然后我杀死了剩下的节点并试图重新启动它,但它卡住了,它无法连接到集群。那么,在那种情况下,当节点突然宕机时,如何才能获得集群的完整性。提前感谢@mickaël-rémond 的回答。
    • 剩余节点如果没有能力单独处理所有流量,将会过载。如果您想确保您的系统能够正常运行,可能需要增加冗余。
    猜你喜欢
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2021-08-25
    • 2011-09-07
    • 1970-01-01
    • 2013-09-17
    相关资源
    最近更新 更多