Elasticsearch 集群状态变成黄色或者红色,怎么办?

这篇具有很好参考价值的文章主要介绍了Elasticsearch 集群状态变成黄色或者红色,怎么办?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、引言

本系列文章介绍如何修复 Elasticsearch 集群的常见错误和问题。

这是系列文章的第六篇,主要探讨:Elasticsearch 集群状态变成黄色或者红色,怎么办?

第一篇:Elasticsearch 磁盘使用率超过警戒水位线,怎么办?

第二篇:Elasitcsearch CPU 使用率突然飙升,怎么办?

第三篇:Elasticsearch 断路器报错,怎么办?

第四篇:Elasticsearch JVM 堆内存使用率飙升,怎么办?

第五篇:Elasticsearch  出现 “429 rejected” 报错,怎么办?

2、集群健康状态之红色或黄色含义

红色或黄色集群状态表示一个或多个分片丢失或未分配。

这些未分配的分片会增加数据丢失的风险,并会降低集群性能。

3、集群健康状态诊断

3.1 检测集群健康状态

命令行方式

GET _cluster/health?filter_path=status,*_shards
Elasticsearch 集群状态变成黄色或者红色,怎么办?

可视化方式

  • head 插件可视化

Elasticsearch 集群状态变成黄色或者红色,怎么办?
  • kibana 可视化监控

Elasticsearch 集群状态变成黄色或者红色,怎么办?
集群状态 含义
绿色 健康状态,未见异常
黄色 至少一个副本分片未分配成功
红色 至少一个主分片未分配成功

3.2 查看未分配的分片

GET _cat/shards?v=true&h=index,shard,prirep,state,node,unassigned.reason&s=state
Elasticsearch 集群状态变成黄色或者红色,怎么办?

几个参数解释如下:

  • v=true, 代表显示字段含义;否则首行内容不显示。

  • h=*,代表列名;

  • s=state,代表基于state方式排序。等价于:s=state:asc,默认升序方式排序。

  • prirep,代表分片类型。p:代表主分片;r:代表副本分片。

如上截图代表:order_info、test_data等索引包含未分配的副本分片,这点和集群健康状态“黄色”一致。

3.3 查看未分配的分片的原因

上面的返回结果:unassigned.reason 已经基本包含了未分配的原因。但想得到更为详细的解释,需要使用如下的命令。

GET _cluster/allocation/explain?filter_path=index,node_allocation_decisions.node_name,node_allocation_decisions.deciders.*
{
  "index": "order_info",
  "shard": 0,
  "primary": false
}

上面的几个参数解释如下:

  • index:索引名称,建议结合前一步指定。

  • shard:分片序号。从 0 开始计数。

  • primary:是否主分片;true 代表是;false 代表否。返回结果如下:

Elasticsearch 集群状态变成黄色或者红色,怎么办?

explanation 就是根本原因。如下 head 插件和 Kibana 都能看的更为明显。

Elasticsearch 集群状态变成黄色或者红色,怎么办?Elasticsearch 集群状态变成黄色或者红色,怎么办?

本质原因就是:只有一个节点,但是设置了副本,导致了主分片可以分片正常,副本分片无法分配。进而导致:集群健康状态是黄色。如何修复,下文会给出答案。

4、修复非健康集群状态方案汇总

分片变得未分配的原因有很多种。下文概述了最常见的原因及其解决方案。

4.1 重新启用分片分配

适用场景:节点重启过或者设置过禁用分片分配,但之后忘记设置重新分配策略,Elasticsearch 将无法分配分片。

需要手动更新集群设置才可以实现重新分配。

PUT _cluster/settings
{
  "persistent" : {
    "cluster.routing.allocation.enable" : null
  }
}

4.2 调整节点下线时分片分配控制策略

当数据节点下线或特定原因宕机导致离开集群时,分片通常会变成未分配状态。造成这种情况的原因很多,比如:连接问题;比如:硬件故障问题等。

当这些故障解决后,下线节点重新加入集群,然后,Elasaticsearch 将自动分配之前因节点下线等原因导致的未分配的分片。

为了避免在上述问题上浪费资源,Elasticsearch 默认将分配延迟一分钟。根据业务实际需要,比如:因升级内存而下线数据节点的场景,可以将该延时值调大。

参考命令行如下:

PUT _all/_settings
{
  "settings": {
    "index.unassigned.node_left.delayed_timeout": "5m"
  }
}

如果已恢复节点并且不想等待延迟期,则可以调用不带参数的集群 reroute API 来启动分配过程。该进程在后台异步运行。

POST _cluster/reroute

4.3 分片分配设置层面修复

分片分配设置错误可能会导致主分片无法分配。这些设置包括但不限于:

  • 索引层面的分片分配设置;

  • 集群层面的分片分配设置;

  • 集群层面的感知(awareness)分片分配设置。

为了获取分片分配的细节设置,推荐使用如下两个 API:

GET order_info/_settings?flat_settings=true&include_defaults=true

GET _cluster/settings?flat_settings=true&include_defaults=true
Elasticsearch 集群状态变成黄色或者红色,怎么办?

注意:

  • flat_settings 标志会影响设置列表的呈现。当 flat_settings 标志为 true 时,相关设置以平面格式返回,如上图所示。

  • include_defaults 默认值是 false,如果为 true,则代表返回集群所有缺省值。

更多参数设置,推荐阅读:https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-get-settings.html

4.4 减少副本设置

为了防止硬件故障,Elasticsearch 不会将副本分配给与其主分片相同的节点。

如果没有其他数据节点可用于分配副本分片,则该副本分片保持未分配状态。如开篇截图的黄色集群状态,本质就是这个原因。要解决此问题,你可以:

  • 添加相同角色的数据节点。

  • 通过更新 index.number_of_replicas 索引设置减少每个主分片的副本数。

PS:为了保证集群线上业务的高可用性,建议每个主节点至少保留一个副本。

如下是集群层面的设置,设置后对整个集群生效。

PUT _settings
{
  "index.number_of_replicas": 0
}
Elasticsearch 集群状态变成黄色或者红色,怎么办?

4.5  释放或增加磁盘空间

Elasticsearch 使用 low disk watermark 低磁盘警戒水位线来确保数据节点有足够的磁盘空间来接收分片。

默认情况下,Elasticsearch 不会将分片分配给磁盘使用率超过 85% 的节点。要检查节点的当前磁盘空间,请使用 cat allocation API。

GET _cat/allocation?v=true&h=node,shards,disk.*
Elasticsearch 集群状态变成黄色或者红色,怎么办?

如果你的节点磁盘空间不足,你通常有如下四个细化方案:

  • 方案 1:升级节点以增加磁盘空间。

  • 方案 2:删除不需要的索引以释放空间。

(1)如果你使用 ILM 索引生命周期管理,则可以更新生命周期策略以使用可搜索快照或添加删除阶段。

(2)如果你不再需要搜索数据,可以使用快照将其历史数据存储在集群外。

PS:这里强调的删除索引,delete 操作,不是删除数据的 delete_by_query 操作,切记!

  • 方案 3:如果你不再写入索引,请使用强制合并 API( force merge API ) 或 ILM 的强制合并操作将其段合并为更大的段。

POST order_info/_forcemerge
Elasticsearch 集群状态变成黄色或者红色,怎么办?
  • 方案 4:如果索引是只读的,请使用 shrink index API 或 ILM 的 shrink action 来减少其主分片数。

PUT order_index_ext
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 0
  }
}

POST order_index_ext/_bulk
{"index":{"_id":1}}
{"title":"just testing..."}
{"index":{"_id":2}}
{"title":"just testing..."}
{"index":{"_id":3}}
{"title":"just testing..."}

PUT order_index_ext/_settings
{
  "index.blocks.write":"true"
}

POST order_index_ext/_shrink/order_shrink_index
Elasticsearch 集群状态变成黄色或者红色,怎么办?
  • 方案 5:如果你的节点具有较大的磁盘容量,你可以调大低磁盘警戒水位线的值或将其设置为显式字节值。

具体设置,参考如下:

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.disk.watermark.low": "30gb"
  }
}

4.6 减少 JVM 堆内存压力

分片分配需要 JVM 堆内存。高 JVM 内存压力可能会触发停止分片分配并使分片未分配的断路器(出现内存熔断现象)。

推荐阅读:Elasticsearch JVM 堆内存使用率飙升,怎么办?

4.7 主分片丢失情况的恢复策略

如果包含主分片的节点因故障或其他原因下线,Elasticsearch 通常可以使用另一个节点上的副本替换它。

如果包含主分片的节点无法恢复或其副本不存在或无法恢复(这是比较极端的情况),则需要从快照或原始数据源重新添加丢失的数据。

注意啦,前方高能!!!

仅当节点不再可能成功恢复时才使用此选项。因为:此过程分配一个空的主分片。如果节点稍后重新加入集群,Elasticsearch 将用这个较新的空分片中的数据覆盖其主分片,从而导致数据丢失

使用集群重新路由 reroute  API 手动将未分配的主分片分配给同一角色中的另一个数据节点。将参数 accept_data_loss 设置为 true。

POST _cluster/reroute
{
  "commands": [
    {
      "allocate_empty_primary": {
        "index": "order_info",
        "shard": 0,
        "node": "node-1",
        "accept_data_loss": "true"
      }
    }
  ]
}

5、小结

之前也有多篇文章介绍集群非健康状态修复,如下:

干货 | Elasticsearch 集群健康值红色终极解决方案

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

Elasticsearch 集群故障排查及修复指南

本篇结合最新官方文档解读,更为全面和具体。

实战环节如果遇到类似问题,建议参考本文,从上到下逐一排查,直至解决。

你在实战环节肯定也遇到集群非健康状态问题,你是如何解决的呢?欢迎留言写下你的实战思考。

参考

1.  https://www.elastic.co/guide/en/elasticsearch/reference/current/fix-common-cluster-issues.html

2.https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-get-settings.html

推荐

1、重磅 | 死磕 Elasticsearch 方法论认知清单(2021年国庆更新版)

2、如何从0到1打磨一门 Elasticsearch 线上直播课?(口碑不错)

3、如何系统的学习 Elasticsearch ?

4、Elasticsearch 中为什么会有大量文档插入后变成 deleted?

更短时间更快习得更多干货!

和全球近 1600+ Elastic 爱好者一起精进!

Elasticsearch 集群状态变成黄色或者红色,怎么办?

比同事抢先一步学习进阶干货!文章来源地址https://www.toymoban.com/news/detail-404522.html

到了这里,关于Elasticsearch 集群状态变成黄色或者红色,怎么办?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 电脑c盘满了变成红色了怎么清理?看看这7个方法

    当C盘出现红色标识提示时,表示该分区的可用存储空间已经极度不足,可能会影响系统稳定性和性能。如果您需要清理C盘并腾出更多的存储空间,可以采取以下措施: 一、电脑c盘7种清理方法 方法1:清空回收站 演示机型:技嘉 H310M HD22.0 系统版本:Windows 10 专业版 通常来说

    2024年02月02日
    浏览(39)
  • 查看Elasticsearch集群状态

    使用elastic自带的开发工具查询 查询集群健康状态 集群名字使我们创建容器的时候设置的参数,状态绿色 查询节点状态 我们是使用docker容器创建的,这里显示的ip是容器内部ip 查询索引情况 我们还没有创建索引,这些都是系统自带的,系统一些组件这些索引支持

    2024年02月12日
    浏览(38)
  • 电脑c盘满了变成红色了怎么清理,清理c盘详细攻略

    我们的电脑当用了一段时间之后,其实自然而然的就会有一点点卡,其实这是因为我们的电脑c盘满了,所以会造成卡顿是正常的,今天我们就来聊一聊电脑c盘满了变成红色了怎么清理?   一.电脑c盘为啥会满 软件安装:当您安装新的应用程序或软件时,它们通常会默认安装

    2024年02月11日
    浏览(42)
  • Elasticsearch集群状态灯代表含义

    了解指示灯状态之前需要先了解下什么是分片和副本。 Sharing(分片、水平扩展) 比如我们的ES集群是3节点的,每个节点最多只能存放300G的文档。当前我们有个大索引有900G,就可以进行分片拆分成3个小索引,每个节点300G,如果我们有10个节点就一个就可以存放一个3T的大索

    2024年02月16日
    浏览(31)
  • 电脑开机出现红色三角标志,怎么办

    转载自:https://www.weidianyuedu.com/content/2620015724739.html       电脑开机出现红色三角标志说明电脑已经出现问题,若开机则需要按下F1键才能进入,主要是因为Bios中设置与真实硬件数据不符引起的。       可以分为以下几种情况: 1、实际上没有软驱或者软驱坏了,而Bios里却设

    2024年02月11日
    浏览(44)
  • 64位WIN7系统下无法安装驱动/ 有黄色感叹号怎么办?

    无法安装驱动的64位Windows7系统,下载并安装微软安全补丁即可: Microsoft Update Catalog 2019-适用于 Windows 7 的 09 安全更新,适合基于 x64 的系统 (KB4474419) 或者: Microsoft Update Catalog  基于 x64 的系统的 Windows 7 安全更新程序 (KB3033929) 原因: 部分64位Windows7系统无法安装驱动,查看设

    2024年02月08日
    浏览(45)
  • ElasticSearch---查询es集群状态、分片、索引

    查看es集群状态: 如果?后面加上pretty,能让返回的json格式化。 加上?v的返回结果,如下: 解释如下: 查看es分片信息: 查看es分片信息,模糊匹配,比如匹配test: 返回信息如下: 解析如下: 查看状态为unassigned的es分片信息: 查看es索引 查看es所有索引: indices表示索引,是

    2024年02月02日
    浏览(41)
  • Elasticsearch集群Yellow亚健康状态修复

    Elasticsearch集群健康状态为 Yellow ,涉及到多个索引。 在浏览器打开Kibana Console进行问题排查,console地址为: 在console运行以下API命令来获取基本信息: 获取健康状态为Yellow的索引信息: 输出中包含的列有health、status(索引状态)、index(索引名称)、uuid、pri(主分片数量)

    2024年02月02日
    浏览(41)
  • ElasticSearch监控与告警:实时监控集群健康状态

    ElasticSearch是一个开源的搜索和分析引擎,它可以为应用程序提供实时的、可扩展的搜索功能。ElasticSearch是一个分布式系统,它可以在多个节点上运行,以实现高可用性和高性能。在生产环境中,监控和告警是关键的,以确保集群的健康状态和性能。 在本文中,我们将讨论

    2024年02月20日
    浏览(40)
  • idea中文件变橘色或者红色的问题

    创建springboot项目时,出现如下的页面  所有的文件都变红了,但是图标都在,解决办法有两种  添加none,引用并保存,但是........保存后会发现,管理工具都没有了,例如GIT 解决的文件的变色,但是无法解决根本问题,再仔细研究后发现,文件爆红就是管理工具的问题,那就使用方法二  就

    2024年02月13日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包