如何在cassandra 3 clutser中添加种子节点?

时间:2017-11-06 19:00:38

标签: cassandra cassandra-3.0

我试图将我的一个节点更改为具有高规格(更多内存和CPU)的计算机。所以我运行node decommission等待离开环,终止机器并添加新机器。之后,我使用

配置了cassandra.yaml
  • cluster_name
  • listend_address
  • rpc_broadcast_address
  • -seeds:使用ip的机器

启动cassandra服务后,种子节点以正确的方式加入环并且负载较低。对我来说真的很奇怪,因为其他节点花了很多时间加入戒指。

1h后,种子节点仍然具有相同的负载。

我该怎么做才能添加种子节点?

提前致谢。

1 个答案:

答案 0 :(得分:2)

是的,Cassandra的许多新用户都认为种子节点是一些神秘的主节点等效节点。它真的没什么特别的。实质上,节点需要在开始时了解集群拓扑,seeds属性提供应该的节点列表。

理论上,您可以让新节点将任何现有节点指定为其种子节点。该节点可以将另一个节点指定为其种子节点。等等等等。它所做的就是使用该节点来确定集群拓扑结构。

  

启动cassandra服务后,种子节点以正确的方式加入环并且负载较低。对我来说真的很奇怪,因为其他节点花了很多时间加入戒指。

     

1h后,种子节点仍然具有相同的负载。

     

我该怎么做才能添加种子节点?

种子节点不会传输数据。将数据传输到种子节点所需的额外步骤是将所有节点指定为种子节点不是一个好主意的主要原因之一。

您可以在新的种子节点上运行nodetool repairrebuild,这会将数据流式传输到它。这种方法的问题在于它在流数据时仍然会接受请求(并且可能会失败)。

另一种方法是添加新节点,同时指定该节点的seeds列表中的其他现有节点。

一旦启动并拥有流数据,那么您有几个选择:

  1. 保持原样,任何未来的节点都可以在其种子列表中使用新节点。
  2. 如果您的其他现有节点在其种子列表中有一个不再存在的节点,您可以更新这些节点以指向您的新节点作为种子。
  3. 关于选项#2的好处是,您可以在cassandra.yaml中更改它,必须重新启动它们。这是因为您唯一需要更改的时间是无论如何都要重启。种子节点指定在正常操作期间不起作用。

    希望有所帮助!