1)有没有办法从另一个节点自动检测节点何时出现故障?
2)有没有办法自动重新启动刚刚崩溃的节点?
关于我的第二个问题,我已经google了,我看不到在代码/运行时创建节点的任何提及。
我知道你可以用进程来做到这一点 - 在运行时创建进程是微不足道的,如果你想知道它们何时崩溃你可以从主管等创建它们 - 但是我找不到任何与节点检测/创建有关的东西。
对于希望设计较小版本的Amazon EDS的客户需要此功能,但我无法想象亚马逊会在节点发生故障时手动重启节点!
答案 0 :(得分:3)
您可以使用net_kernel:monitor_nodes(true, [{node_type, visible}])
来监控erlang应用程序内的所有可见节点。来自man page:
调用进程订阅或取消订阅节点状态更改 消息。节点消息被传递到所有订阅进程 连接新节点时,以及何时传递nodedown消息 节点已断开连接。
我没有看到任何直接的方法(来自您的进程内部接收nodedown
消息),您可以使用该方法在远程计算机上启动节点。您可能需要编写一个小模块,自动为您执行此操作。