题记
Elasticsearch当清理缓存( echo 3 > /proc/sys/vm/drop_caches )的时候,出现
如下集群健康值:red,红色预警状态,同时部分分片都成为灰色。
查看Elasticsearch启动日志会发现如下:
集群服务超时连接的情况。
bserver: timeout notification from cluster service. timeout setting [1m], time since start [1m]
- 1
该问题排查耗时很长,问题已经解决。
特将问题排查及解决方案详尽的整理出来。
1、集群状态解读
head插件会以不同的颜色显示。
1)、绿色——最健康的状态,代表所有的主分片和副本分片都可用;
2)、黄色——所有的主分片可用,但是部分副本分片不可用;
3)、红色——部分主分片不可用。(此时执行查询部分数据仍然可以查到,遇到这种情况,还是赶快解决比较好。)
参考官网:http://t.cn/RltLEpN(部分中文集群健康状态博文资料翻译的不够精确,以官网为准)
如果集群状态为红色, Head插件显示:集群健康值red 。则说明:至少一个主分片分配失败。
这将导致一些数据以及索引的某些部分不再可用。
尽管如此, ElasticSearch还是允许我们执行查询,至于是通知用户查询结果可能不完整还是挂起查询,则由应用构建者来决定。
2、什么是unassigned 分片?
一句话解释:未分配的分片。
启动ES的时候,通过Head插件不停刷新,你会发现集群分片会呈现紫色、灰色、最终绿色的状态。
3、为什么会出现 unassigned 分片?
如果不能分配分片,例如,您已经为集群中的节点数过分分配了副本分片的数量,则分片将保持UNASSIGNED状态。
其错误码为:ALLOCATION_FAILED。
你可以通过如下指令,查看集群中不同节点、不同索引的状态。
GET _cat/shards?h=index,shard,prirep,state,unassigned.reason
- 1
4、出现unassigned 分片后的症状?
head插件查看会:Elasticsearch启动N长时候后,某一个或几个分片仍持续为灰色。
5、unassigned 分片问题可能的原因?
1)INDEX_CREATED:由于创建索引的API导致未分配。2)CLUSTER_RECOVERED :由于完全集群恢复导致未分配。3)INDEX_REOPENED :由于打开open或关闭close一个索引导致未分配。4)DANGLING_INDEX_IMPORTED :由于导入dangling索引的结果导致未分配。