ES系列:Elasticsearch index read-only 问题解决办法(ES磁盘满或满扩容之后处理)

 

现象

ES 容器的 json.log 日志文件中不断有大量日志,主要是:
[FORBIDDEN/12/index read-only / allow delete (api)]

 

原因

没有及时清理旧的索引数据,导致磁盘空间不足,进而触发了 ES 自身基于磁盘的分片策略。索引中 read_only_allow_delete 值为 true ,需要将其设置为 false 来解除索引只读限制。

PUT _settings 
{
    "index":{
        "blocks":{
            "read_only_allow_delete":"false"
        }
    }
}

 

扩展

关于 ES 中的磁盘分配决策策略:

cluster.routing.allocation.disk.threshold_enabled 默认为 true,设置为 false 禁用磁盘分配决定器。

cluster.routing.allocation.disk.watermark.low 控制磁盘使用率的低水位线。它的默认值为 85%,这意味着 Elasticsearch 不会将分片分配给使用了超过 85% 磁盘的节点。

cluster.routing.allocation.disk.watermark.high 控制高水位线。默认为 90%,表示 Elasticsearch 将尝试将分片从磁盘使用率超过 90% 的节点移到其他节点。

cluster.routing.allocation.disk.watermark.flood_stage 默认为 95%,这意味着在每个节点上分配了一个或多个分片的每个索引上强制执行一个只读索引块(),一旦有足够的磁盘空间可用于继续进行索引操作,则必须手动解除限制

cluster.info.update.interval 默认为 30s,Elasticsearch 应该多久检查一次集群中每个节点的磁盘使用情况。

你可能感兴趣的:(ES)