2016-04-05 43 views
1

我已更新到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」。ejabberd 16.03與Elixir,節點在第一個節點關閉時卡住

問題是,當我放置節點1和3,然後我下了node2並嘗試再次運行node2,它不起作用。

我讀過:ejabberd clustering, Slave doesn't work when master goes down,但隨着Ejabberd 14和Erlang,問題沒有發生。

我知道Mnesia的行爲如此,但爲什麼它在升級之前起作用?

回答

2

事實上,正如您所指出的,Mnesia的預期行爲和預期行爲是您必須以相反順序啓動節點或強制主節點。

Mnesia一直以這種方式工作,行爲自10年前集羣首次發佈ejabberd以來沒有改變。

你的情況不正確的是你停止node2最後並首先啓動節點2。沒有理由讓它卡住,所以你要麼有另一個問題,或者當你停止節點2時,你以前的集羣節點沒有正常關閉。

+0

這正是問題所在。出於任何原因,有兩個節點(不是故意的)關閉,然後我殺掉了剩下的節點並嘗試重新啓動它,但它卡住了,無法連接到集羣。 因此,在這種情況下,當節點突然下降時,我如何獲得集羣完整性。 在此先感謝@mickaël-rémond,感謝您的回答。 – lbernal

+1

如果剩餘的節點不具備單獨處理所有流量的能力,將會過載。如果你想確保你的系統運行良好,可能會增加冗餘。 –