替换种子节点而不将其从种子列表中删除

Replacing a seed node without removing it from seed list

我有一个总共有 6 个节点的 cassandra(版本 2.2.8)集群,其中 3 个节点是种子节点。其中一个种子节点最近宕机了。我需要替换那个死掉的种子节点。我的集群的设置方式使其无法在丢失超过 1 个节点的情况下幸存下来。我阅读此文档以替换死的种子节点。 https://docs.datastax.com/en/cassandra/2.1/cassandra/operations/opsReplaceNode.html

根据文档,我不敢从种子列表中删除死种子节点并进行滚动重启。如果出于任何原因,任何节点t start, I都会丢失数据。

如何处理这种情况?在新节点完全起来运行之前,不从种子列表中删除死种子节点可以吗?因为我已经有两个工作种子节点已经存在于种子列表中。请指教

简而言之:是的,可以等待删除种子节点。

说明:种子节点配置做两件事:

  1. 添加新节点时。新节点将读取种子配置以获得与 Cassandra 集群的第一个联系点。节点加入集群后,它将在 system.peers table 中保存有关所有 Cassandra 节点的信息。对于所有未来的启动,它将使用此信息连接到集群,而不是种子节点配置。
  2. Cassandra 还使用种子来改善八卦。基本上,种子节点比普通节点更有可能接收八卦消息。这提高了节点接收有关其他节点更新的速度,例如状态。

在您的情况下,丢失一个种子节点只会影响 2。因为您还有两个种子节点,所以我不认为这是一个大问题。一旦您更新了种子配置,我仍然会在所有节点上进行滚动重启。