2012-11-09 93 views
6

因此,如何扩展Cassandra有相当多的文档,但这是如何“非缩放”Cassandra并从集群中删除节点的好资源?是否像关闭节点一样简单,让群集再次同步并重复?缩小Cassandra集群的最佳方法

原因是对于一个预计交通高峰期的网站而言,几天之内就会从每天的几千次点击升至数十万次。这个网站将在手动启动之前,启动Web服务器Cassandra等的多个实例。请求洪流消退后,目标是关闭不再使用的实例,而不是为服务器付费那只是坐在旁边。

回答

6

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

使用nodetool可以轻松完成安全集群缩小。起初,运行:

nodetool drain 

...的节点删除,停止接受写和冲洗memtables,则:

nodetool decommission 

到节点的数据移动到其它节点,然后关闭该节点向下并在其他节点上运行:

nodetool removetoken 

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

从我的经验,我建议删除节点一个接一个,而不是批量。它需要更多时间,但在网络中断或硬件故障的情况下更安全。

2

当您删除节点时,您可能不得不重新平衡集群,将某些节点移动到新的标记。在计划中,您需要:

1 - 最小化移动次数。

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

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

而且,this video开始时大约是添加节点和删除节点操作和最佳策略,以尽量减少这些操作的集群冲击。

希望这两个参考文献能给你足够的信息来规划你的尺度。