/ 11浏览

Elasticsearch集群拒绝请求:索引磁盘使用超限

这是一个典型的Elasticsearch集群因为磁盘空间不足而触发的保护机制,导致索引被设置为只读模式(read-only-allow-delete​)。

以下是解决这个问题的步骤:

  1. 释放磁盘空间:您需要清理服务器上的磁盘空间,删除不必要的旧索引或者日志文件,以降低磁盘使用率。可以使用以下命令删除不需要的索引:
DELETE /index_name
  1. 增加磁盘容量:如果清理磁盘空间后仍然无法解决问题,您可能需要对服务器进行扩容,增加更多的磁盘空间。

  2. 临时调整磁盘水位线:作为临时解决方案,您可以提高磁盘水位线的阈值,以允许写入操作继续进行,但这并不是长久之计。您可以使用以下命令:

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.disk.watermark.low": "90%",
    "cluster.routing.allocation.disk.watermark.high": "95%",
    "cluster.routing.allocation.disk.watermark.flood_stage": "97%"
  }
}

然后,取消索引的只读设置:

PUT */_settings?expand_wildcards=all
{
  "index.blocks.read_only_allow_delete": null
}
  1. 永久解决方案:在增加了磁盘空间或者删除了足够的数据之后,您应该重置或重新配置磁盘水位线到默认值:
PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.disk.watermark.low": null,
    "cluster.routing.allocation.disk.watermark.high": null,
    "cluster.routing.allocation.disk.watermark.flood_stage": null
  }
}

请按照这些步骤操作,以解决您的Elasticsearch集群问题。如果问题仍然存在,可能需要进一步的诊断和操作。