种子节点如何在Cassandra集群中工作

时间:2014-02-14 09:59:51

标签: nosql cassandra cloud cluster-computing

我的理解是:

种子节点维护群集中的所有节点列表。 假设我们必须向集群添加新节点,我们必须在种子服务器的种子列表中输入新节点名称,然后新节点将成为环的一部分。

我假设我们不必在对等节点中提及有关种子服务器的任何事情。

如果我的理解不正确,请纠正我。

我读了一些“种子节点”中的失败不会导致任何问题的地方。让我们说如果种子节点崩溃了如何维护环信息?

2 个答案:

答案 0 :(得分:13)

我想澄清一下,因为来自文档的引用是陈旧的,并且从未完全准确。

即使在引导之后,种子节点仍然在Gossip中发挥作用。

如果种子节点出现故障,则不会产生额外的影响。虽然如果您需要替换种子节点,您应该遵循guide in the docs.

详细信息:

除了帮助新节点引导之外,种子节点还用于防止群集中的裂脑。当节点与已经具有关于来自最近的八卦操作的其他节点的信息的节点握手时,节点找出关于其他节点。

Gossip.run()每秒都会发生一次。在单个八卦运行中,节点将与一个随机活动节点握手,一个随机死节点(如果有的话) - 基于某种概率,以及一个随机种子节点(如果随机节点不是种子) - 也基于一些概率。随着种子节点列表的增加,您将与握手的节点越多。根据此logic,随着种子节点比例的增加,与种子节点列表发生握手的概率频率将增加。

但是,如上所述,只有在种子节点上没有发生步骤1时才会发生步骤3。因此,必须执行第3步的概率会随着添加的种子而增加,最大值在节点的一半是种子的位置(.25机会),然后再次减少。

建议每个DC保留3个种子节点。 不要将所有节点添加为种子节点

答案 1 :(得分:3)

反过来说:在新节点的配置中,您指向另一个已存在的节点作为种子提供者。种子提供者是加入群集的新节点的初始联系点。节点加入集群后,它会记住拓扑,不再需要种子提供程序。

来自Cassandra docs

  

注意:种子节点指定没有其他目的   引导加入群集的新节点的八卦流程。   种子节点不是单点故障,也没有   除了自举之外的集群操作中的其他特殊用途   节点。