根据错误信息,.kibana_8.15.3_001 索引的主分片无法分配到任何节点,原因是集群中的所有节点都超出了磁盘空间高水位限制(默认 90%)。这是由 Elasticsearch 的磁盘分配阈值机制引起的,它会阻止分片分配到磁盘空间不足的节点。


关键问题点

  1. 磁盘空间不足

    • 每个节点的实际可用空间为 18.5 GB,但 Elasticsearch 要求至少有 46 GB 的可用空间(高水位限制为 90%)。
    • 节点的磁盘使用率已达 95.9%
  2. 分片分配被阻止

    • decider: disk_threshold 决定拒绝分片分配。

解决方法

方法 1: 清理磁盘空间

  1. 删除不必要的索引
    查看并删除过期或不需要的索引。

    bash
    curl -X GET "http://localhost:9200/_cat/indices?v&s=index"

    删除索引:

    bash
    curl -X DELETE "http://localhost:9200/index_name"
  2. 清理快照仓库中的旧快照
    如果你使用了快照和恢复(Snapshot and Restore),可以清理旧快照以释放空间。

  3. 清理 Elasticsearch 数据目录
    检查数据目录中是否有多余的日志或缓存:

    bash
    du -sh /var/lib/elasticsearch

    删除不需要的临时文件。


方法 2: 增加磁盘容量

如果磁盘空间不足,可以考虑扩展存储:

  • 为节点增加更多磁盘空间。
  • 如果使用的是云环境(如 AWS、Azure),可以动态扩展磁盘。

方法 3: 临时降低磁盘阈值限制

如果无法立即清理磁盘空间或增加容量,可以暂时调整 Elasticsearch 的磁盘分配阈值:

  1. 降低高水位限制

    bash
    curl -X PUT "http://localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d '{ "transient": { "cluster.routing.allocation.disk.watermark.high": "95%", "cluster.routing.allocation.disk.watermark.flood_stage": "98%", "cluster.info.update.interval": "1m" } }'
  2. 重新尝试分配分片: 强制分配分片到节点上(可能会有数据丢失风险):

    bash
    curl -X POST "http://localhost:9200/_cluster/reroute" -H 'Content-Type: application/json' -d '{ "commands": [ { "allocate_stale_primary": { "index": ".kibana_8.15.3_001", "shard": 0, "node": "es01", "accept_data_loss": true } } ] }'

方法 4: 添加新节点

  1. 添加一个新的 Elasticsearch 数据节点到集群中:

    • 新节点必须具有足够的磁盘空间。
    • 配置新节点加入现有集群(修改 elasticsearch.yml 中的 discovery.seed_hostscluster.name)。
  2. Elasticsearch 会自动重新分配分片到新节点上。


方法 5: 检查和优化 Kibana 索引

  1. 如果 .kibana_* 索引内容过大,可能需要优化或缩减:

    • 压缩 .kibana 索引:
      bash
      curl -X POST "http://localhost:9200/.kibana_8.15.3_001/_forcemerge?max_num_segments=1"
  2. 删除旧版本的 .kibana_* 索引:

    bash
    curl -X DELETE "http://localhost:9200/.kibana_*"

后续操作

完成以上步骤后,检查集群状态:

bash
curl -X GET "http://localhost:9200/_cluster/health?pretty"

  • 期望结果
    • status 应变为 green
    • .kibana_* 索引的分片已分配。

点赞(365) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部