Elasticsearch集群Yellow亚健康状态修复

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

问题背景

Elasticsearch集群健康状态为Yellow,涉及到多个索引。

排查流程

在浏览器打开Kibana Console进行问题排查,console地址为:

http://{Kibana_IP}:5601/app/dev_tools#/console

在console运行以下API命令来获取基本信息:

GET _cat/health?v
GET _cat/master?v
GET _cat/nodes?v
GET _cat/indices?v

GET _cat/shards?v
# 输出中各列分别为:
# shard:分片名称;prirep:主分片或副本,
# state:分片状态,可以为 INITIALIZING | RELOCATING | STARTED | UNASSIGNED
# docs:分片中文档的数量;store:分片占用的磁盘空间

GET _cat/allocation?v
# 获取分配到每个节点的分片数量以及所占用的磁盘空间

获取健康状态为Yellow的索引信息:

GET _cat/indices?v&health=yellow

输出中包含的列有health、status(索引状态)、index(索引名称)、uuid、pri(主分片数量)、rep(副本数量)、docs.count、docs.deleted、store.size、pro.store.size。

从上面拿到的异常状态索引中,任选一个(假设为ftimes_infra_migrad_2022-09)继续查看该索引的分片信息:

GET _cat/shards/ftimes_infra_migrad_2022-09?v

输出的列中包含index、shard(分片名称)、prirep(primary还是replica)、state、docs、store(分片大小)、ip、node(分片所在节点)。

观察目标索引的各个分片的分配情况。Yellow健康状态下一般这里可以看到有replica分片没有被正确分配,即prirep=r的行记录,对应的分片状态为state=UNASSIGNED

假设未被正确分配的replica分片名称为0,检查该分片分配失败的原因:

GET _cluster/allocation/explain
{
  "index": "ftimes_infra_migrad_2022-09",
  "shard": 0,
  "primary": false
}

检查输出中的explanation部分:

...
"explanation": "shard has exceeded the maximum number of retries [5] on failed
allocation attempts - manually call [/_cluster/reroute?retry_failed=true] to retry,
..."

解决办法

下面我们尝试手动分配该replica分片。需要确保replica分片要分配的节点上有足够的磁盘空间,并且同一索引的primary分片和replica分片不在同一节点上。

# 查看分片的大小、主分片所在节点
GET _cat/shards/ftimes_infra_migrad_2022-09?v

# 查看各节点的磁盘空间使用情况
GET _cat/allocation?v

# 将replica分片手动分配到指定节点es_data_21
POST /_cluster/reroute
{
  "command": [
    {
      "allocation_replica": {
        "index": "ftimes_infra_migrad_2022-09",
        "shard": 0,
        "node": "es_data_21"
      }
    }
  ]
}

执行后收到下面的报错:

...
"type": "illegal_argument_exception",
"reason": "[allocation_replica] allocation of [ftimes_infra_migrad_2022-09][0] on
node {es_data_21}{...}{...} is not allowed, reason: [NO(shard has exceeded the 
maximum number of retries [5] on failed allocation attempts - manually call 
[/_cluster/reroute?retry_failed=true] to retry, ... )]"

根据错误提示执行以下命令:

POST /_cluster/reroute?retry_failed=true

ES集群就会自动重新分配之前分配出错的replica副本。

过一小段时间后,检查所有索引健康状态:

GET _cat/indices?v&health=yellow

🐟MORE …

在Kibana的console API命令中,可以使用s来对检索结果按指定的列排序,并使用通配符*来匹配任意字符串。文章来源地址https://www.toymoban.com/news/detail-781005.html

# 获取集群中所有索引信息,并按index列排序
GET _cat/indices?v&s=index

# 获取集群中名称以ftimes开头的所有索引信息,并按index列排序
GET _cat/indices/ftimes*?v&s=index

# 获取集群中名称以gzone开头的索引的所有分片信息
GET _cat/shards/gzone*

到了这里,关于Elasticsearch集群Yellow亚健康状态修复的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 查看Elasticsearch集群状态

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

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

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

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

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

    2024年02月02日
    浏览(41)
  • Elasticsearch 集群状态变成黄色或者红色,怎么办?

    本系列文章介绍如何修复 Elasticsearch 集群的常见错误和问题。 这是系列文章的第六篇,主要探讨:Elasticsearch 集群状态变成黄色或者红色,怎么办? 第一篇:Elasticsearch 磁盘使用率超过警戒水位线,怎么办? 第二篇:Elasitcsearch CPU 使用率突然飙升,怎么办? 第三篇:Elastic

    2023年04月08日
    浏览(38)
  • Kubernetes Pod的重启策略+健康检查(实现应用自修复);

    指的是容器什么时候才会被重启,如果没有健康检查的话,默认是根据pod的status来判断的 有三个值,分别是: Always : 只要容器被终止退出后,总是重启容器,默认策略; 应用场景:常驻进程(例如nginx,tomcat、mysql等) OnFailure :只有当容器异常退出(退出状态码非0)时,

    2024年02月03日
    浏览(38)
  • kylin集群反向代理(健康检查)

            前面一篇文章提到了使用nginx来对kylin集群进行反向代理, kylin集群使用nginx反向代理-CSDN博客 文章浏览阅读349次,点赞8次,收藏9次。由于是同一个集群的,元数据没有变化,所以,直接将原本的kylin使用scp的方式发送到其他节点即可。说明一下,192.168.200.12是我

    2024年02月02日
    浏览(47)
  • Zookeeper的集群健康监测与报警

    Zookeeper是一个开源的分布式协调服务,用于构建分布式应用程序的基础设施。它提供了一组简单的原子性操作来管理分布式应用程序的数据,并确保数据的一致性。Zookeeper的核心功能包括: 集群管理:Zookeeper可以管理一个集群中的节点,并确保集群中的节点数量始终保持在预

    2024年01月21日
    浏览(38)
  • 云原生之深入解析Docker容器的health健康状态检查

    自 1.12 版本之后,Docker 引入了原生的健康检查实现。对于容器而言,最简单的健康检查是进程级的健康检查,即检验进程是否存活。Docker Daemon 会自动监控容器中的 PID1 进程,如果 docker run 命令中指明了 restart policy,可以根据策略自动重启已结束的容器。 在很多实际场景下,

    2024年02月09日
    浏览(51)
  • 云小课|MRS基础操作之集群健康检查

    本文分享自华为云社区《云小课|MRS基础操作之集群健康检查》,作者:阅识风云。 阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击 此处 。

    2024年02月08日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包