解决es集群Yellow与Red的问题

1. 集群健康度


分片健康,在集群中节点的状态有三种:绿色、黄色、红色

红色:至少有一个主分片没有分配,表示集群无法正常工作。

黄色:表示节点的运行状态为警告状态,所有的主分片目前都可以直接运行,但是至少有一个副本分片是不能正常工作的。

绿色:节点运行状态为健康状态。所有的主分片、副本分片都可以正常工作。

索引健康:最差的分片的状态

集群健康:最差的索引的状态

2. Health相关的API


解释    API
集群的状态(检查节点数量)    GET _cluster/health
所有索引的健康状态(查看有问题的索引)    GET _cluster/health?level=indices
单个索引的健康状态(查看具体的索引)    GET _cluster/health/my_index
分片级的索引    GET _cluster/health?level=shards
返回第一个未分配 Shard 的原因    GET _cluster/allocation/explain
 

3. 分片没有被分配的一些原因


INDEX_CREATE:创建索引失败,在索引的全部分片分配完成之前,会有短暂的 Red,不一定代表有问题

CLUSTER_RECOVER:集群重启阶段,会有这个问题

INDEX_REOPEN:Open 一个之前 Close 的索引

DANGLING_INDEX_IMPORTED:一个节点离开集群期间,有索引被删除,这个节点重新返回时,会导致 Dangling 的问题

4. 常见问题与解决办法

集群变红,需要检查是否有节点离线,如果有,通常通过重启离线的节点就可以解决问题

由于配置导致的问题,需要修复相关的配置(例如错误的 box_type,错误的副本数)

因为磁盘空间限制,分片规则(Shard Filtering)引发的,需要调整规则或者增加节点

对于节点返回集群,导致 danging 变红,可直接删除 dangling 索引

5. 集群 Red & Yellow 问题的总结


Red & Yellow 是集群运维中常见的问题

除了集群故障,一些创建,增加副本等操作,都会导致集群短暂的 Red 和 Yellow,所以监控和报警时需要设置一定的延时

通过检查节点数,使用 ES 提供的相关 API,找到真正的原因

可以指定 Move 或者 Reallocate 分片
————————————————
版权声明:本文为CSDN博主「临江仙我亦是行人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_56752399/article/details/120992261

猜你喜欢

转载自blog.csdn.net/qq_32907195/article/details/131979554