首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
技术百科首页 >Elasticsearch Service >ES集群健康状态异常(RED、YELLOW)如何解决?

ES集群健康状态异常(RED、YELLOW)如何解决?

词条归属:Elasticsearch Service

ES集群状态在什么情况下发生 RED 和 YELLOW:

  • 当ES集群存在未分配的主索引分片,集群状态会为 RED。该情况影响索引读写,需要重点关注。
  • 当ES集群所有主索引分片都是已分配的,但是存在未分配的副本索引分片,集群状态则会 YELLOW。该情况不影响索引读写,一般会自动恢复。

查看集群状态

使用 kibana 开发工具,查看集群状态:

代码语言:javascript
代码运行次数:0
运行
复制
GET /_cluster/health

这里可以看到,当前集群状态为 red,有9个未分配的分片。

ES 健康接口返回内容官方解释:

指标

含义

cluster_name

集群的名称

status

集群的运行状况,基于其主要和副本分片的状态。状态为:– green:所有分片均已分配– yellow:所有主分片均已分配,但未分配一个或多个副本分片。如果群集中的某个节点发生故障,则在修复该节点之前,某些数据可能不可用– red:未分配一个或多个主分片,因此某些数据不可用。在集群启动期间,这可能会短暂发生,因为已分配了主要分片

timed_out

如果 false 响应在 timeout 参数指定的时间段内返回(30s默认情况下)

number_of_nodes

集群中的节点数

number_of_data_nodes

作为专用数据节点的节点数

active_primary_shards

活动主分区的数量

active_shards

活动主分区和副本分区的总数

relocating_shards

正在重定位的分片的数量

initializing_shards

正在初始化的分片数

unassigned_shards

未分配的分片数

delayed_unassigned_shards

其分配因超时设置而延迟的分片数

number_of_pending_tasks

尚未执行的集群级别更改的数量

number_of_in_flight_fetch

未完成的访存数量

task_max_waiting_in_queue_millis

自最早的初始化任务等待执行以来的时间(以毫秒为单位)

active_shards_percent_as_number

集群中活动碎片的比率,以百分比表示

问题分析

当集群状态异常时,需要重点关注 unassigned_shards 没有正常分配的分片,这里举例说明其中一种场景。

找到异常索引

查看索引情况,并根据返回找到状态异常的索引。

代码语言:javascript
代码运行次数:0
运行
复制
GET /_cat/indices

查看详细的异常信息

代码语言:javascript
代码运行次数:0
运行
复制
GET /_cluster/allocation/explain

这里通过异常信息可以看出:

  1. 主分片当前处于未分配状态(current_state),发生这个问题的原因是因为分配了该分片的节点已从集群中离开(unassigned_info.reason)。
  2. 上述问题发生后,分片无法自动分配分片的原因是集群中没有该分片的可用副本(can_allocate)。
  3. 同时也给出了更详细的信息(allocate_explanation)。

这种情况发生的原因是因为集群有节点下线,导致主分片已没有任何可用的分片数据,当前唯一能做的事就是等待节点恢复并重新加入集群。

注意: 某些极端场景,例如单副本集群的分片发生了损坏,或是文件系统故障导致该节点被永久移除,而此时只能接受数据丢失的事实,并通过 reroute commends 来重新分配空的主分片。为了尽量避免这种极端的场景,建议合理设计索引分片,不要给索引设置单副本。这里所谓的单副本,指的是索引有主分片,但没有副本分片,或称之为0副本。合理设计索引分片,可以将集群的总分片控制在一个很健康的规模,可以在保证高可用的情况下更加充分地利用集群分布式的特性,提高集群整体性能。

分片未分配(unassigned_info.reason)的所有可能

可通过如下分析方式初步判断集群产生未分配分片的原因,一般都可以在 allocation explain api 中得到想要的答案。

说明: 集群状态如果长时间未自动恢复,或是无法解决,则需要通过 售后支持 联系腾讯云技术支持。

reason

原因

INDEX_CREATED

索引创建,由于 API 创建索引而未分配的

CLUSTER_RECOVERED

集群恢复,由于整个集群恢复而未分配

INDEX_REOPENED

索引重新打开

DANGLING_INDEX_IMPORTED

导入危险的索引

NEW_INDEX_RESTORED

重新恢复一个新索引

EXISTING_INDEX_RESTORED

重新恢复一个已关闭的索引

REPLICA_ADDED

添加副本

ALLOCATION_FAILED

分配分片失败

NODE_LEFT

集群中节点丢失

REROUTE_CANCELLED

reroute 命令取消

REINITIALIZED

重新初始化

REALLOCATED_REPLICA

重新分配副本

?集群状态如果长时间未自动恢复,或是无法解决,则需要通过 售后支持 联系腾讯云技术支持。

reason

原因

INDEX_CREATED

索引创建,由于 API 创建索引而未分配的

CLUSTER_RECOVERED

集群恢复,由于整个集群恢复而未分配

INDEX_REOPENED

索引重新打开

DANGLING_INDEX_IMPORTED

导入危险的索引

NEW_INDEX_RESTORED

重新恢复一个新索引

EXISTING_INDEX_RESTORED

重新恢复一个已关闭的索引

REPLICA_ADDED

添加副本

ALLOCATION_FAILED

分配分片失败

NODE_LEFT

集群中节点丢失

REROUTE_CANCELLED

reroute 命令取消

REINITIALIZED

重新初始化

REALLOCATED_REPLICA

重新分配副本

相关文章
Elasticsearch集群异常状态(RED、YELLOW)原因分析
本文描述问题及解决方法同样适用于 腾讯云 Elasticsearch Service(ES)。
岳涛
2021-03-20
15.7K2
ES集群yellow,Red问题排查及解决
1:黄色,表示所有的主分片均可用,但存在不可用副本分片。此时,搜索结果仍然是完整的,但集群的高可用性在一定程度上受到影响,一般会自动恢复。
ES小助理
2022-05-26
3.7K0
「ES 排障指南」之 Elasticsearch 集群异常状态分析 —— 集群 YELLOW
本文描述问题及解决方法同样适用于 腾讯云 Elasticsearch Service(ES)。
岳涛
2023-11-16
6K72
线上 Elasticsearch 集群健康值 red 状态问题排查与解决
之前一直运行正常的数据分析平台,最近一段时间没有注意发现日志索引数据一直未生成,大概持续了n多天,当前状态: 单台机器, Elasticsearch(下面称ES)单节点(空集群),1000+shrads, 约200G大小。
haifeiWu
2018-09-11
7.2K0
elastic search 如何将yellow 状态变为green健康状态
green状态:每个索引的primary shard和replica shard都是active状态 yellow : 每个索引的primary shard都是active状态,但是部分replica shard不是active状态,处于不可用状态 red: 不是所有的索引的primary shard都是active状态,部分索引有数据丢失了
MickyInvQ
2020-09-27
2.3K0
点击加载更多
词条知识树 17个知识点
更多
  • 产品相关问题(9个知识点)
  • 集群异常问题(8个知识点)
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券