Elasticsearch 加新节点反而更卡?💡3步搞定分片迁移,负载均衡

最近给Elasticsearch(简称ES)集群加了新节点,本想分担压力,结果反而更糟——新创建的分片全往新节点挤,老节点还堆着一大堆历史分片,机器负载差得离谱,查数据越来越慢,属实让人头大!

Elasticsearch 加新节点反而更卡?💡3步搞定分片迁移,负载均衡

实则这不是ES“不听话”,而是默认配置没跟上场景。今天就用大白话讲清楚:为啥会这样,以及怎么快速让分片“挪窝”,让所有节点一起干活⚖️。

先搞懂:为啥新节点成了“香饽饽”?

ES有个“默认习惯”:更愿意把新分片分配到“空闲”的节点上。

新节点刚加进来时,磁盘空、CPU闲(妥妥的“空房子”),ES一看“这节点有空”,就把所有新创建的分片全塞过去;

但老节点上的历史分片(列如之前建的100分片索引),ES默认不会主动挪——结果就是新节点被新分片“塞满”,老节点扛着历史分片“喘不过气”,两边都“累得慌”,负载彻底失衡!

3步解决:快速让分片均衡,新老节点一起扛

不用写复杂代码,跟着调配置、看状态就行,小白也能操作!

第一步:先开“自动均衡”开关(关键!)

ES默认会自动均衡分片,但有时候可能被关掉了,先确认并打开它。

打开ES的DevTools(或用curl命令),复制粘贴下面的代码,点执行✅:

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.rebalance.enable": "all" 
  }
}

允许所有分片(新+老)自动挪位

“transient”表明“临时生效”,重启集群后会恢复默认,不用担心改坏配置。

执行后,ES就会开始“思考”:哪些分片该挪到新节点,哪些该从新节点挪去老节点。

第二步:调快“迁移速度”,别等得着急⚡

默认情况下,ES一次只搬2个分片,速度慢得像“蜗牛爬”。我们可以让它“多搬几箱”,但别贪多(不然会占满网络/CPU)。

继续在DevTools里执行:

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.cluster_concurrent_rebalance": 5,
    "cluster.routing.allocation.node_concurrent_recoveries": 5 
  }
}


cluster_concurrent_rebalance 同时搬5个分片(提议5-10之间)


node_concurrent_recoveries 每个节点同时接收5个分片

举个例子:之前1小时才搬10个分片,调完后可能20分钟就能搬完,速度直接翻倍!

第三步:看进度+手动补位(适合小问题)

调完配置后,得知道分片到底挪没挪。用下面的命令看分片分布:

GET /_cat/shards?v

结果里会显示“哪个分片在哪个节点上”,列如看到老节点还有大量历史分片没动,或者新节点的分片还太多,可以手动“挪一下”(适合个别分片卡住的情况):

POST /_cluster/reroute
{
  "commands": [
    {
      "move": {
        "index": "你的索引名",  // 列如之前建的100分片索引
        "shard": 0,             // 要挪的分片编号(从0开始)
        "from_node": "老节点名",// 目前在的节点
        "to_node": "新节点名"  // 要挪去的节点
      }
    }
  ]
}

注意:手动挪只适合“个别分片”,几十上百个分片还是靠自动均衡,不然会累死!

避坑提醒:这3件事别做!

  1. 别在业务高峰期操作:分片迁移要占网络和磁盘,白天业务忙的时候挪,可能会让查询变慢;提议凌晨或低峰期搞。
  2. 别把“并发数”调太高:列如一下子调到20,新节点可能扛不住同时接收太多分片,反而会崩;5-10是比较安全的范围。
  3. 不看磁盘就挪:挪分片前,先确认目标节点有足够空间(列如新节点至少剩30%磁盘),不然分片挪过去会失败,白忙活一场。

总结:记住“先自动,后手动”

新增节点后负载不均,核心是“让历史分片动起来,新分片别扎堆”。优先用前两步调自动均衡,大部分情况能解决✅;如果还有个别分片卡住,再用手动补位。

按这个方法操作,一般半小时到1小时,就能看到所有节点的分片分布均匀了,查询速度也会明显变快,再也不用看着新节点“忙死”、老节点“闲死”啦!

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容