2011-08-20 21 views

回答

4

您需要兩件事:

a)大量的計劃。

b)在多個節點上運行的應用程序。

通常的技巧是取下部分節點集羣並將其升級到新版本。它應該能夠與舊節點通話。然後在新版本的Erlang接管時碰撞舊節點。

Erlang不提供免費的這種升級。儘管如此,它的確讓人痛苦不少。

0

簡短的回答,你不能。

這是因爲爲新版本的BEAM仿真器(Erlang VM)編譯的應用程序在舊版本的仿真器上無法正常運行。

或者在更多的細節:

升級的應用程序而無需停止它只能使用release handler來完成。但是釋放處理程序只能升級在VM中運行的應用程序,而不是VM本身。您仍然可以準備relup文件,但是當systools:make_relup/3注意到新的release使用不同版本的BEAM仿真器時,它將添加指令restart_new_emulator (Low-Level)以在升級過程中重新啓動節點(請參閱restart_new_emulator的說明the page I mentioned earlier)。然而,你可以做的是在不中斷服務的情況下升級Erlang虛擬機(假設你的應用程序向外部提供某種服務)。但這很大程度上取決於應用程序的體系結構,並沒有通用的答案。

相關問題