Elasticsearch-33.诊断集群的潜在问题 he 解决集群Yellow与Red的问题

Elasticsearch

诊断集群的潜在问题

集群运维所面临的挑战

  • 用户集群数量多,业务场景差异大

  • 使用与配置不当, 优化不够

    • 如何让用户 更加高效和正确的使用ES
    • 如何让用户更全面的了解自己的集群的使用状况
  • 发现问题滞后,需要防患于未然

    • 需要“有迹可循”,做到“有则改之,无则加勉”
    • Elastic 有提供Support Diagnostics Tool - https://gi thub. com/e lastic/ support-diagnostics

集群绿色,是否意味着足够好

  • 绿色只是其中一项指标。 显示分片是否都已正常分配
  • 监控指标多并且分散
    • 指标的含义不够明确直观
  • 问题分析定位的门槛较高
    • 需要具备专业知识

为什么要诊断集群的潜在问题

  • 防患于未然,避免集群奔溃
    • Master节点/数据节点当机-负载过高,导致节点失联
    • 副本丢失, 导致数据可靠性受损
    • 集群压力过大, 数据写入失败
  • 提升集群性能
    • 数据节点负载不均衡 (避免单节点瓶颈) / 优化分片,segment
    • 规范操作方式(利用别名/避免Dynamic Mapping 引发过多字段,对索引的合理性进行管控)

eBay Diagnostic Tool

  • 集群健康状态,是否有节点丢失

  • 索引 合理性

    • 索引总数不能过大/副本分片尽量不要设置为0 /主分片尺寸检测/索引的字段总数(Dynamic Mapping关闭) /索引是否分配不均衡/索引segment 大小诊断分析
  • 资源使用合理性

    • CPU内存和磁盘的使用状况分析/是否存在节点负载不平衡/是否需要增加节点
  • 业务 操作合理性

    • 集群状态变更频率,是否在业务高峰期有频繁操作
    • 慢查询监控 与分析

在这里插入图片描述

阿里云EYOU智能运维工具

每天凌晨定时诊断,也可以自主诊断。每次诊断耗时3分钟-
https://help. aliyun.com/document detail/90391 .html

解决集群Yellow与Red的问题

集群健康度

在这里插入图片描述

Health相关的API

在这里插入图片描述

案例1 症状:集群变红

  • 分析:通过Allocation Explain API发现创建索引失败,因为无法找到标记了相应box type
    的节点.
  • 解决: 删除索引,集群变绿。重新创建索引,并且指定正确的routing box type, 索引创建成
    功。集群保持绿色状态

案例2 症状: 集群变黄

  • 分析: 通过Allocation Explain API发现无法在相同的节点上创建副本
  • 解决: 将索引的副本数设置为0,或者通过增加节点解决

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

  • INDEX_ _CREATE:创建索引导致。在索引的全部分片分配完成之前,会有短暂的Red, 不一-定代表
    有问,题

  • CLUSTER_ RECOVER:集群重启阶段,会有这个问题

  • INDEX_ REOPEN: Open一个之前Close 的索引

  • DANGLING_ INDEX_ _IMPORTED:一个节点离开集群期间,有索引被删除。这个节点重新返回时,会导致Dangling的问题
    https://www. elastic. co/ guide/en/e last icsearch/ reference/7.1/cat-shards. html

常见问题与解决方法

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

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

    • 如果是测试的索引,可以直接删除
  • 因为磁盘空间限制,分片规则(Shard Filtering) 引发的,需要调整规则或者增加节点

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

集群Red&Yellow问题的总结

在这里插入图片描述

demoAPI

#案例1
DELETE mytest
PUT mytest
{
  "settings":{
    "number_of_shards":3,
    "number_of_replicas":0,
    "index.routing.allocation.require.box_type":"hott"
  }
}





# 检查集群状态,查看是否有节点丢失,有多少分片无法分配
GET /_cluster/health/

# 查看索引级别,找到红色的索引
GET /_cluster/health?level=indices


#查看索引的分片
GET _cluster/health?level=shards

# Explain 变红的原因
GET /_cluster/allocation/explain

GET /_cat/shards/mytest
GET _cat/nodeattrs

DELETE mytest
GET /_cluster/health/

PUT mytest
{
  "settings":{
    "number_of_shards":3,
    "number_of_replicas":0,
    "index.routing.allocation.require.box_type":"hot"
  }
}

GET /_cluster/health/

#案例2, Explain 看 hot 上的 explain
DELETE mytest
PUT mytest
{
  "settings":{
    "number_of_shards":2,
    "number_of_replicas":1,
    "index.routing.allocation.require.box_type":"hot"
  }
}

GET _cluster/health
GET _cat/shards/mytest
GET /_cluster/allocation/explain

PUT mytest/_settings
{
    "number_of_replicas": 0
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
elasticsearch-7.12.0-py2.py3-none-any.whl 是 Elasticsearch 的 Python 客户端库的一个安装文件。Elasticsearch 是一个开源的实时分布式搜索和分析引擎,用于处理大规模数据集。它提供了一个简单可扩展的 RESTful API 接口,允许用户进行高效的数据搜索、分析以及存储。 这个安装文件的命名规则是根据 Python 的支持版本以及可运行平台来命名的。-py2.py3 表示可以同时兼容 Python 2 和 Python 3 版本的代码。-none-any 表示它是一个纯 Python 代码的库,不依赖于特定的操作系统或平台。 通过安装 elasticsearch-7.12.0-py2.py3-none-any.whl,您可以轻松地在您的 Python 环境中使用 Elasticsearch。这个库提供了许多功能,包括连接到 Elasticsearch 实例、执行索引、搜索和分析操作,以及管理和维护 Elasticsearch集群和节点。您可以使用这个库来构建各种应用,如全文搜索引擎、实时日志分析等。 要安装 elasticsearch-7.12.0-py2.py3-none-any.whl,您可以使用 pip 工具,在命令行中运行以下命令: ``` pip install elasticsearch-7.12.0-py2.py3-none-any.whl ``` 安装成功后,您就可以在您的 Python 代码中导入 elasticsearch 模块,并开始使用 Elasticsearch 的功能了。 总结:elasticsearch-7.12.0-py2.py3-none-any.whl 是 Elasticsearch 的 Python 客户端库的安装文件,用于连接、操作和管理 Elasticsearch 实例。通过安装这个库,您可以在您的 Python 项目中轻松使用 Elasticsearch 的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值