如何在节点关闭时平衡 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 中工作?
如何将第三个节点添加到 2 节点 Cassandra 集群?