扩容后集群负载均衡失败

【详述】集群在2.2.11期间做了扩容,由三台4路物理机,利用numa,每台物理当做三个节点,1FE+2BE,一共3FE、6BE,扩容到1FE+3BE,一共3FE、9BE,也就说物理机没变,每台物理机上各扩容了一个be节点,然后负载均衡没有起作用,旧的6个BE磁盘占用一直在85%以上,新的磁盘占用一直在10%以下,最近升级了2.5.4,集群负载也没有任何变化。
【背景】扩容了BE节点
【业务影响】磁盘负载不均衡
【StarRocks版本】2.5.4
【集群规模】三台4路物理机,利用numa,每台物理当做四个节点,1FE+3BE,一共3FE、9BE
【机器信息】48C 512G 4T
8
【联系方式】社区群1-数据小黑
集群的调度状态:


max_scheduling_tablets = 2000
max_balancing_tablets = 2000
缺什么资料我再补充

麻烦给下当前 show backends 的结果,还有扩容之后那天的 fe.log 压缩之后上传一下

扩容之后那天的日志没了,过去一个多月了下面是backends的结果


那你给一下今天的fe.log吧,我看下 balancer 的行为

还有,你的表是不是有很多是 3 副本的?

不用给完整的日志, cat fe.log | grep “TabletScheduler|TabletChecker|Balancer” > fe_tmp.log 就行

我们所有的表都是三副本的

fe_tmp.log (7.6 MB)

如果是 3 副本的话,这个原因就清晰了,这个可以理解是现在 balancer 的一个 bad case,现在 balance 的时候,从 src 迁移一个table t副本走的时候,会校验 dest backend 所在的主机上是不是已经存在了这个 tablet 的副本,如果存在则不能选择这个 dest backend,因为你是三副本,而且实际上只有 3 台物理机,所以这个条件一定满足,所以实际就是选不出来 dest backend,导致无法均衡。所以新增的 be 上只会有新建的表的 tablet。

这个问题我们后面会发小版本进行优化,目前可以给你一个 workaround 的方法:
你再增加 2 台物理机,be 的部署形式可以和你现在机器一致,然后把这些新的 be 加到你的 cluster 里面去,这样会触发均衡,等均衡完了,如果想回收机器资源,可以把原来的机器中的两台 decommission 掉。

你好,非常感谢,我们目前没有硬件投入了,我们打算采取晚上删掉大表,然后重新导入的方式暂时缓解这个问题,再次感谢帮助分析问题。

另外认不认识外部表的专家,我们这还有个BUG。。。