热门搜索:和平精英 原神 街篮2 

您的位置:首页 > > 教程攻略 > ai教程 >干货 | Elasticsearch集群黄色原因的终极探秘

干货 | Elasticsearch集群黄色原因的终极探秘

来源:互联网 更新时间:2026-08-23 07:32

1、Elasticsearch集群不同颜色代表什么?

2、Elasticsearch 集群颜色变黄色了要不要紧?

Elasticsearch集群黄色代表:

分配了所有主分片,但至少缺少一个副本。没有数据丢失,因此搜索结果仍将完整。

注意:您的高可用性在某种程度上会受到影响。
如果更多分片消失,您可能会丢失数据。 将黄色视为应该提示调查的警告。

3、Elasticsearch集群健康状态如何排查?

3.1 集群状态查看

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'{ "cluster_name" : "astrung", "status" : "yellow", "timed_out" : false, "number_of_nodes" : 2, "number_of_data_nodes" : 2, "active_primary_shards" : 22, "active_shards" : 22, "relocating_shards" : 0, "initializing_shards" : 2, "unassigned_shards" : 20}

3.2 分片状态查看

curl -XGET 'http://localhost:9200/_cat/shards?v' indexshard prirep statedocsstore ipnode_river 0 pSTARTED 28.1kb 192.168.1.3 One _river 0 rUNASSIGNED megacorp 4 pSTARTED 13.4kb 192.168.1.3 One megacorp 4 rUNASSIGNED megacorp 0 pSTARTED 26.1kb 192.168.1.3 One

3.3 查看unsigned 的原因

GET /_cluster/allocation/explain

3.4 查看集群中不同节点、不同索引的状态

GET _cat/shards?h=index,shard,prirep,state,unassigned.reason

3.5 Head插件直观排查

image.png

4、Elasticsearch集群黄色的原因排查及解决方案

4.1 原因1:Elasticsearch采用默认配置(5分片,1副本),但实际只部署了单节点集群。

由于只有一个节点,因此群集无法放置副本,因此处于黄色状态。
elasticsearch 索引的默认配置如下:

index.number_of_shards:5index.number_of_replicas:1

解决方案如下:
您可以将副本计数降低到0或将第二个节点添加到群集,以便可以将主分片和副本分片安全地放在不同的节点上。
这样做以后,如果您的节点崩溃,群集中的另一个节点将拥有该分片的副本。
(1)设置副本数为0,操作如下:

PUT /cs_indexs/_settings{"number_of_replicas": 0}

进行段合并,提升访问效率,操作如下:
POST /cs_indexs/_forcemerge?max_num_segments=1
(2)不再物理扩展集群,将后续所有的索引自动创建的副本设置为 0。

PUT /_template/index_defaults {"template": "*", "settings": {"number_of_replicas": 0}}

4.2 原因2:Elasticsearch分配分片错误。

还有一种比较常见的情况:给集群节点配置的副本分片数量偏多,超过了当前节点规模能承载的范围,这时候分片就会一直停留在UNASSIGNED状态,对应的错误码是:ALLOCATION_FAILED。
处理思路也很直接:
reroute:通过重新路由命令,可以手动调整集群内各个分片的分配位置。
核心操作如下:

POST /_cluster/reroute{"commands": [{"allocate_replica": {"index": "cs_indexs","shard": 0, # 重新分配的分片(标记黄色的分片)"node": "es-2"}}]}

reroute扩展使用——可以显式地将分片从一个节点移动到另一个节点,可以取消分配,
并且可以将未分配的分片显式分配给特定节点。
举例使用模板如下:

POST /_cluster/reroute{"commands" : [{"move" : {"index" : "test", "shard" : 0,"from_node" : "node1", "to_node" : "node2"}},{"allocate_replica" : {"index" : "test", "shard" : 1,"node" : "node3"}}]}

其中:
1)move代表移动;
2)allocate_replica 代表重新分配;
3)cancel 代表取消;

4.3 磁盘使用过载。

原因3:磁盘使用率超过了设定阈值 85%。
cluster.routing.allocation.disk.watermark.low——这个参数用来控制磁盘使用的低水平线。默认值就是 85%,也就是说,一旦某个节点的磁盘使用率超过 85%,Elasticsearch 就不会再把分片分配到这个节点上。除此之外,它也支持设置为绝对字节值,比如 500mb,用来避免在可用磁盘空间低于指定数值时继续分配分片。
解决方案:
(1)先检查磁盘空间是否已经超过 85%。

[root@localhost home]# df -hFilesystem SizeUsed A vail Use% Mounted on/dev/xvda11014M165M849M17% /boot/dev/mapper/cl-home694G597G 98G86% /home

(2)删除不必要的索引,以释放更多的空间。

DELETEcs_indexs

4.4 磁盘路径权限问题。

原因4:磁盘路径权限问题。安全起见,默认Elasticsearch非root账户和启动。
相关的Elasticsearch数据路径也是非root权限。
解决方案:
去数据存储路径排查权限,或者在data的最外层设置:

chown -R elasticsearch:elasticsearch data

推荐阅读:
干货 | Elasticsearch 集群健康值红色终极解决方案

参考:

image.png

打造Elasticsearch基础、进阶、实战第一公众号!

相关攻略

手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc