ES磁盘分配不均问题

近es集群磁盘空间告警,日志又没地方能够迁移,而后申请了新的服务器,一次性加入8台新的服务器java

新增了32个新的数据节点,至此,咱们的主集群已经到达85个数据节点的规模,整个集群数据已达到PB级别,终于能够跟别人炫耀我是作大数据的了。O(∩_∩)O哈哈~api

 

可是随着集群节点的不断壮大,问题也随之而来,刚开始加入新节点后,发现全部数据分片都会在新节点上,可是过几天后,发现只有少部分在新节点上。服务器

而后,发现新的数据节点磁盘才使用40%,就再也不往这些新节点分配分片了。当时以为很纳闷。大数据

后来翻翻es文档才发现,es自动均衡是按照分片数来分配的,并非按照磁盘空间使用率来分配的。顿时恍然大悟。日志

由于个人集群index是按期关闭的,并且es自动均衡是按照打开的index的分片来自动分配的。因此会致使这种状况blog

 

我后来的解决办法就是打开因此index,让集群自动均衡一下,而后磁盘空间就慢慢均衡了。文档

 

有时候会出现以下图磁盘水平线报警问题会致使副本unassigned io

能够在kibana调整es磁盘水平线class

put _cluster/settings
{
   "transient":{
       "cluster":{
          "routing":{
               "allocation.disk.watermark.high":"95%",
               "allocation.disk.watermark.low":"90%", 
             }
           }
       }  
}

  

es能够根据磁盘使用状况来决定是否继续分配shard。默认设置是开启的,也能够经过api关闭:cluster.routing.allocation.disk.threshold_enabled: false集群

在开启的状况下,有两个重要的设置:

cluster.routing.allocation.disk.watermark.low:控制磁盘最小使用率。默认85%.说明es在磁盘使用率达到85%的时候将会中止分配新的shard。也能够设置为一个绝对数值,好比500M.

cluster.routing.allocation.disk.watermark.high:控制磁盘的最大使用率。默认90%.说明在磁盘使用率达到90%的时候es将会relocate shard去其余的节点。一样也能够设置为一个绝对值。

watermark setting能够经过update-api动态修改,默认es每隔30s会收集各个节点磁盘的使用状况,能够cluster.info.update.interval来设置时间间隔。

相关文章
相关标签/搜索