配置项作用 #
cluster.routing.allocation.disk.watermark.high 配置项用于设置磁盘使用率的高水位线。
当一个节点的磁盘使用率超过此阈值时:
- 不允许在该节点上分配新的分片
- 现有的分片会被迁移到其他节点
这是防止磁盘空间被完全占用的关键保护机制。
配置项属性 #
- 配置路径:
cluster.routing.allocation.disk.watermark.high - 数据类型:
string(百分比或字节值) - 默认值:
90% - 是否可选: 是
- 是否动态: 是(支持动态更新)
配置项详解 #
工作机制 #
磁盘使用率监控
0% ─────────────────────────────────── 100%
│ │
│ │ │
│ 低水位线 │
│ (默认 85%) │
│ │ │
│ │ 高水位线 │
│ │ (默认 90%) │
│ │ │ │
├──────────────┼────┼───────────────────┤
安全区 警告区 危险区
│ │ │ │
└──────────────┴────┴───────────────────┘
↓ ↓ ↓
正常分配 不分配 迁移分片
新分片
决策逻辑 #
场景 1:节点已超过高水位线 #
节点磁盘使用率: 92% (> 90%)
新分片分配请求
↓
❌ 拒绝分配
现有分片
↓
触发迁移到其他节点
场景 2:分配会导致超过高水位线 #
节点当前使用率: 88%
新分片大小: 3GB
节点可用空间: 2.4GB
分配后预期使用率: 91% (> 90%)
新分片分配请求
↓
❌ 拒绝分配(会导致超过高水位线)
场景 3:节点在高水位线以下 #
节点磁盘使用率: 87% (< 90%)
新分片分配请求
↓
✅ 允许分配
配置建议 #
生产环境(标准) #
cluster.routing.allocation.disk.watermark.high: 90%
建议: 保持默认值 90%。这是经过验证的标准配置,平衡了磁盘利用率和安全性。
高磁盘利用率需求 #
cluster.routing.allocation.disk.watermark.high: 95%
建议: 可以提高到 93%-95%。当需要最大化磁盘利用率时使用,但需要更密切的监控。
保守策略 #
cluster.routing.allocation.disk.watermark.high: 85%
建议: 降低到 82%-85%。当磁盘空间充裕且更关注安全时使用。
配合低水位线 #
cluster:
routing:
allocation:
disk:
watermark:
low: 85% # 低水位线
high: 90% # 高水位线(必须高于低水位线)
代码示例 #
easysearch.yml 配置 #
cluster:
routing:
allocation:
disk:
watermark:
high: 90%
low: 85%
flood_stage: 95%
使用字节值配置 #
cluster:
routing:
allocation:
disk:
watermark:
high: 100gb # 当剩余空间小于100GB时触发
low: 150gb
混合配置 #
cluster:
routing:
allocation:
disk:
watermark:
high: 90% # 使用百分比
low: 500mb # 使用字节值(不推荐混合使用)
动态更新 #
# 通过 API 动态更新高水位线
PUT _cluster/settings
{
"transient": {
"cluster.routing.allocation.disk.watermark.high": "92%"
}
}
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
cluster.routing.allocation.disk.watermark.low | 磁盘低水位线 | 85% |
cluster.routing.allocation.disk.watermark.flood_stage | 磁盘洪水阶段水位线 | 95% |
cluster.routing.allocation.disk.threshold_enabled | 是否启用磁盘阈值检查 | true |
水位线关系 #
低水位线 < 高水位线 < 洪水水位线
85% < 90% < 95%
配置时必须满足这个顺序,否则会报错
支持的格式 #
| 格式类型 | 示例 | 说明 |
|---|---|---|
| 百分比 | 90%, 85.5% | 基于磁盘总量的百分比 |
| 字节值 | 100gb, 500mb | 绝对字节数 |
| 字节值 | 50GB, 20TB | 大小写均可 |
行为对比 #
| 磁盘使用率 | 低于低水位线 | 低水位线到高水位线 | 超过高水位线 |
|---|---|---|---|
| 新分片分配 | ✅ 允许 | ❌ 不允许 | ❌ 不允许 |
| 现有分片 | ✅ 保留 | ✅ 保留 | ❌ 迁移 |
注意事项 #
必须高于低水位线: 配置的高水位线必须高于低水位线,否则无法生效。
动态更新: 此配置支持动态更新,修改后立即生效。
字节值限制: 使用字节值时,确保各节点磁盘大小相近,否则行为不一致。
分片迁移成本: 超过高水位线后触发分片迁移会消耗网络和IO资源。
监控建议: 建议设置监控,在接近高水位线时提前告警。
洪水阶段: 当超过洪水阶段水位线(默认95%)时,所有索引的写入操作将被阻止。
单节点集群: 在单节点集群中,如果
enable_for_single_data_node为 false,此配置可能不生效。





