我有一个应用程序,我无法提前知道种子节点进入应用程序配置。因此,应用程序在一个节点上启动,当它在其他节点上启动时,它们使用Cluster.join加入第一个节点上的集群。问题是连接永远不会完成,集群永远不会启动。有什么问题?
答案 0 :(得分:6)
问题是还没有要加入的集群。简单地在第一个节点上实例化集群对象不会启动集群。文档中有一个小注释可能很容易被遗漏:
也可以使用Cluster(系统).join以编程方式执行连接。请注意,您只能加入现有的集群成员,这意味着对于自举,某些节点必须自己加入。
因此,第一个节点应该自己加入以启动集群。这会导致创建一个“领导者”,负责从群集中添加和删除节点。