📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

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_periodISM 协调器清理周期(旧版)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. 故障转移: 当管理节点变更时,新节点会自动接管清理任务。