Menu Close

12.5.5. 已达到 Elasticsearch 节点磁盘的洪水水位线

Elasticsearch 在每个具有这两个条件的索引中强制使用只读索引块:

  • 为节点分配一个或多个分片。
  • 一个个或多个磁盘超过 flood stage

故障排除

  1. 检查 Elasticsearch 节点的磁盘空间。

    for pod in `oc -n openshift-logging get po -l component=elasticsearch -o jsonpath='{.items[*].metadata.name}'`; do echo $pod; oc -n openshift-logging exec -c elasticsearch $pod -- df -h /elasticsearch/persistent; done

    检查 nodes.node_name.fs 字段,以确定该节点上的可用磁盘空间。

  2. 如果使用的磁盘百分比超过 95%,这表明该节点已跨过洪水水位线。对于在此特定节点上分配的分片,写入被阻止。
  3. 尝试增加所有节点上的磁盘空间。
  4. 如果无法增加磁盘空间,请尝试向集群添加新数据节点。
  5. 如果添加新数据节点有问题,请减少集群冗余策略总数。

    1. 检查当前的 redundancyPolicy

      oc -n openshift-logging get es elasticsearch -o jsonpath='{.spec.redundancyPolicy}'
      注意

      如果使用 ClusterLogging CR,请输入:

      oc -n openshift-logging get cl -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'
    2. 如果集群 redundancyPolicy 大于 SingleRedundancy,将其设置为 SingleRedundancy 并保存这个更改。
  6. 如果前面的步骤没有解决这个问题,请删除旧的索引。

    1. 检查 Elasticsearch 上所有索引的状态。

      oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- indices
    2. 确定可以删除的旧索引。
    3. 删除索引。

      oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=<elasticsearch_index_name> -X DELETE
  7. 继续释放和监控磁盘空间,直到使用的磁盘空间下降到 90% 以下。然后,取消阻塞写入此特定节点。

    oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_all/_settings?pretty -X PUT -d '{"index.blocks.read_only_allow_delete": null}'

其他资源