解决:ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api...

简记

使用SkyWalking用ES做存储,发现运行一段时间会提示ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];

本以为是ES所在的系统出现磁盘满了的问题,简单查看发现还有10G左右空间,占用95%的磁盘,删除后已用磁盘空间降至40%,但问题依然存在,

尝试重启单节点的ES,使用Kibana连接时同样报出了上边的提示,所以怀疑不是SkyWalking的ES客户端的问题,把目光定位在ES的索引上

经过尝试,最后使用以下命令解决,遂记之。

curl -XPUT -H "Content-Type: application/json" http://10.2.7.70:9204/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

测试环境用的单节点ES,IP请自行切换,一般使用协调节点就可以设置整个ES集群了。

转载于:https://www.cnblogs.com/hellxz/p/11532652.html

### Elasticsearch索引只读问题解决方案 当遇到 `cluster_block_exception` 错误并提示索引处于只读模式时,通常是因为磁盘水位过高触发了保护机制。以下是详细的解决办法: #### 1. 检查集群健康状态 通过以下命令可以查看当前集群的状态以及是否存在任何异常: ```bash GET /_cat/health?v ``` 如果发现某些节点的磁盘使用率较高,则可能已经触发动态设置中的阈值。 #### 2. 查看具体原因 可以通过查询特定索引来获取其被标记为只读的原因: ```bash GET /<your_index_name>/_settings ``` 这一步有助于确认是否确实存在诸如 `"index.blocks.read_only_allow_delete"` 的配置项[^1]。 #### 3. 修改动态设置解除限制 一旦确定问题是由于磁盘压力引起,可通过更新该属性来临时解决问题(注意这只是权宜之计)。执行如下API请求即可移除写入限制: ```json PUT /<your_index_name>/_settings { "index": { "blocks": { "read_only_allow_delete": null } } } ``` > **警告**: 如果不处理根本原因即高存储利用率的话, 可能很快又会回到同样的状况. 另外一种情况可能是人为设置了此参数作为维护操作的一部分; 这种情况下应该审查变更日志以了解背景信息后再做决定[^2]. #### 4. 长期优化建议 为了防止未来再次发生类似事件, 考虑采取下列措施之一或者组合方案: - 增加硬件资源比如更多的硬盘空间. - 启用分片分配策略调整数据分布平衡度. - 定期清理不需要的历史记录减少占用量. ```python # 示例Python脚本用于自动化监控和报警 import requests def check_elastic_health(url="http://localhost:9200"): response = requests.get(f"{url}/_cat/health", params={"format":"json"}) status = response.json()[0]['status'] if status != 'green': print('Cluster is not healthy.') check_elastic_health() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值