当前位置: 首页 > news >正文

解决 Elasticsearch cluster_block_exception 错误的终极指南

Elasticsearch 是一个功能强大的分布式搜索引擎,广泛应用于全文检索、实时分析等场景。

尽管如此,像任何复杂系统一样,它也会遇到一些运行问题,其中较为常见且影响较大的就是 cluster_block_exception 错误。

本文将深入解析这种错误的常见原因、如何排查问题以及如何有效解决。

我们将为你提供一套简明的解决方案,帮助你轻松应对这个问题。

一、什么是 cluster_block_exception 错误?

cluster_block_exception 是 Elasticsearch 中的一种错误,通常表示集群由于某种状态阻止了某些操作的执行。

这是 Elasticsearch 的一种保护机制,避免数据丢失或系统崩溃。

常见的触发原因包括磁盘空间不足、集群健康状态不佳、节点故障或不正确的索引设置。

1. 磁盘空间不足

  • 问题描述:

Elasticsearch 内置了磁盘空间警戒水位线机制,当磁盘空间不足时,系统会阻止数据写入,以保护集群的完整性。这是最常见的 cluster_block_exception 触发原因。

30a748d7cfb66ec937c0a91560344b8b.png

  • 如何检查磁盘空间:

使用以下命令检查集群各节点的磁盘使用情况:

GET _cat/allocation?v

如果某个节点的磁盘使用率超过高水位线,Elasticsearch 会阻止进一步写入数据。

f95d2dcec6a7d4c5b0c75f8a2326dc17.png

0272a5230e82795baf9390b7bca99146.png

  • 解决方法:

增加磁盘空间。删除不必要的旧索引:

DELETE /index_name

2. 集群健康问题

  • 问题描述:

当集群的健康状态变为 yellow 或 red 时,某些操作可能会被阻止。

yellow 表示副本分片未完全分配,而 red 则表明主分片不可用或丢失。

6414a821c6b655f19bfe537408e5a92c.png

  • 如何检查集群健康状态:

GET _cluster/health

如果集群状态为 yellow 或 red,这表明有潜在的集群健康问题需要解决。

  • 解决方法:

确保所有节点正常运行,使用以下命令检查节点状态:

GET _cat/nodes?v

49ae52c314c931b1a9300380069bb496.png

如果节点存在问题,检查硬件或网络问题,并重新启动故障节点。

重新分配分片以恢复集群健康:

POST /_cluster/reroute

优化集群配置,如增加副本分片数。

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

3. 节点故障

  • 问题描述:

节点故障通常是由于硬件、网络或资源不足引起的。

当一个或多个节点出现故障时,可能会导致 cluster_block_exception,因为部分分片变得不可用。

  • 如何识别节点故障:

GET _cat/nodes?v

e2cd03b27a20fdb97c0dbd90928b0e27.png

通过检查节点的状态和资源使用情况,尤其是 CPU 和内存,确定哪些节点可能出现问题。

  • 解决方法:

重新启动出现故障的节点。

检查并解决硬件或网络问题,确保节点可以正常通信。

确保 Elasticsearch 进程有足够的系统资源(CPU、内存等)。

4. 集群或索引被设置为只读

  • 问题描述:

有时,Elasticsearch 集群或索引可能被错误地设置为只读模式,尤其是在磁盘空间不足时。

message [ElasticsearchException[Elasticsearch exception [type=cluster_block_exception, reason=blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];]]]

此时,所有写操作都会被阻止,导致 cluster_block_exception

  • 如何检查集群是否为只读:

GET /_cluster/settings

65285961df42594f1555c7211573f10d.png

检查 cluster.blocks.read_onlycluster.blocks.read_only_allow_delete 是否为 true

  • 解决方法:

将集群或索引设置为可写:

PUT /_cluster/settings
{"persistent": {"cluster.blocks.read_only": false}
}

或者,移除索引的只读设置(常见移除基本都是设置 null,其他类似命令可以参见如下):

PUT /index_name/_settings
{"index.blocks.read_only_allow_delete": null
}

5. 索引设置问题

  • 问题描述:

有时,错误的索引设置(例如分片分配问题或副本数过少)可能导致操作失败,引发 cluster_block_exception

  • 如何检查索引设置:

GET /index_name/_settings

8fc1f5b7c50fdbc6dfe547905be3f942.png

  • 解决方法:

确保分片合理分配,避免过度分配。推荐阅读:

Elasticsearch 使用误区之三——分片设置不合理

检查和调整副本分片数量,确保有足够的副本来保障数据冗余和查询性能。

二、预防措施

要预防 cluster_block_exception,我们可以采取以下措施:

  • 措施1:定期监控磁盘空间

使用 Kibana 或其他监控工具设置磁盘空间的监控阈值,避免磁盘空间不足。

  • 措施2:自动化分片管理:

使用索引生命周期管理(ILM)策略,自动化控制索引的迁移、删除或冻结操作,以避免无限制的索引增长。

ILM 实战视频:https://www.bilibili.com/video/BV1MU4y1u7D4/

  • 措施3:定期健康检查。

定期检查集群的健康状态,并在集群状态变为 yellow 或 red 时立即采取措施。

  • 措施4:备份和更新

定期备份 Elasticsearch 数据,确保出现问题时数据可以快速恢复。

此外,确保 Elasticsearch 版本是最新的,以利用性能改进和错误修复。

三、总结

cluster_block_exception 错误虽然听起来棘手,但只要你了解了它的触发原因和解决方法,就能轻松应对。

通过本文的指南,结合日常的监控和优化策略,你可以确保 Elasticsearch 集群在高效且稳定的状态下运行,避免潜在的停机和数据损失。

参考

【1】https://kasata.medium.com

【2】https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-reroute.html

更多推荐

  1. Elasticsearch 使用误区之一——将 Elasticsearch 视为关系数据库!

  2.   Elasticsearch 使用误区之二——频繁更新文档

  3. Elasticsearch 使用误区之三——分片设置不合理

  4. Elasticsearch 使用误区之四——不合理的使用 track_total_hits

  5. Elasticsearch 使用误区之五——单次请求获取大量数据

  6. Elasticsearch 使用误区之六——富文本内容写入前不清洗

  7.    《一本书讲透 Elasticsearch》读者群的创新之路

2976ad87b65e8d0ea1276c125bfae55f.jpeg

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

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

elastic6.cn——ElasticStack进阶助手

ed62d6da6fb9196185ac5b468c336baa.gif

抢先一步学习进阶干货!

相关文章:

解决 Elasticsearch cluster_block_exception 错误的终极指南

Elasticsearch 是一个功能强大的分布式搜索引擎,广泛应用于全文检索、实时分析等场景。 尽管如此,像任何复杂系统一样,它也会遇到一些运行问题,其中较为常见且影响较大的就是 cluster_block_exception 错误。 本文将深入解析这种错…...

QT sql驱动错误QMYSQL driver not loaded

引用文章QMYSQL driver not loaded 根据引用文章,到在编译QT mysql.pro的源码步骤时,构建没有报错,但是在对应的文件夹内没有找到编译好的dll文件,经过全电脑搜寻,找到在此文件夹内。 遇到同样错误的朋友可以找找QT安…...

数据驱动,漫途能耗管理系统打造高效节能新生态!

在我国能源消耗结构中,工业企业所占能耗比例相对较大。为实现碳达峰、碳中和目标,工厂需强化能效管理,减少能耗与成本。高效的能耗管理系统通过数据采集与分析,能实时监控工厂能源使用及报警情况,为节能提供数据。构建…...

PH47代码框架软件二次开发极简教程

1. 教程说明 本教程适用于对飞控及Stm32程序设计比较熟悉的二次开发者快速掌握PH47框架的使用要点。本教程仅对PH47框架中最主要的二次开发特性进行简要说明,建议与框架中\DevStudio\Algorithms\Controller_Demo.cpp(.h)示例代码配合学习。关于二次开发特性中的详细…...

SQL Server-导入和导出excel数据-注意事项

环境: win10,SQL Server 2008 R2 之前写过的放在这里: SqlServer_陆沙的博客-CSDN博客 https://blog.csdn.net/pxy7896/category_12704205.html 最近重启ASP.NET项目,在使用sql server导出和导入数据时遇到一些问题,特…...

Linux系统:配置Apache支持CGI(Ubuntu)

配置Apache支持CGI 根据以下步骤配置,实现Apache支持CGI 安装Apache: 可参照文章: Ubuntu安装Apache教程。执行以下命令,修改Apache2配置文件000-default.conf: sudo vim /etc/apache2/sites-enabled/000-default.con…...

qt 序列化和反序列化

序列化:QByteArray buffer; QBuffer bufferDevice(&buffer); bufferDevice.open(QIODevice::WriteOnly); QDataStream out(&bufferDevice); out.setVersion(QDataStream::Qt_5_13); 反序列化: void deserialize(const QByteArray &buffer) {…...

java实现文件变动监听

在文件的内容发生变动时,应用可以感知这种变种,并重新加载文件内容,更新应用内部缓存 实现 轮询:定时器Timer,ScheduledExecutorService 判断文件修改:根据java.io.File#lastModified获取文件的上次修改时…...

Maven的使用

1. Maven 简介 https://maven.apache.org/ Maven 是一个强大的项目管理和构建工具,广泛应用于 Java 项目中,旨在简化项目的依赖管理、构建、测试、部署等工作。Maven 主要通过定义 pom.xml(Project Object Model 文件)来管理项…...

C++开发进阶1:C++编程命名规范

进行C开发时最基础且最重要的是命名规范,掌握良好的命名规范能增加代码的可读性。 认识文件: .cpp:C 源文件. .h或.hpp:C 头文件 .tpp模板实现文件(如果模板定义和实现分开) .inl内联文件,…...

Android 图片相识度比较(pHash)

概述 在 Android 中,要比对两张 Bitmap 图片的相似度,常见的方法有基于像素差异、直方图比较、或者使用一些更高级的算法如 SSIM(结构相似性)和感知哈希(pHash)。 1. 基于像素的差异比较 可以逐像素比较…...

Gitlab 完全卸载–亲测可行

1、停止gitlab gitlab-ctl stop2.卸载gitlab(注意这里写的是gitlab-ce) rpm -e gitlab-ce 3、查看gitlab进程 ps aux | grep gitlab 4、杀掉第一个进程(就是带有好多.............的进程) 5、删除所有包含gitlab文件 find / …...

gitlab操作和管理

详细的说明下这几条指令: Git global setup git config --global user.name “” git config --global user.email “” Create a new repository git clone ssh://git12/letect.git cd vlm-event-secondary-detect git switch -c main touch README.md git add RE…...

ctfshow-web入门-反序列化(web254-web258)

目录 1、web254 2、web255 3、web256 4、web257 5、web258 1、web254 传入符合要求的用户名和密码即可: ?usernamexxxxxx&passwordxxxxxx 拿到 flag:ctfshow{e4795ccd-6bff-44b6-a15c-6c679d802e61} 2、web255 整体逻辑代码和上一道差不多 新…...

repo 命令大全详解(第十一篇 repo init)

repo forall 命令用于在指定的项目上执行给定的命令&#xff0c;非常适合批量操作。 参数分类及解释 基本参数 [<project>...]: 可选&#xff0c;指定要操作的项目。如果不指定&#xff0c;则对所有项目执行命令。 示例: repo forall my_project -c "git status&q…...

ComfyUI | 全新ComfyUI前端操作指南:提升你的工作速度!

随着WebUI基本停更&#xff0c;越来越多的AI创作者转向了ComfyUI。 ComfyUI最大的优势是简洁、高效、占用显存低&#xff0c;工作流模式虽然有一点入门难度&#xff0c;但一旦上手&#xff0c;操作非常舒适。 由于原Stable Diffusion团队的参与&#xff0c;ComfyUI的易用度也…...

nginx解决非人类使用http打开的443,解决网安漏扫时误扫443端口带来的问题

一、问题描述 正常访问https的站点时&#xff0c;使用网址https://www.baidu.com&#xff0c;但会有一种错误的访问请求http://www.baidu.com:443&#xff0c;一般都是非人类所为&#xff0c;如漏洞扫描工具&#xff0c;那么请求以后带来的后果是个错误页面 400 Bad Request T…...

黑马 | Reids | 基础篇

黑马reids基础篇 文章目录 黑马reids基础篇一.初始Redis1.1SQL 和 NoSql的区别1.1.1结构化和非结构化1.1.2关联和非关联1.1.3查询方式1.1.4 事务1.1.5总结 1.2 认识Redis1.3 Redis安装启动默认启动&#xff1a;后台启动&#xff1a;开机自启 1.4 Redis客户端1.4.1.Redis命令行客…...

SAP-换登录界面图片

SMW0 二、SM30 &#xff08;将value值删除&#xff0c;登录图片恢复默认&#xff09; 重新登录&#xff0c;更改成功。...

移动 Web核心笔记(二)

空间转换 空间&#xff1a;是从坐标轴角度定义的 X 、Y 和 Z 三条坐标轴构成了一个立体空间&#xff0c;Z 轴位置与视线方向相同。 空间转换也叫 3D转换 属性&#xff1a;transform 平移 /*单独设置 z轴效果不明显*/ transform: translate3d(x, y, z); transform: translateX(…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...