如何在节点关闭时平衡 cassandra 集群

Posted

技术标签:

【中文标题】如何在节点关闭时平衡 cassandra 集群【英文标题】:How to balance the cassandra cluster while node is DOWN 【发布时间】:2014-11-27 20:36:10 【问题描述】:

我们的集群是不平衡的,大部分数据都在一个节点上。现在大部分数据的节点因为空间不足而死了。

如何以就绪模式启动节点并重新平衡集群?

我们正在使用 vnode 和 DSE 4.0.3

【问题讨论】:

你在死节点上看到了什么错误?空间不足会导致它死亡怎么办? 你的复制因子和集群大小是多少?你知道最初为什么集群会变得不平衡吗? 【参考方案1】:

Cassandra 没有明确的只读模式。因此,您可能需要临时向节点添加一些磁盘空间以使其联机,然后重新平衡集群。

如果这不是一个选项,那么删除快照有时可以为您提供足够的空间来开始工作。如果之前没有运行过 nodetool cleanup,运行它也会有所帮助。

如果您使用的是 vnodes - 那么一个常见的问题是您是否已将旧式令牌节点转换为 vnodes。该节点将仅抓取映射到其原始范围的偶数范围的令牌。如果集群中的其他节点随机生成令牌,则会导致它们之间的巨大不平衡。停用节点然后重新添加它应该可以解决问题。

nodetool ring 的输出会告诉我们是否发生了这种情况。实际上,在任何情况下,机会都是解压和重新添加将是解决方案。

【讨论】:

nodetool drain 将停止接受写入并刷新所有列族。节点仍将保持运行状态。【参考方案2】:

使用nodetool drain 停止接收某个节点上的写入。

【讨论】:

以上是关于如何在节点关闭时平衡 cassandra 集群的主要内容,如果未能解决你的问题,请参考以下文章

当表在集群中的多个节点之间复制时,COPY 如何在 cassandra 中工作?

使用哪个 Cassandra 节点?

如何将第三个节点添加到 2 节点 Cassandra 集群?

从 c#datastax 驱动程序关闭 cassandra 集群时出错

将节点添加到 Cassandra 集群

如何加快 cassandra 集群中的节点加入过程