ElasticSearch6.8

ElasticSearch6.8 插入数据时 报错blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];

canal-adapter报错提示:

 ERROR c.a.o.canal.adapter.launcher.loader.CanalAdapterWorker - ES sync commit error ElasticsearchException[Elasticsearch exception [type=cluster_block_exception, reason=blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];]]
java.lang.RuntimeException: ES sync commit error ElasticsearchException[Elasticsearch exception [type=cluster_block_exception, reason=blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];]]
        at com.alibaba.otter.canal.client.adapter.es6x.support.ESConnection$ES6xBulkResponse.processFailBulkResponse(ESConnection.java:480) ~[na:na]

一般导致的原因:

ES 认为磁盘存储百分比低于阈值时自动将其转为只读模式。

由于ES新节点的数据目录data存储空间不足,导致从master主节点接收同步数据的时候失败,此时ES集群为了保护数据,会自动把索引分片index置为只读read-only。

一般的临时解决方案:

1: 调用api查看es 节点状态是否是可读的状态
get http://localhost:9200/索引名称/_settings?pretty
{
    "xzb_goods": {
        "settings": {
            "index": {
                "number_of_shards": "1",
                "blocks": {
                    "read_only_allow_delete": "true"
                },
                "provided_name": "xzb_goods",
                "creation_date": "1611971241260",
                "number_of_replicas": "0",
                "uuid": "po0pKmdSSaSoIodNseKk_Q",
                "version": {
                    "created": "6080099"
                }
            }
        }
    }
}

其中  read_only_allow_delete = true就是es当前节点值允许读操作;由此导致了无法再向其中插入文档。
2:清理磁盘,使占用低于95%,需要手动把被锁的索引的只读模式关闭。
curl -XPUT 'localhost:9200/index_name/_settings'  -H 'Content-Type: application/json' -d '{"index.blocks.read_only_allow_delete": null}'
返回成功:
{"acknowledged":true}
再去查看配置信息:
{
  "index_name" : {
    "settings" : {
      "index" : {
        "creation_date" : "1516454800021",
        "number_of_shards" : "5",
        "number_of_replicas" : "1",
        "uuid" : "6WjhtrARTOOjsEUaOqNzlw",
        "version" : {
          "created" : "6010199"
        },
        "provided_name" : "index_name"
      }
    }
  }
}

ok,到此就可以正常同步数据到es服务;
3:生产环境中es的索引数据最好单独存放,不要放于系统盘中。

可以通过elasticsearch.yml配置来修改索引存放磁盘位置;

path.data 属性配置路径;

4:调整自动锁阀值,定时做检测。(官方文档有详细的介绍)

官方地址(https://www.elastic.co/guide/en/elasticsearch/reference/current/disk-allocator.html)

将低水位标记更新为至少100 GB可用空间,将高水位标记更新为至少50 GB可用空间,将洪水级水印更新为10 GB可用空间,并每分钟更新有关群集的信息的示例

PUT _cluster / settings 

{ “ transient” :{ “ cluster.routing.allocation.disk.watermark.low” :“ 100gb” ,“ cluster.routing.allocation.disk.watermark.high” :“ 50gb” ,“ cluster.routing .allocation.disk.watermark.flood_stage“ :” 10gb“ ,” cluster.info.update.interval“ :” 1m“ } } 


详情自己按照需求配置
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值