缩小Cassandra集群的最佳方法

mgu*_*mon 7 cassandra

所以有关于如何扩展Cassandra的相当数量的文档,但这是一个很好的资源,如何"卸载"Cassandra并从群集中删除节点?是否像关闭节点一样简单,让群集再次同步,然后重复?

原因是一个网站预计会出现高峰值的流量,几天内会从每日几千次点击上升到数十万次.该网站将提前"加速",启动Web服务器的多个实例,Cassandra等.在请求流量消退后,目标是关闭不再使用的实例,而不是支付服务器费用那只是坐着.

Wil*_*ire 7

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

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

nodetool drain
Run Code Online (Sandbox Code Playgroud)

...在删除的节点上,停止接受写入和刷新memtables,然后:

nodetool decommission
Run Code Online (Sandbox Code Playgroud)

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

nodetool removetoken
Run Code Online (Sandbox Code Playgroud)

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

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