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

问题描述 投票:2回答:1

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

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

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

这些应用程序应该如何分发给奴隶?

logging mapreduce erlang distributed master-slave
1个回答
1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.