OTP分布式应用程序接管

时间:2013-02-19 17:56:58

标签: erlang distributed otp

我正在基于配置文件将Erlang应用程序动态加载到系统中,这会导致我在启动时启动分布式应用程序 - 我能够使故障转移工作,但不能进行故障恢复(或者在OTP条款中) ,接管。)

假设我有NodeA运行应用程序,NodeB作为故障转移节点。我在NodeA上拉线,应用程序迁移到NodeB。这是预料之中的。但是,当我将NodeA重新联机并尝试拨打application:start(MyApp)时,我得到了:

{error, {shutdown,{myapp, start, [normal,["config.xml"]]}}} 这表明应用程序无法启动。

无论如何,它都无法启动,因为我已经在其他NodeB上运行了主管,而且我已经net_adm:将它们ping在一起。

我想我可以在MyApp上调用application:takeover / 2来控制节点,并在另一个节点上终止应用程序。

{error,{not_running_distributed, MyApp}}

但这也不起作用。我的节点优先级列表是[NodeA, {NodeB, NodeC}],所以我认为应用程序会知道在重新联机后移动到更高优先级的节点。

如何在这种情况下实施Takeover?

1 个答案:

答案 0 :(得分:0)

您可能需要改为使用application:takeover/2