配置项作用 #
index_lifecycle_management.coordinator.sweep_period 配置项用于控制索引生命周期管理(ILM)协调器执行后台清理任务的时间间隔。
协调器会定期检查所有托管索引的状态,确保索引按照预定义的策略正确执行,并在出现异常时自动恢复。
配置项属性 #
- 配置路径:
index_lifecycle_management.coordinator.sweep_period - 数据类型:
TimeValue(时间值) - 默认值:
5m(5分钟) - 是否可选: 是
- 作用域: NodeScope(节点级别)
- 动态更新: 是(支持动态更新)
配置项详解 #
工作机制 #
ILM 协调器清理流程
调度器启动
│
↓
等待 sweep_period(5分钟)
│
↓
执行完整清理操作
│
├──────── 扫描所有托管索引
│ ↓
│ 检查索引状态
│ ↓
│ 验证策略执行情况
│ │
│ ├─── 正常 ──→ 继续
│ │
│ └─── 异常 ──→ 尝试恢复
│
├──────── 重建失败的作业
│
├──────── 同步集群状态
│
└──────── 等待下次清理
速率限制机制 #
清理执行控制
上次清理时间 ──────────→ 当前时间
│ │
└─────── elapsedTime ────┘
delta = sweep_period - elapsedTime
if (delta < 20ms) {
// 允许执行清理
执行清理操作
} else {
// 跳过,时间未到
等待下次调度
}
目的: 确保最多每个 sweep period 执行一次完整清理
自愈机制 #
异常场景的自动恢复
场景 1: 作业创建失败
ILM 策略应用到索引
│
↓
ManagedIndexConfig 作业创建失败 ❌
│
↓
协调器检测到失败(下次清理时)
│
↓
重新创建作业 ✅
场景 2: 状态不同步
索引实际状态: 已 rollover
管理状态: 旧索引
│
↓
协调器检测到不一致
│
↓
同步状态 ✅
配置建议 #
生产环境(默认) #
index_lifecycle_management:
coordinator:
sweep_period: 5m # 默认值
建议: 保持默认值 5m。适用于大多数中小规模集群。
高负载集群 #
index_lifecycle_management:
coordinator:
sweep_period: 15m # 15 分钟
建议: 增加到 10-15m。减少协调器负担,降低系统负载。
大规模集群 #
index_lifecycle_management:
coordinator:
sweep_period: 30m # 30 分钟
建议: 增加到 20-30m。当托管索引数量很大时使用。
快速响应要求 #
index_lifecycle_management:
coordinator:
sweep_period: 1m # 1 分钟
建议: 减少到 1-2m。需要快速状态同步和恢复时使用。
代码示例 #
easysearch.yml 基础配置 #
index_lifecycle_management:
coordinator:
sweep_period: 5m
完整 ILM 配置 #
index_lifecycle_management:
coordinator:
sweep_period: 5m
job_interval: 5m
动态更新配置 #
PUT /_cluster/settings
{
"transient": {
"index_lifecycle_management.coordinator.sweep_period": "10m"
}
}
大规模集群配置 #
index_lifecycle_management:
coordinator:
sweep_period: 30m
job_interval: 10m
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
index_lifecycle_management.coordinator.sweep_period | 协调器清理周期 | 5m |
index_lifecycle_management.job_interval | 作业执行间隔 | 5m |
index_state_management.coordinator.sweep_period | ISM 协调器清理周期(旧版) | 10m |
性能影响分析 #
| sweep_period 设置 | 优点 | 缺点 |
|---|---|---|
| 1m | 快速检测和恢复 | 高系统负载 |
| 5m(默认) | 平衡负载和响应 | 标准设置 |
| 15m | 低系统负载 | 恢复较慢 |
| 30m | 最小负载 | 恢复很慢 |
大集群的资源消耗 #
假设集群有 1000 个托管索引
sweep_period = 1m:
- 每小时清理次数: 60
- 每次扫描: 1000 个索引
- 总操作: 60,000 次/小时
- CPU 开销: 高 ❌
sweep_period = 5m:
- 每小时清理次数: 12
- 每次扫描: 1000 个索引
- 总操作: 12,000 次/小时
- CPU 开销: 中等 ✅
sweep_period = 30m:
- 每小时清理次数: 2
- 每次扫描: 1000 个索引
- 总操作: 2,000 次/小时
- CPU 开销: 低 ✅
使用场景 #
推荐使用默认值的场景 #
- 标准生产环境: 中小规模集群
- 稳定运行: 系统负载正常
- 平衡需求: 需要平衡响应速度和负载
推荐增加周期的场景 #
- 高负载集群: CPU 或内存资源紧张
- 大规模部署: 托管索引数量很多
- 非实时要求: 状态同步延迟可以接受
推荐减少周期的场景 #
- 快速恢复: 需要快速检测和恢复异常
- 关键业务: 索引状态管理非常关键
- 小规模集群: 托管索引数量少
清理操作详解 #
协调器执行的操作
1. 状态一致性检查
├── 检查托管索引的当前状态
├── 验证状态是否正确
└── 检测状态不一致
2. 作业健康检查
├── 验证 ManagedIndexConfig 作业存在
├── 检查作业是否正常运行
└── 重建失败的作业
3. 策略执行验证
├── 检查策略是否按预期执行
├── 验证转换条件是否满足
└── 触发需要的操作
4. 集群状态同步
├── 同步集群元数据
├── 更新索引管理状态
└── 清理过期状态
注意事项 #
仅管理节点生效: 此配置只在集群管理节点上生效。
动态更新: 支持动态更新,修改后立即生效,无需重启。
与 job_interval 配合: 协调器清理周期和作业执行间隔需要协调配置。
负载平衡: 过短的清理周期会增加系统负载。
恢复延迟: 过长的清理周期会导致异常恢复延迟。
监控建议: 监控协调器的执行频率和资源消耗。
大规模集群: 大量托管索引时需要适当增加清理周期。
版本变化: 新版本默认值从 10 分钟改为 5 分钟。
最小间隔: 系统有 20ms 的缓冲时间,避免过于频繁的清理。
故障转移: 当管理节点变更时,新节点会自动接管清理任务。





