--- title: "ILM 协调器清理周期配置" date: 2026-01-24 lastmod: 2026-01-24 description: "index_lifecycle_management.coordinator.sweep_period 配置项用于控制 ILM 协调器执行后台清理任务的时间间隔。" tags: ["索引生命周期管理", "ILM", "协调器", "清理周期"] summary: "配置项作用 # 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` 配置项用于控制**索引生命周期管理(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 管理状态: 旧索引 │ ↓ 协调器检测到不一致 │ ↓ 同步状态 ✅ ``` ## 配置建议 ## 生产环境(默认) ```yaml index_lifecycle_management: coordinator: sweep_period: 5m # 默认值 ``` **建议**: 保持默认值 `5m`。适用于大多数中小规模集群。 ## 高负载集群 ```yaml index_lifecycle_management: coordinator: sweep_period: 15m # 15 分钟 ``` **建议**: 增加到 `10-15m`。减少协调器负担,降低系统负载。 ## 大规模集群 ```yaml index_lifecycle_management: coordinator: sweep_period: 30m # 30 分钟 ``` **建议**: 增加到 `20-30m`。当托管索引数量很大时使用。 ## 快速响应要求 ```yaml index_lifecycle_management: coordinator: sweep_period: 1m # 1 分钟 ``` **建议**: 减少到 `1-2m`。需要快速状态同步和恢复时使用。 ## 代码示例 ## easysearch.yml 基础配置 ```yaml index_lifecycle_management: coordinator: sweep_period: 5m ``` ## 完整 ILM 配置 ```yaml index_lifecycle_management: coordinator: sweep_period: 5m job_interval: 5m ``` ## 动态更新配置 ```json PUT /_cluster/settings { "transient": { "index_lifecycle_management.coordinator.sweep_period": "10m" } } ``` ## 大规模集群配置 ```yaml 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. 集群状态同步 ├── 同步集群元数据 ├── 更新索引管理状态 └── 清理过期状态 ``` ## 注意事项 1. **仅管理节点生效**: 此配置只在集群管理节点上生效。 2. **动态更新**: 支持动态更新,修改后立即生效,无需重启。 3. **与 job_interval 配合**: 协调器清理周期和作业执行间隔需要协调配置。 4. **负载平衡**: 过短的清理周期会增加系统负载。 5. **恢复延迟**: 过长的清理周期会导致异常恢复延迟。 6. **监控建议**: 监控协调器的执行频率和资源消耗。 7. **大规模集群**: 大量托管索引时需要适当增加清理周期。 8. **版本变化**: 新版本默认值从 10 分钟改为 5 分钟。 9. **最小间隔**: 系统有 20ms 的缓冲时间,避免过于频繁的清理。 10. **故障转移**: 当管理节点变更时,新节点会自动接管清理任务。