根据错误信息,.kibana_8.15.3_001
索引的主分片无法分配到任何节点,原因是集群中的所有节点都超出了磁盘空间高水位限制(默认 90%)。这是由 Elasticsearch 的磁盘分配阈值机制引起的,它会阻止分片分配到磁盘空间不足的节点。
关键问题点
磁盘空间不足:
- 每个节点的实际可用空间为 18.5 GB,但 Elasticsearch 要求至少有 46 GB 的可用空间(高水位限制为 90%)。
- 节点的磁盘使用率已达 95.9%。
分片分配被阻止:
decider: disk_threshold
决定拒绝分片分配。
解决方法
方法 1: 清理磁盘空间
删除不必要的索引:
查看并删除过期或不需要的索引。删除索引:
清理快照仓库中的旧快照:
如果你使用了快照和恢复(Snapshot and Restore),可以清理旧快照以释放空间。清理 Elasticsearch 数据目录:
检查数据目录中是否有多余的日志或缓存:删除不需要的临时文件。
方法 2: 增加磁盘容量
如果磁盘空间不足,可以考虑扩展存储:
- 为节点增加更多磁盘空间。
- 如果使用的是云环境(如 AWS、Azure),可以动态扩展磁盘。
方法 3: 临时降低磁盘阈值限制
如果无法立即清理磁盘空间或增加容量,可以暂时调整 Elasticsearch 的磁盘分配阈值:
降低高水位限制:
重新尝试分配分片: 强制分配分片到节点上(可能会有数据丢失风险):
方法 4: 添加新节点
添加一个新的 Elasticsearch 数据节点到集群中:
- 新节点必须具有足够的磁盘空间。
- 配置新节点加入现有集群(修改
elasticsearch.yml
中的discovery.seed_hosts
和cluster.name
)。
Elasticsearch 会自动重新分配分片到新节点上。
方法 5: 检查和优化 Kibana 索引
如果
.kibana_*
索引内容过大,可能需要优化或缩减:- 压缩
.kibana
索引:
- 压缩
删除旧版本的
.kibana_*
索引:
后续操作
完成以上步骤后,检查集群状态:
- 期望结果:
status
应变为green
。.kibana_*
索引的分片已分配。