配置项作用 #
cluster.routing.allocation.disk.reroute_interval 配置项用于控制磁盘阈值监控器触发重路由(reroute)操作的最小间隔时间。
当节点磁盘使用率超过高水位线或从低水位线恢复时,系统会触发分片重路由。此配置确保重路由操作不会过于频繁,避免系统不稳定。
配置项属性 #
- 配置路径:
cluster.routing.allocation.disk.reroute_interval - 数据类型:
TimeValue(时间值) - 默认值:
60s(60秒) - 是否可选: 是
- 是否动态: 是(支持动态更新)
配置项详解 #
工作机制 #
时间线
│
│ 检测到磁盘超过高水位线
↓
├─────────────────────→ 触发重路由
│
│ (等待 reroute_interval)
│
│ 再次检测到超过高水位线
↓
├─────────────────────→ 跳过(间隔未到)
│ 记录调试日志
│
│ (继续等待)
│
│ 距离上次重路由已超过 60 秒
↓
└─────────────────────→ 触发新的重路由
触发场景 #
重路由会在以下两种情况下触发:
- 超过高水位线: 节点磁盘使用率超过配置的高水位线(默认 90%)
- 恢复到低水位线下: 节点从高水位线恢复到低水位线(默认 85%)以下
间隔保护机制 #
每次重路由后
│
↓
设置 lastRerouteTimestamp = 当前时间
│
↓
下次检测时检查
│
├──────── 如果 (当前时间 - lastRerouteTimestamp) >= reroute_interval
│ ↓
│ 允许触发重路由
│
└──────── 如果 (当前时间 - lastRerouteTimestamp) < reroute_interval
↓
跳过,记录调试日志
配置建议 #
生产环境(标准) #
cluster.routing.allocation.disk.reroute_interval: 60s
建议: 保持默认值 60s。这是经过验证的合理间隔,平衡了响应速度和系统稳定性。
磁盘压力大的环境 #
cluster.routing.allocation.disk.reroute_interval: 30s
建议: 减少到 30s-45s。当磁盘使用率增长迅速时,需要更频繁地触发重路由以快速释放空间。
稳定环境 #
cluster.routing.allocation.disk.reroute_interval: 120s
建议: 增加到 90s-120s。当磁盘使用率变化缓慢时,可以延长间隔以减少集群元数据更新频率。
小型集群 #
cluster.routing.allocation.disk.reroute_interval: 90s
建议: 增加到 90s。小型集群中重路由操作影响相对较大,适当延长间隔可以减少对集群的影响。
代码示例 #
easysearch.yml 配置 #
cluster:
routing:
allocation:
disk:
reroute_interval: 60s
watermark:
low: 85%
high: 90%
动态更新配置 #
# 通过 API 动态更新重路由间隔
PUT _cluster/settings
{
"transient": {
"cluster.routing.allocation.disk.reroute_interval": "45s"
}
}
快速响应配置 #
cluster:
routing:
allocation:
disk:
reroute_interval: 30s # 更快响应磁盘问题
watermark:
low: 80%
high: 85%
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
cluster.routing.allocation.disk.watermark.low | 磁盘低水位线 | 85% |
cluster.routing.allocation.disk.watermark.high | 磁盘高水位线 | 90% |
cluster.routing.allocation.disk.threshold_enabled | 是否启用磁盘阈值检查 | true |
配置配合 #
磁盘使用率超过高水位线
↓
触发重路由(设置 lastRerouteTimestamp)
↓
等待 reroute_interval
↓
如果仍超过高水位线 → 再次触发重路由
如果已低于低水位线 → 触发恢复重路由
间隔设置指南 #
| 环境 | 推荐间隔 | 说明 |
|---|---|---|
| 标准 | 60s | 默认值,适合大多数场景 |
| 磁盘压力大 | 30-45s | 快速响应,防止磁盘满 |
| 磁盘稳定 | 90-120s | 减少不必要的重路由 |
| 小集群 | 90s | 减少对集群的影响 |
性能与稳定性权衡 #
| reroute_interval 设置 | 优点 | 缺点 |
|---|---|---|
| 较短(30s) | 快速响应磁盘问题 | 频繁重路由可能影响集群稳定性 |
| 中等(60s) | 平衡响应速度和稳定性 | 标准设置 |
| 较长(120s) | 减少集群元数据更新频率 | 磁盘问题响应较慢 |
调试日志 #
当重路由因间隔未到而被跳过时,会记录调试日志:
[DEBUG] [disk-throttle] skipping reroute as reroute interval (60s) has not elapsed since last reroute
可以通过设置日志级别为 DEBUG 来查看这些信息。
注意事项 #
动态更新: 此配置支持动态更新,修改后立即生效。
频率控制: 重路由操作会更新集群状态,过于频繁会影响集群性能。
与水位线配合: 此配置与磁盘水位线配置协同工作,共同控制分片迁移行为。
监控建议: 监控磁盘使用率和重路由事件频率,根据实际情况调整间隔。
初始触发: 首次检测到超过高水位线时会立即触发重路由,不受此间隔限制。
恢复场景: 当节点从高水位线恢复到低水位线以下时,也会检查此间隔。





