前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch UNASSIGNED索引分片问题分析

Elasticsearch UNASSIGNED索引分片问题分析

作者头像
后场技术
发布2020-09-03 15:15:11
3.3K0
发布2020-09-03 15:15:11
举报
文章被收录于专栏:后场技术后场技术后场技术

No.1 问题状态

线上突然有一台服务器宕机重启了,从而导致Elastisearch集群有些索引的分片出现UNASSIGNED的状态,情况如下:

[root@mes1 ~]# curl -s -XGET 'http://127.0.0.1:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason' |grep UNASS
osagent_20180422 6  p UNASSIGNED NODE_LEFT
osagent_20180423 9  p UNASSIGNED NODE_LEFT
osagent_20180424 9  p UNASSIGNED NODE_LEFT

每行都列出了索引的名称,分片号,它是主分片还是副本分片,以及未分配的原因。从字段NODE_LEFT可以看出是因为集群中有节点脱离集群导致的。

No.2 分析问题

当节点离开集群时,主节点会暂时延迟碎片重新分配以避免在重新平衡碎片中不必要地浪费资源,原因是原始节点能够在特定时间段内(默认情况下为一分钟)恢复。

所以这种情况可以查看日志是不是因为碎片分配延迟问题,查看日志如下:

[root@des1 logs]# grep -i --color 'unassigned shards, next check in' ./* -r
./DES.log.2018-04-22:[2017-12-23 14:49:51,211][INFO ][cluster.routing          ] [des1] delaying allocation for [6] unassigned shards, next check in [59.9s]
./DES.log.2018-04-23:[2017-12-25 12:03:52,018][INFO ][cluster.routing          ] [des1] delaying allocation for [9] unassigned shards, next check in [59.9s]
./DES.log.2018-04-24:[2017-12-28 12:04:15,912][INFO ][cluster.routing          ] [des1] delaying allocation for [9] unassigned shards, next check in [59.9s]

所以正式由于分片延迟分配超出1min,导致主分片不可用。

No.3 问题解决

如果你认为未分配的分片的所属索引是你不需要的,那可以删除索引,让集群恢复Green状态。

当一个节点脱离集群后,然后在重新加入后,索引分片恢复的时候中间会进行大量的网络I/O,所以遇到较大的索引的时候,可能有些索引分配恢复超出1min,所以我们可以设置延时分配时间参数index.unassigned.node_left.delayed_timeout 来加大延时分配时间,设置如下:

PUT /_all/_settings
{
 "settings": {
   "index.unassigned.node_left.delayed_timeout": "3m"
 }
}

上述设置将分片重新分配延迟到3分钟之后,这样就可以等节点完全起来。

临时解决,让集群快速恢复的话,如果你不在意不能分配分片数据的话,设置如下:

curl -XPOST 'localhost:9200/_cluster/reroute' -d
'{ "commands" :
     [ { "allocate" :
         { "index" : "osagent", "shard" : 6, "node": "<NODE_ID>", "allow_primary": "true" }
     }]
}'

强制分配主分片后你将得到的是一个“空的”分片。

节点id你可以通过如下API获取:

curl 'localhost:9200/_nodes/process?pretty'
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后场技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • No.1 问题状态
  • No.2 分析问题
  • No.3 问题解决
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档