我有一个erlang应用程序,需要以分布式方式运行。
现在要形成集群,erlang节点需要共享相同的cookie值,并且可以采用以下两种方法之一进行连接-
net_adm:ping / 1
net_kernel:connect_node / 1
但是这样做,我将需要维护节点列表并以自定义方式处理故障转移。甚至在发生故障转移的情况下,如何知道要连接到哪个节点,因为在那之前可能已更改了起始节点列表。
所以任何人都可以建议如何以最少的努力来形成一个erlang集群,以后的节点可以自动加入该集群而无需给出实际的nodeList。
答案 0 :(得分:2)
没有很多100%的傻瓜解决方案。我们中的许多人不时地实施了自己的解决方案。我一生中至少做过3次。
其中2个,我使用了一个外部数据库(一次是Redis,一次是MySQL),我在该数据库中注册和注销了当前的活动节点。
另一个机会,我使用了net_adm:world()
和.erlang.hosts
。看看the docs。
我也知道一些项目正在推广这种工具:我认为Erlang Solutions正在使用一个工具,并且不确定LASP或Partisan还是Chris Meiklejohn的其他工具。您应该检查一下。