ES 2.X 集群故障排查 UnavailableShardsException

RemoteTransportException[[node-250][10.32.34.250:9300][indices:data/write/update]]; nested: UnavailableShardsException[[ivs_document][2] Not enough active copies to meet write consistency of [QUORUM] (have 1, needed 2).

今日业务系统,进行es更新操作,频繁报错 。根据报错信息可知道同一个分片至少需要两个 ,随后查看head,发现有一个节点的分片挂了 。

ES 2.X 集群故障排查 UnavailableShardsException_第1张图片

上图是正在恢复中的截图。

如果分片出现问题,在node-246上方会显示UNSIGNED ,对应的分片记录。

 查询请求

  • http://IP:9200/_cluster/health?pretty -X GET

 此请求的作用是查看集群的健康状态。 (看head界面比较直观,所以此条忽略。。。)

  • http://IP:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason -X GET

此请求的作用是查看分片状态。 (看head界面比较直观,所以此条忽略。。。)

  • http://IP:9200/_cat/recovery?v -X GET

此请求的作用是查看分片的 发现/恢复 状态 (重要)

  • http://IP:9200/_cluster/pending_tasks -XGET 

此请求的作用是查看集群的任务

  • http://IP:9200/_cluster/settings?v -X GET

此请求是查看集群的配置

  • http://IP:9200/索引名称/_close?v -X GET

此请求是关闭索引

  • http://IP:9200/索引名称/_open?v -X GET

此请求是开启索引

开始恢复

  • 执行 /_cluster/settings?v 查看集群的配置,返回发现是默认的配置

ES 2.X 集群故障排查 UnavailableShardsException_第2张图片

  • 修改配置为10线程,数据量为40MB。 线程数设置的太大会出现并发问题。如果数据量比较小,此步骤可以忽律
 http://IP:9200/_cluster/settings -X PUT  --data '{
    "persistent": {
        "cluster.routing.allocation.node_concurrent_recoveries": 10,
        "indices.recovery.max_bytes_per_sec": "40mb"
    }
}'

 

  • 关闭不重要的索引,先恢复重要数据的索引
  • 执行http://IP:9200/_cat/recovery 查看分片恢复的进度ES 2.X 集群故障排查 UnavailableShardsException_第3张图片
  • 最后等head健康状态绿色,再依次操作其他索引

 

 

你可能感兴趣的:(JAVA小记)