10

因此,有大量关于如何扩展 Cassandra 的文档,但是是否有关于如何“取消扩展”Cassandra 并从集群中删除节点的良好资源?是否像关闭节点、让集群再次同步并重复一样简单?

原因是一个预计流量高峰的网站,在几天内从每天的数千次点击攀升至数十万次。网站会提前“加速”,启动多个 Web 服务器实例,Cassandra 等。在请求洪流平息后,目标是关闭不再使用的实例,而不是为服务器付费只是坐在那里。

4

3 回答 3

8

如果您只是关闭节点并重新平衡集群,您可能会丢失一些数据,这些数据仅存在于已删除的节点上并且尚未复制。

使用 nodetool 可以轻松完成安全的集群收缩。首先,运行:

nodetool drain

...在删除的节点上,停止接受写入并刷新内存表,然后:

nodetool decommission

要将节点的数据移动到其他节点,然后关闭节点,然后在其他节点上运行:

nodetool removetoken

...从集群中完全删除节点。详细的文档可以在这里找到:http ://wiki.apache.org/cassandra/NodeTool

根据我的经验,我建议逐个删除节点,而不是分批删除。这需要更多时间,但在网络中断或硬件故障的情况下更安全。

于 2012-11-09T09:00:17.973 回答
2

当您删除节点时,您可能需要重新平衡集群,将一些节点移动到新令牌。在计划的缩减中,您需要:

1 - 最小化移动次数。

2 - 如果您必须移动节点,请尽量减少传输的数据量。

有一篇关于集群平衡的文章可能会有所帮助: Balancing Your Cassandra Cluster

此外,本视频的开头是关于添加节点和删除节点操作以及在每个操作中最小化集群影响的最佳策略。

希望这 2 个参考资料可以为您提供足够的信息来计划您的降级。

于 2012-11-09T13:54:59.563 回答
0

首先,在将要删除的节点上,将内存(memtable)刷新到磁盘上的 SSTables:

-nodetool 刷新

二、运行命令离开集群:-nodetool decommission

此命令会将节点负责的范围分配给其他节点并适当地复制数据。

要监视进程,您可以使用命令:- nodetool netstats

找到一篇关于如何从 Cassandra 中删除节点的文章。这对我缩小 cassandra很有帮助。所有操作都在那里逐步描述。

于 2020-04-06T10:32:19.623 回答