赞
踩
原文网址:Elasticsearch--解决磁盘使用率超过警戒水位线_IT利刃出鞘的博客-CSDN博客
本文介绍如何解决ES磁盘使用率超过警戒水位线的问题。
当客户端向 Elasticsearch 写入文档时候报错:
cluster_block_exception [FORBIDDEN/12/index read-only / allow delete (api)];
在 elasticsearch 的日志文件中报错如下:
flood stage disk watermark [95%] exceeded ... all indices on this node will marked read-only
出现如上问题多半是:磁盘使用量超过警戒水位线,索引存在 read-only-allow-delete 索引块数据。
基础认知:磁盘三个警戒水位线:
属性名 | 属性值 | 含义 |
---|---|---|
cluster.routing.allocation.disk.watermark.low | 85% | 低警戒水位线 |
cluster.routing.allocation.disk.watermark.high | 90% | 高警戒水位线 |
cluster.routing.allocation.disk.watermark.flood_stage | 95% | 洪泛警戒水位线 |
本文“问题描述”的报错表明数据节点的磁盘空间严重不足,并且已达到磁盘洪泛警戒水位线(磁盘使用率95%+,洪水泛滥的意思)。
为防止磁盘变满,当节点达到洪泛警戒水位线时,Elasticsearch 会阻止向该节点的任何索引分片写入数据,后面还会具体介绍如何阻止。
如果该数据块影响到相关的系统索引,可能会导致 Kibana 或者其他 Elastic Stack 功能不可用。
要立即恢复写入操作,你可以暂时上调磁盘警戒水位并移除写入块。
如下命令行是集群层面更新设置的操作。
- PUT _cluster/settings
- {
- "persistent": {
- "cluster.routing.allocation.disk.watermark.low": "90%",
- "cluster.routing.allocation.disk.watermark.high": "95%",
- "cluster.routing.allocation.disk.watermark.flood_stage": "97%"
- }
- }
索引块的五种不同状态如下:
状态一:index.blocks.read_only
设置为 "true"可以使索引和索引元数据只读,"false "可以允许写入和元数据改变。
状态二:index.blocks.read_only_allow_delete
类似于index.blocks.read_only,但也允许删除索引释放磁盘资源。
基于磁盘的分片分配器(The disk-based shard allocator)可以自动添加和删除index.blocks.read_only属性的数据块。
这里依然会引申出删除索引文档和删除索引本身的区别等知识点:
状态三:index.blocks.read
设置为 "true",代表禁止对索引进行读操作。
状态四:index.blocks.write
设置为 "true "代表禁止对索引的数据写入操作。
与read_only不同,这个设置并不影响元数据。例如,你可以用一个 write 块关闭一个索引,但是你不能用一个 read_only 块关闭一个索引。
状态五:index.blocks.metadata
设置为 "true "代表禁用索引元数据的读写。
所以,如下的设置本质上是破除磁盘洪泛警戒水位线 95% 的 index.blocks.read_only_allow_delete 的限制,让索引继续可以写入数据。
个人评价:应急可以用。
- PUT */_settings?expand_wildcards=all
- {
- "index.blocks.read_only_allow_delete": null
- }
作为长期解决方案,建议将节点添加到不受影响的数据层或升级现有节点实现节点磁盘扩容以增加磁盘空间。
比如:data_hot 热节点爆满,建议:
要释放额外的磁盘空间,你可以使用删除索引 API 删除不需要的索引。
DELETE my-index
当长期解决方案到位时,可使用如下命令行重置磁盘警戒水位线。
- PUT _cluster/settings
- {
- "persistent": {
- "cluster.routing.allocation.disk.watermark.low": null,
- "cluster.routing.allocation.disk.watermark.high": null,
- "cluster.routing.allocation.disk.watermark.flood_stage": null
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。