【问题标题】:how to rebalance cassandra cluster after adding new node添加新节点后如何重新平衡cassandra集群
【发布时间】:2013-04-26 22:13:52
【问题描述】:

我有一个 3 节点 cassandra 集群,复制因子为 2。节点运行 dsc1.2.3 或 dsc1.2.4。每个节点的 num_token 值为 256,并注释了 initial_token。这个 3 节点集群是完美平衡的,即每个节点拥有大约 30% 的数据。

其中一个节点崩溃了,所以我启动了一个新节点,nodetool 删除了已经崩溃的节点。新节点已添加到集群中,但两个较旧的节点现在拥有大部分数据(47.0% 和 52.3%),而新节点只有 0.7% 的数据。

nodetool状态的输出是

Datacenter: xx-xxxx
===================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address           Load       Tokens  Owns   Host ID                               Rack
UN  10.xxx.xxx.xxx    649.78 MB  256     47.0%  ba3534b3-3d9f-4db7-844d-39a8f98618f1  1c
UN  10.xxx.xxx.xxx    643.11 MB  256     52.3%  562f7c3f-986a-4ba6-bfda-22a10e384960  1a
UN  10.xxx.xxx.xxx    6.84 MB    256     0.7%   5ba6aff7-79d2-4d62-b5b0-c5c67f1e1791  1c

如何平衡这个集群?

【问题讨论】:

  • 能否包含“nodetool status”的输出?
  • 您是否也使用 num_tokens = 256 启动了新节点?
  • 编辑帖子以添加“nodetool status”的输出
  • 你确定没有启动新节点num_tokens = 1,然后设置num_tokens = 256,然后重启?这可以解释你所看到的。
  • 我无法完全解释您所看到的内容,但在第一次启动 Cassandra 之前设置这些属性很重要。我建议您停用新节点,彻底擦除其数据并提交日志目录,然后将其引导回。

标签: cassandra


【解决方案1】:

您没有提到在新节点上运行修复,如果您确实还没有这样做,这可能是您在新节点上缺少数据的原因。

在您运行 nodetool repair 之前,新节点将只保存写入它的新数据或读取修复提取的数据。使用 vnodes,您通常不需要重新平衡,如果我是正确理解 vnodes,但我个人还没有开始使用 vnodes,所以我可能错了。

【讨论】:

    【解决方案2】:

    您的新节点似乎尚未启动。您是否将 auto_bootstrap=true 添加到您的 cassandra.yaml 中?

    如果您不想引导,可以在新节点上运行nodetool repair,然后在另外两个节点上运行nodetool cleanup,直到分配公平。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-08
      • 2021-12-09
      • 2016-08-16
      • 1970-01-01
      • 2023-03-17
      • 2014-05-14
      • 2014-07-04
      • 2014-11-27
      相关资源
      最近更新 更多