我最近向我的 3 节点 4.0.5 集群添加了一个新节点,因为这些节点的磁盘使用率接近 50%。我希望集群能够自我平衡,但这还没有发生(还没有?)。节点相似,所以我每个节点都有 num_tokens=256。我正在使用 Murmur3Partitioner。如何平衡数据?我将很快添加另一个节点。谢谢。
# nodetool status
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN xxx.xxx.xxx.105 2.65 TiB 256 72.9% afd02287-3f88-4c6f-8b27-06f7a8192402 rack3
UN xxx.xxx.xxx.253 2.6 TiB 256 73.9% e1af72be-e5df-4c6b-a124-c7bc48c6602a rack2
UN xxx.xxx.xxx.24 93.82 KiB 256 80.0% c4e8b4a0-f014-45e6-afb4-648aad4f8500 rack4
UN xxx.xxx.xxx.107 2.65 TiB 256 73.2% ab72f017-be96-41d2-9bef-a551dec2c7b5 rack1
# nodetool netstats
Mode: NORMAL
Not sending any streams.
Read Repair Statistics:
Attempted: 0
Mismatch (Blocking): 0
Mismatch (Background): 0
Pool Name Active Pending Completed Dropped
Large messages n/a 0 71754 0
Small messages n/a 0 8398184 14
Gossip messages n/a 0 1303634 0
# nodetool ring
Datacenter: dc1
==========
Address Rack Status State Load Owns Token
9189523899826545641
xxx.xxx.xxx.24 rack4 Up Normal 93.82 KiB 79.95% -9194674091837769168
xxx.xxx.xxx.107 rack1 Up Normal 2.65 TiB 73.25% -9168781258594813088
xxx.xxx.xxx.253 rack2 Up Normal 2.6 TiB 73.92% -9163037340977721917
xxx.xxx.xxx.105 rack3 Up Normal 2.65 TiB 72.88% -9148860739730046229
xxx.xxx.xxx.107 rack1 Up Normal 2.65 TiB 73.25% -9125240034139323535
xxx.xxx.xxx.253 rack2 Up Normal 2.6 TiB 73.92% -9112518853051755414
xxx.xxx.xxx.105 rack3 Up Normal 2.65 TiB 72.88% -9100516173422432134
...
这不是再平衡问题。假设新节点是只有 94KB 的节点,这向我表明添加节点的方式存在错误,因此无法从副本引导数据:
发生这种情况的原因有多种,但主要是针对以下情况:
auto_bootstrap: false
incassandra.yaml
),或者cassandra.yaml
)。在这两种情况下,节点都不会向其他节点请求数据并立即加入环中,因此它没有任何数据。
要强制节点从副本请求数据,请对其运行重建操作:
作为附带问题,我注意到您放置了节点,
rack4
因此您的环现在有 4 个机架。如果您的应用程序键空间配置的复制因子为 3,则数据将不会平均分布在 4 个机架中,节点上的负载将出现偏差。建议机架是复制因子的倍数,因此
RF:3
在 DC 中,您应该部署 3 个或 6 个或 9 个机架,每个机架的节点数相同,以便数据在节点之间均匀分布。如果无法维护 RF 倍数的机架,我们建议您将所有节点部署在一个逻辑机架中,而不管节点的物理或地理机架位置如何。干杯!