如何重新连接erlang集群中的分区节点

时间:2013-10-17 14:14:54

标签: erlang cluster-computing distributed-system

寻找处理Erlang集群分区的一些解决方案。基本上,只要再次访问群集参与者,就应该将其添加回群集。最简单的解决方案可能是使用erlang node monitoring

是否有其他/更好的解决方案,可能更加动态,不需要固定节点列表?

2 个答案:

答案 0 :(得分:1)

有一些第三方库不必使用固定节点列表进行配置。我熟悉的两个是redgriderlang-redis_sd_epmd,可能有其他人,但我只是不熟悉它们。

这两者都具有redis的外部依赖性,根据您的决定需要,这可能是也可能不合适。

redgrid 是更简单的实现,但没有大量功能。基本上erlang节点连接到redis,所有连接到redis的erlang节点然后建立彼此的连接。您可以将元数据与节点关联,然后在另一个节点上检索它。

erlang-redis_sd_epmd 稍微复杂一些,但允许更多配置。例如,节点可以发布它可以执行的服务,而不是仅自动连接所有节点,连接节点可以根据提供的服务查找节点。

答案 1 :(得分:1)

不是现成的解决方案,但如果你已经在为ejabberd做自定义mod,你可以尝试集成这个代码,解决集群分区后的mnesia冲突。

https://github.com/uwiger/unsplit