Elasticsearch unassigned_shards 恢复

作者: root007 分类: EFK,未分类 发布时间: 2019-08-17 13:16


查看集群健康状态

 curl -XGET  http://192.168.0.xxx:9200/_cluster/health\?pretty
 { 
   "cluster_name" : "my-elk",
   "status" : "red",
   "timed_out" : false,
   "number_of_nodes" : 2,
   "number_of_data_nodes" : 2,
   "active_primary_shards" : 8965,
   "active_shards" : 17905,
   "relocating_shards" : 0,
   "initializing_shards" : 4,
   "unassigned_shards" : 33,
   "delayed_unassigned_shards" : 0,
   "number_of_pending_tasks" : 10,  #10个分片没有节点
   "number_of_in_flight_fetch" : 0,
   "task_max_waiting_in_queue_millis" : 21371,
   "active_shards_percent_as_number" : 99.79377995764129
 }
 查看所有分片的状态curl -XGET  http://xxxx:9200/_cat/shards

只显示未分配的节点:

 curl -XGET  http://xxxx:9200/_cat/shards | grep UNASSIGNED
 curl -XGET "http://xxxx:9200/_cat/shards?h=index,shard,prirep,state,unassigned.*&pretty"|grep UNASSIGNED

查看节点为master的节点唯一标识:

curl -XGET  http://xxxx:9200/_nodes/process?pretty

修复分片:

curl -H "Content-Type: application/json"  -XPOST 'http://xxxx:9200/_cluster/reroute' -d '{
         "commands" : [ {
               "allocate" : {
                   "index" : "logstash-xxxx-nginx-access-2019.08.14",  #index名称
                   "shard" : 3,    #分片
                   "node" : "_r-lsF2hQ9GX7zr5CDfs2Q",  # nodeid
                   "allow_primary" : true
               }
             }
         ]
     }'

查看索引的分片情况:

-XGET http://xxxx:19200/logstash-sxs-nginx-access-2019.08.14/_search_shards

Elasticsearch通过 explain API 查看分片分配原因:

curl -XGET  http://xxxx:9200/_cluster/allocation/explain?pretty
{
   "index" : "logstash-nginx-access-2019.08.14",
   "shard" : 3,
   "primary" : true,
   "current_state" : "unassigned",
   "unassigned_info" : {
     "reason" : "CLUSTER_RECOVERED",
     "at" : "2019-08-14T19:00:37.791Z",
     "last_allocation_status" : "no_valid_shard_copy"
   },
   "can_allocate" : "no_valid_shard_copy",
   "allocate_explanation" : "cannot allocate because all found copies of the shard are either stale or corrupt",
   "node_allocation_decisions" : [
     {
       "node_id" : "LzmnMuNE1212SV6WQGirXwmiWQ",
       "node_name" : "elk-01",
       "transport_address" : "192.168.0.xx:9300",
       "node_decision" : "no",
       "store" : {
         "found" : false
       }
     },
     {
       "node_id" : "_r-lsF2hQ9GX7zr5CDfs2Q",
       "node_name" : "elk-02",
       "transport_address" : "192.168.0.xx:9300",
       "node_decision" : "no",
       "store" : {
         "in_sync" : false,
         "allocation_id" : "i76umJ50S_Wh3OGS121Xe_5TQ"
       }
     }
   ]
 }

查看特定为分配原因:

 GET /_cluster/allocation/explain
 {
   "index": "indextest",
   "shard": 0,
   "primary": true
 }

如果eplica shards有问题,将出问题的index的副本为0

 PUT /my_index/_settings
 {
     "indextest" : {
         "number_of_replicas" : 0
     }
}

{
“acknowledged”: true
}

接下来再恢复回去:

PUT /my_index/_settings
 {
     "index" : {
         "number_of_replicas" : 1
     }
}

{
“acknowledged”: true
}

  • node——节点,服务器运行的一个es实例,一般情况下一个es集群会有多个node。
  • shard——分片,一个shard就是一个Lucene实例,是一个完整的搜索引擎。一个索引可以只包含一个shard,只是一般情况下会用多个分片,可以拆分索引到不同的node上,分担索引压力。 每个索引的主分片数,默认值是 5 。
  • replicas——副本数量,e.g.如果索引indextest设置shard=2 replicas=2则表示其分片总数=2*(2+1)=6,每条数据都会有3条相同记录。
    这个配置在索引创建后不能修改。 每个主分片的副本数,默认值是 1 。对于活动的索引库,这个配置可以随时修改。

es集群健康状态

  • green 最健康得状态,说明所有的分片包括备份都可用。
  • yellow 主分片(primary)可用,但是副本分片(replicas)不可用(或者是没有副本)。
  • red 部分的分片可用,表明分片有一部分损坏,有的分片所有主副分片损坏/丢失的情况。此时执行查询部分数据仍然可以查到。

例如,我们可以创建只有 一个主分片,没有副本的小索引:

   PUT /my_index
         {
             "settings": {
             "number_of_shards" :   6,
             "number_of_replicas" : 1
             }
         }


查看es集群的执行任务列表

curl -X GET http://localhost:9200/_cat/pending_tasks


发表评论

电子邮件地址不会被公开。 必填项已用*标注