tencent cloud

Elasticsearch Service

新手指引
动态与公告
产品动态
产品公告
安全公告
产品简介
产品概述
Elasticsearch 版本支持说明
产品功能
高级特性(X-Pack)
产品优势
应用场景
能力与限制说明
相关概念
购买指南
计费概述
产品定价
ES Serverless 服务定价
欠费说明
ES 内核增强
内核版本发布记录
定向路由优化
压缩算法优化
FST Off Heap 内存优化
快速入门
集群规格和容量配置评估
创建集群
访问集群
ES Serverless 服务指南
服务概述
基本概念
5分钟快速体验
快速使用
访问控制
数据写入
数据查询
索引管理
告警管理
ES API 参考
相关问题
数据应用指南
数据应用概述
数据管理
ES 集群指南
集群管理
访问控制
集群多可用区部署
集群扩缩容
集群配置
插件配置
监控与告警
日志查询
数据备份
升级
实践教程
数据迁移和同步
应用场景构建
索引设置
SQL 支持
企业微信机器人接收 Watcher 告警
API 文档
History
Introduction
API Category
Instance APIs
Making API Requests
Data Types
Error Codes
常见问题
产品相关问题
ES 集群
词汇表
新版介绍
Elasticsearch Service 2020.07新版
Elasticsearch Service 2020.2新版
Elasticsearch Service 2019.12新版
文档Elasticsearch Service常见问题ES 集群集群异常问题集群磁盘使用率高和 read_only 状态问题如何解决?

集群磁盘使用率高和 read_only 状态问题如何解决?

PDF
聚焦模式
字号
最后更新时间: 2024-11-29 22:09:09

问题现象

当磁盘使用率超过85%,或者达到100%,会导致 Elasticsearch 集群或 Kibana 无法正常提供服务,可能会出现以下几种问题场景:
在进行索引请求时,返回类似 {[FORBIDDEN/12/index read-only/allow delete(api)];","type":"cluster_block_exception"} 的报错。
1. 在对集群进行操作时,返回类似 [FORBIDDEN/13/cluster read-only / allow delete (api)] 的报错。
2. 集群处于 Red 状态,严重情况下存在节点未加入集群的情况(可通过 GET _cat/allocation?v 命令查看),并且存在未分配的分片(可通过 GET _cat/allocation?v 命令查看)。
3. 通过 Elasticsearch 控制台的节点监控页面,集群节点磁盘使用率曾达到或者接近100%。

问题分析

上述问题是由于磁盘使用率过高所导致。数据节点的磁盘使用率存在以下三个水位线,超过水位线可能会影响 Elasticsearch 或 Kibana 服务。
当集群磁盘使用率超过85%:会导致新的分片无法分配。
当集群磁盘使用率超过90%:Elasticsearch 会尝试将对应节点中的分片迁移到其他磁盘使用率比较低的数据节点中。
当集群磁盘使用率超过95%:系统会对 Elasticsearch 集群中对应节点里每个索引强制设置 read_only_allow_delete 属性,此时该节点上的所有索引将无法写入数据,只能读取和删除对应索引。

解决方案

清理集群过期数据

1. 用户可以通过访问【Kibana】>【Dev Tools】删除过期索引释放磁盘空间。步骤如下:
警告:
数据删除后将无法恢复,请谨慎操作。您也可以选择保留数据,但需进行磁盘扩容。
第一步:开启集群索引批量操作权限。
PUT _cluster/settings
{
"persistent": {
"action.destructive_requires_name": "false"
}
}
第二步:删除数据,例如 DELETE NginxLog-12*
DELETE index-name-*
2. 执行完上述步骤后,如果用户腾讯云 Elasticsearch 的版本是7.5.1以前的版本,还需要在 Kibana 界面的【Dev Tools】中执行如下命令:
关闭索引只读状态,执行如下命令:
PUT _all/_settings
{
"index.blocks.read_only_allow_delete": null
}
关闭集群只读状态,执行如下命令:
PUT _cluster/settings
{
"persistent": {
"cluster.blocks.read_only_allow_delete": null
}
}
3. 查看集群索引是否依然为read_only状态,索引写入是否恢复正常。
4. 若集群是否依然为 Red 状态,执行以下命令,查看集群中是否存在未分配的分片。
GET /_cluster/allocation/explain
5. 等待分片下发完成后,查看集群状态。如果集群状态依然为 Red,请 提交工单,联系腾讯云技术支持。
6. 为避免磁盘使用率过高影响 Elasticsearch 服务,建议开启磁盘使用率监控报警,及时查收报警短信,提前做好防御措施,具体可参考 监控告警配置建议

扩容云盘空间

若用户不想清理集群数据,也可以在腾讯云 ES 控制台 的集群配置界面,扩容磁盘空间。步骤如下:
1. 在集群列表中单击要配置的实例【ID/名称】,进入实例详情页,在【基础配置】页签中单击【调整配置】。

2. 进入调整配置页面,【单节点数据盘】选择您需要扩容的磁盘空间,单击【下一步】,提交任务即可。

3. 如果用户腾讯云 Elasticsearch 的版本是7.5.1以前的版本,还需要在 Kibana 界面的【Dev Tools】中执行如下命令:
关闭索引只读状态,执行如下命令:
PUT _all/_settings
{
"index.blocks.read_only_allow_delete": null
}
关闭集群只读状态,执行如下命令:
PUT _cluster/settings
{
"persistent": {
"cluster.blocks.read_only_allow_delete": null
}
}

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈