ES集群修改index副本数,报错 :index read-only / allow delete (api)
原因:
es集群数据量增速过快,导致个别es node节点磁盘使用率在%80以上,接近%90 ,由于ES新节点的数据目录data存储空间不足,导致从master主节点接收同步数据的时候失败,此时ES集群为了保护数据,会自动把索引分片index置为只读read-only.
故障处理办法:
1:集群加节点,简单粗暴;
2:降低集群index副本数量;
3:其它:增加磁盘、删除历史数据等;
我们采用方案2,作为临时应对方案,待集群可以正常数据写入后,再指向步骤 1或者3的操作彻底解决问题;
操作步骤:
1:在Kibana的开发工具Dev Tools中执行(或在服务器上通过curl工具发起PUT请求,下文同)
修改索引副本数量为1
PUT 48_hot_v1/_settings
{
"index": {
"number_of_replicas": "1"
}
}
报错如下:
api接口执行操作
{
"type": "cluster_block_exception",
"reason": "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
}
报错原因:
es磁盘已满而无法索引更多文档,则elasticsearch将切换为只读。它确保了只读查询的可用性。Elasticsearch不会自动切换回来,可以使用如下方法切换回正常模式:
curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
或者,在Kibana的开发工具Dev Tools中执行
PUT _settings
{
"index": {
"blocks": {
"read_only_allow_delete": "false"
}
}
}
验证 :查看指定索引的设置信息
GET 48_hot_v1/_settings
查找内容如下:
},
"blocks": {
"read_only_allow_delete": "false"
},
配置生效后集群开始删除index副本数据,datanode 节点磁盘空间逐步释放。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/opensource/193061.html