0%

变为只读问题

变为只读问题

跑在线上的elasticsearch服务突然不可以新增/修改数据了,但是查询是正常的

看了一下日志发现

1
flood stage disk watermark [95%] exceeded on [oeTRcb8iT_Kwo-s-GF4Yww][oeTRcb8][/var/lib/elasticsearch/nodes/0] free: 1.9gb[4%], all indices on this node will be marked read-only

这是由于磁盘空间不足,导致Elasticsearch触发磁盘保护,强制将所有索引设置成了只读状态

由于不是云服务器,不能进行立马扩容,删除掉一些无用的数据后,先将磁盘的阈值关掉,之后在进行磁盘扩容

1
2
3
4
5
6
PUT  192.168.1.220:9200/_cluster/settings
{
"persistent": {
"cluster.routing.allocation.disk.threshold_enabled": "false"
}
}

可用参数有

  • cluster.routing.allocation.disk.threshold_enabled:是否开启磁盘空间的阈值,默认为true
  • cluster.routing.allocation.disk.watermark.low:控制磁盘使用率的低水位,默认是85%,当一个节点的磁盘空间使用率超过85%,就不会给该节点分配新的shard
  • cluster.routing.allocation.disk.watermark.high:控制磁盘使用率的高水位,默认是90%,当一个节点的磁盘空间使用率超过90%,就会将该节点的部分shard转移到其他节点上
  • cluster.routing.allocation.disk.watermark.flood_stage:洪水水位线,默认为95%,当一个节点的磁盘空间使用率超过95%,就会把所有索引设为只读。这是最后一个保护措施,索引的只读状态必须通过人工手动解除
  • cluster.info.update.interval:检查磁盘使用率的频率,默认30s

然后手动关掉索引的只读状态

1
2
3
4
PUT  192.168.1.220:9200/_all/_settings
{
"index.blocks.read_only_allow_delete": null
}

磁盘扩容后将磁盘的阈值打开

1
2
3
4
5
6
PUT  192.168.1.220:9200/_cluster/settings
{
"persistent": {
"cluster.routing.allocation.disk.threshold_enabled": "true"
}
}

欢迎关注我的其它发布渠道