将应用程序推送到erlang从属节点

时间:2014-01-15 19:47:25

标签: logging mapreduce erlang distributed master-slave

distributed system中,有一个主人开始了 一堆奴隶奴隶:开始。它使用lager来记录消息 master,客户端向主服务器发送日志消息,主服务器记录它们。

问题是这些消息的数量和大小可能会增长和增加 网络使用情况。相反,我希望写入从属节点上的日志 除非日志的“级别”,否则在本地而不是被推送到主服务器 消息高于某个级别(例如错误或警告但不是警告)。

我尝试在从属节点上启动一个独立的大型应用程序,但它抱怨 关于没有找到它的应用程序文件: 错误,{“没有这样的文件或目录”,“goldrush.app”} (goldrush是lager的依赖)。

如何将这些应用程序分发给从属服务器?

1 个答案:

答案 0 :(得分:1)

最好将应用程序作为Erlang版本的一部分进行分发。这意味着使用Rebar创建发布。通过这样的过程,您可以确保始终拥有所需的应用程序(如果您的应用程序正确依赖于其他应用程序,如Lager)。

另一种选择是在启动之前确保目标系统上存在应用程序(及其依赖项)。这是一种更加手动的方法,但例如可以拉动源代码并在其他命令中运行rebar3 compile以正确构建系统。下载并构建所有依赖项后,即可启动系统。

无法通过Erlang本身将Erlang应用程序推送到另一个节点。通过欺骗可以通过线路将各个Erlang模块作为二进制文件发送。对于应用程序来说,这是不可取的,因为它们可能依赖于其他很多东西(如应用程序文件和私有数据)。

底线:您需要通过自己的部署过程自行确保应用程序及其依赖项存在于目标上。