• ES磁盘分配不均问题


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

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

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

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

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

    因为我的集群index是定期关闭的,而且es自动均衡是按照打开的index的分片来自动分配的。所以会导致这种情况

    我后来的解决办法就是打开所以index,让集群自动均衡一下,然后磁盘空间就慢慢均衡了。

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

    可以在kibana调整es磁盘水平线

    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来设置时间间隔。

  • 相关阅读:
    ASP.NET MVC之从控制器传递数据到视图四种方式
    MVC发布到IIS,出现HTTP 错误 404.0
    超详细MySQL安装及基本使用教程
    node.js中使用node-xlsx插件生成excel数据并导出
    jquery给一组radio赋值和取值
    node.js生成excel下载各种方法分析对比--附excel-export方法
    JS中substr和substring的区别
    jq触发a标签的href跳转
    jq中跳出方法、for循环和each循环
    IIS应用程序池频繁崩溃的问题
  • 原文地址:https://www.cnblogs.com/xionggeclub/p/8508163.html
Copyright © 2020-2023  润新知