• Elasticsearch集群某一节点分片数为0


    Elasticsearch集群某节点索引分片为0问题

    一、问题描述

    接手公司一个Elasticsearch集群,平时使用没啥问题,今天查看自己配置的索引生命周期是否正确,通过kibana发现某一节点的分片数为0,如图

    从图中可以看出最后一个节点分片数为0,也就是集群中有一个节点一直没有写入数据;
    所以,我打开了elasticsearch-head直观的看一下,如图:

    二、问题分析

    其实在图一中,就能看出问题。问题节点的磁盘使用率达到了96%,根据Elasticsearch官网的说明:

    当磁盘使用率达到95%,该节点将被设置为只读节点,也就是无法写入数据,因此也就不会有ES的分片分配到该节点上。
    查看磁盘使用情况:

    • elasticsearch.yml查看数据存放磁盘路径:

    path.data: /elk/elasticsearch

    • 查看所在目录磁盘使用情况:
      • 看到/vdata磁盘只用97G的空间;
      • /vdata/promdata 占用了96G,也就是其他应用的数据存储目录和es指定到同一目录,并且占用了大量的磁盘空间,因此留给/vdata/elasticsearch的空闲空间就很小了,此处就是该节点为什么没有分片的原因;

    三、解决办法

    此处的解决办法可能存在一下几种
    (1)修改elasticsearch集群参数"cluster.routing.allocation.disk.watermark.flood_stag"95%的上限比例;
    (2) 扩展/vdata的大小;
    (3) 将该节点的数据存储目录配置到其他空闲的目录
    因为自己发现在该节点没有任何数据,所以选择了方案三,将数据目录修改到其他磁盘目录。

    四、验证

    修改完该节点的磁盘目录,重启服务,发现其他节点将分片重新迁移到该节点,分片迁移后分片和副本均匀的分配到三个节点了,如图:

    五、总结

    (1)在部署应用的时候,要熟悉知道每个应用的数据大小;
    (2)不同应用的数据存储目录分开指定,避免不同应用相互影响,并且方便后续针对应用做磁盘空间的扩容。

  • 相关阅读:
    Alpha 冲刺 (3/10)
    Alpha 冲刺 (2/10)
    Alpha 冲刺 (1/10)
    福大软工 · 第七次作业
    福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)
    福大软工1816 · 第六次作业
    福大软工1816 · 第五次作业
    福大软工1816
    福大软工1816 · 第三次作业
    【Alpha版本】冲刺-Day6
  • 原文地址:https://www.cnblogs.com/parryyang/p/14550615.html
Copyright © 2020-2023  润新知