记一次ElasticSearch重启之后shard未分配问题的解决

环境

  • ElasticSearch6.3.2,三节点集群
  • Ubuntu16.04
  • 一个名为user的索引,索引配置为:3 primary shard,每个primary shard 2个replica

正常情况下,各个分片的分布如下:

可见,user 索引的三个分片平均分布在各台机器上,可以完全容忍一台机器宕机,而不丢失任何数据。

由于一次故障(修改了一个分词插件,但是这个插件未能正确加载),导致 node-151 节点宕机了。修复问题后,执行./bin/elasticsearch -d正常启动,但是发现集群中存在三个未分配的shards。本以为这些未分配的shards在node-151正常启动后能够自动分配,但是却发现它一直没有自动分配。

解决方法

首先:GET user/_recovery?active_only=true 发现集群并没有进行副本恢复。

执行GET _cluster/allocation/explain?pretty发现:

"explanation": "shard has exceeded the maximum number of retries [5] on failed allocation attempts - manually call [/_cluster/reroute?retry_failed=true] to retry, [unassigned_info[[reason=ALLOCATION_FAILED], at[2018-09-29T08:02:03.794Z], failed_attempts[5], delayed=false, details[failed shard on node [mKkj4112T7aLeC2oNouOrg]: failed to update mapping for index, failure MapperParsingException[Failed to parse mapping [profile]: analyzer [hanlp_standard] not found for field [details]]; nested: MapperParsingException[analyzer [hanlp_standard] not found for field [details]]; ]

原来是分词插件错误导致。再仔细看日志,有一行:

allocation_status: "no_attempt"

原因是:shard 自动分配 已经达到最大重试次数5次,仍然失败了,所以导致"shard的分配状态已经是:no_attempt"。这时在Kibana Dev Tools,执行命令:POST /_cluster/reroute?retry_failed=true即可。由index.allocation.max_retries参数来控制最大重试次数。

The cluster will attempt to allocate a shard a maximum of index.allocation.max_retries times in a row (defaults to 5), before giving up and leaving the shard unallocated.

当执行reroute命令对分片重新路由后,ElasticSearch会自动进行负载均衡,负载均衡参数cluster.routing.rebalance.enable默认为true。

It is important to note that after processing any reroute commands Elasticsearch will perform rebalancing as normal (respecting the values of settings such as cluster.routing.rebalance.enable) in order to remain in a balanced state.

过一段时间后:执行 GET /_cat/shards?index=user 可查看 user 索引中所有的分片分配情况已经正常了。

user 1 p STARTED 13610428 2.6gb node-248
user 1 r STARTED 13610428 2.5gb node-151
user 1 r STARTED 13610428 2.8gb node-140
user 2 p STARTED 13606674 2.8gb node-248
user 2 r STARTED 13606674 2.7gb node-151
user 2 r STARTED 13606684 3.8gb node-140
user 0 p STARTED 13603429 2.6gb node-248
user 0 r STARTED 13603429 2.6gb node-151
user 0 r STARTED 13603429 2.7gb node-140

第一列:索引名称;第二列标识 shard 是primary(p) 还是 replica(r);第三列 shard的状态;第四列:该shard上的文档数量;最后一列 节点名称。

总结

一般来说,ElasticSearch会自动分配 那些 unassigned shards,当发现某些shards长期未分配时,首先看下是否是因为:为索引指定了过多的primary shard 和 replica 数量,然后集群中机器数量又不够。另一个原因就是本文中提到的:由于故障,shard自动分配达到了最大重试次数了,这时执行 reroute 就可以了。

参考资料

/_cat/shards 命令:https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-shards.html

2018.9.30
原文:https://www.cnblogs.com/hapjin/p/9726469.html

转载于:https://www.cnblogs.com/hapjin/p/9726469.html

记一次ElasticSearch重启之后shard未分配问题的解决相关推荐

  1. ElasticSearch重启之后shard未分配问题的解决

    环境: Ubuntu16.04 elasticsearch 6.2.3 3个master节点,10个data节点 每个分片有一个副本 故障: 将一个数据节点的elasticsearch换成docker ...

  2. ElasticSearch重启失败的解决方案

    原文网址:ElasticSearch重启失败的解决方案_IT利刃出鞘的博客-CSDN博客 简介 本文介绍ES重启失败的解决方法. 问题描述 对ES集群进行了重启,集群重启几分钟后,部分实例开始逐渐下线 ...

  3. 计算机dns没有响应如何解决方案,dns未响应如何解决 dns未响应解决方法【图文】...

    电脑对我们来说可是至关重要的,工作离不开,学习离不开,就连我们闲暇时候也是需要他来帮助我们娱乐消遣一会的,那么如此重要的物件我们可是要好好的使用哦,那么朋友们都知道,我们的电脑使用的时候久了以后就会出 ...

  4. win8音频服务器未响应,大神为你详解win8系统右键点击文件提示“未响应”的解决教程...

    近日有使用电脑的用户跟小编反映说win8系统右键点击文件提示"未响应"的问题,据小编了解,不是所有的用户都会解决win8系统右键点击文件提示"未响应"的问题,针 ...

  5. win10 mysql5.5无响应_Win10安装mysql5.5安装最后一步停住卡死未响应的解决方法

    在win10系统中安装了Mysql5.5,不过在配置到最后一步的时候,就会出现停止卡死未响应的现象,尝试修改了Mysql端口号和修改了Mysql服务名之后,都不能解决该问题,还使用管理员身份启动Mys ...

  6. dnf服务器未响应win7,win7dnf未响应怎么解决|分享win7系统dnf总是未响应的解决方法...

    收到反馈win7dnf未响应怎么解决|分享win7系统dnf总是未响应的解决方法,相信dnf的忠实用户们一定会遇到dnf未响应的问题吧,有些小伙伴们还是经常性的会遇到这种问题,就来求助小编给出解决方法 ...

  7. wdns服务器未响应,Win7系统​网络诊断提示DNS服务器未响应的解决方法

    Win7系统​网络诊断提示DNS服务器未响应的解决方法 昨天小编的朋友Win7系统​网络诊断提示DNS服务器未响应的解决方法说,她win7系统电脑在开机的过程中,怎么都连接不上网络了,并且出现dns服 ...

  8. Ubuntu连接以太网时显示“设备未托管”的解决办法

    Ubuntu连接以太网时显示"设备未托管"的解决办法 故障分析: 电脑之前可能设置过PPOE(有线宽带虚拟拨号),常见为连接校园拨号宽带. 解决办法: 第一步:打开终端 第二步:切 ...

  9. 电脑音频服务未运行怎么解决_电脑故障维修技巧教程:新手必看的修电脑技巧!...

    日常生活工作中,我们的电脑总会出现各种各样的问题,如果掌握了一定的通用修电脑技巧,除了可以解决问题,说不定还能得到帮女神修电脑的机会,俗话说的好,电脑修的好,对象少不了!电脑故障判断一般本着先&quo ...

最新文章

  1. docker部署项目 入门版
  2. Nginx学习之六:Nginx配置操作导航
  3. 消息称高通可供货华为:麒麟处理器真将绝版?
  4. 计算机中硬盘驱动器安装在哪里,解决方法:在笔记本电脑中安装硬盘驱动器的步骤如何在笔记本电脑中安装硬盘驱动器...
  5. MIKE21学习总结(一)
  6. C#操作Access数据库(查询,更新,插入)
  7. python 爬取 全网代理 IP 网站 + 破解端口加密混淆
  8. 如何将已有项目导入SVN
  9. 计算机配置里面没有网络选项,解决win10网络设置中没有以太网的方法
  10. 网站站内seo优化简介
  11. React高频面试题梳理,看看面试怎么答?(上)
  12. ctab提取dna流程图_CTAB法提取植物DNA原理以及步骤
  13. 《八股文》20道Redis面试题
  14. 去除中文版WinRAR的弹窗广告
  15. 秋招面经汇总(算法工程师,计算机视觉工程师,深度学习工程师,机器学习工程师)
  16. 12:C语言之小球自由落体运动
  17. 微服务化与DDD—分层架构、洋葱架构、六边形架构 架构设计
  18. 黑马就业班(01.JavaSE Java语言基础-11.Java基础加强)——基础加强:Junit单元测试、反射、注解
  19. Simlink数字电路仿真教程(1)——常用电路仿真元器件介绍
  20. SpringBootc出现Parameter 0 of method modifyRequestBodyGatewayFilterFactory in org.springframework.clo

热门文章

  1. nodejs mac启动相关命令
  2. Android Service完全解析
  3. Mr.J--C语言经典编程100例
  4. day056-58 django多表增加和查询基于对象和基于双下划线的多表查询聚合 分组查询 自定义标签过滤器 外部调用django环境 事务和锁...
  5. 【转】java编程思想第20章的注解例子用到的com.sun.mirror的jar包
  6. Android Weekly Notes Issue #230
  7. String Algorithm
  8. MTK 2G芯片使用联通卡在深圳无法拨打112原因
  9. POJ 1149(最大流)
  10. stm32 vscode 编译_vs code+gcc stm32编译环境搭建