寻找处理Erlang集群分区的一些解决方案。基本上,只要再次访问群集参与者,就应该将其添加回群集。最简单的解决方案可能是使用erlang node monitoring。
是否有其他/更好的解决方案,可能更加动态,不需要固定节点列表?
答案 0 :(得分:1)
有一些第三方库不必使用固定节点列表进行配置。我熟悉的两个是redgrid和erlang-redis_sd_epmd,可能有其他人,但我只是不熟悉它们。
这两者都具有redis的外部依赖性,根据您的决定需要,这可能是也可能不合适。
redgrid 是更简单的实现,但没有大量功能。基本上erlang节点连接到redis,所有连接到redis的erlang节点然后建立彼此的连接。您可以将元数据与节点关联,然后在另一个节点上检索它。
erlang-redis_sd_epmd 稍微复杂一些,但允许更多配置。例如,节点可以发布它可以执行的服务,而不是仅自动连接所有节点,连接节点可以根据提供的服务查找节点。
答案 1 :(得分:1)
不是现成的解决方案,但如果你已经在为ejabberd做自定义mod,你可以尝试集成这个代码,解决集群分区后的mnesia冲突。