Elasticsearch status yellow问题排查

发布于 2018-11-07  22.58k 次阅读


  • 部署了单节点集群
    由于只有一个节点,而elasticsearch采用默认配置(5分片,1副本),因此群集无法放置副本会处于黄色状态。
    解决方案如下:
    可以将副本计数降低到0或将第二个节点添加到群集,以便可以将主分片和副本分片安全地放在不同的节点上。这样做以后,如果您的节点崩溃,群集中的另一个节点将拥有该分片的副本。

  • elasticsearch分配分片错误
    进一步可能的原因:已经为集群中的节点数过分分配了副本分片的数量,则分片将保持UNASSIGNED状态。其错误码为:ALLOCATION_FAILED。
    解决方案如下:
    reroute:重新路由命令允许手动更改群集中各个分片的分配。

  • 磁盘使用过载
    磁盘使用超过设定百分比85%。
    cluster.routing.allocation.disk.watermark.low——控制磁盘使用的低水位线。 它默认为85%,这意味着Elasticsearch不会将分片分配给使用磁盘超过85%的节点。 它也可以设置为绝对字节值(如500mb),以防止Elasticsearch在小于指定的可用空间量时分配分片。
    解决方案:
    (1)查看磁盘空间是否超过85%。
    (2)删除不必要的索引,以释放更多的空间

  • 磁盘路径权限问题
    磁盘路径权限问题。安全起见,默认Elasticsearch非root账户和启动。相关的Elasticsearch数据路径也是非root权限。
    解决方案:
    去数据存储路径排查权限,或者在data的最外层设置:chown -R elasticsearch:elasticsearch data

elasticsearch 健康状态API

  • 集群状态查看
    curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
  • 分片状态查看
    curl -XGET 'http://localhost:9200/_cat/shards?v'
  • 查看unsigned 的原因
    curl -XGET 'http://localhost:9200//_cluster/allocation/explain'
  • 查看集群中不同节点、不同索引的状态
    curl -XGET 'http://localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason'

参考