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

配置项作用 #

index_lifecycle_management.job_interval 配置项用于控制索引生命周期管理(ILM)调度器检查并执行生命周期任务的频率

ILM 是 Easysearch 中用于自动管理索引生命周期的功能,可以自动执行索引的滚动(rollover)、收缩(shrink)、删除(delete)等操作。

配置项属性 #

  • 配置路径: index_lifecycle_management.job_interval
  • 数据类型: TimeValue(时间值)
  • 默认值: 5m(5分钟)
  • 是否可选: 是
  • 作用域: NodeScope(节点级别)
  • 动态更新: 是(支持动态更新)

配置项详解 #

工作机制 #

ILM 任务调度流程

调度器启动
    │
    ↓
等待 job_interval(5分钟)
    │
    ↓
扫描所有托管索引
    │
    ↓
检查每个索引的生命周期阶段
    │
    ├──────── Hot 阶段
    │              ↓
    │         检查 rollover 条件
    │              │
    │         ├─── 条件满足 ──→ 执行 rollover
    │         │
    │         └─── 条件不满足 ──→ 继续
    │
    ├──────── Warm 阶段
    │              ↓
    │         执行收缩、降级操作
    │
    ├──────── Cold 阶段
    │              ↓
    │         执行冻结、归档操作
    │
    └──────── Delete 阶段
                   ↓
              执行删除操作

生命周期阶段转换 #

热-温-冷架构的自动转换

时间推移 ──────────────────────────────→

Hot (热数据)
    │ age < 7d, size < 50GB
    │
    ↓ job_interval 检查
    │
    ↓ 条件满足
    │
Warm (温数据)
    │ age >= 7d
    │
    ↓ job_interval 检查
    │
    ↓ 条件满足
    │
Cold (冷数据)
    │ age >= 30d
    │
    ↓ job_interval 检查
    │
    ↓ 条件满足
    │
Delete (删除)
    │ age >= 365d
    │
    ↓
索引被删除

与 sweep_period 的区别 #

两个配置的区别

job_interval(作业执行间隔):
- 作用: 控制策略执行的检查频率
- 对象: 每个托管索引的策略条件
- 目的: 检查并执行生命周期转换
- 默认: 5 分钟


sweep_period(协调器清理周期):
- 作用: 控制协调器的清理操作
- 对象: 托管索引的整体状态
- 目的: 检测异常、重建作业、状态同步
- 默认: 5 分钟(旧版 10 分钟)

配置建议 #

生产环境(默认) #

index_lifecycle_management:
  job_interval: 5m  # 默认值

建议: 保持默认值 5m。适用于大多数生产环境。

高频操作场景 #

index_lifecycle_management:
  job_interval: 1m  # 1 分钟

建议: 减少到 1-3m。当需要更快速响应策略变化时使用。

低负载要求 #

index_lifecycle_management:
  job_interval: 15m  # 15 分钟

建议: 增加到 10-15m。当希望减少调度开销时使用。

大规模集群 #

index_lifecycle_management:
  job_interval: 10m  # 10 分钟
  coordinator:
    sweep_period: 30m

建议: 托管索引很多时增加间隔。

代码示例 #

easysearch.yml 基础配置 #

index_lifecycle_management:
  job_interval: 5m

完整 ILM 配置 #

index_lifecycle_management:
  job_interval: 5m
  coordinator:
    sweep_period: 5m

快速响应配置 #

index_lifecycle_management:
  job_interval: 1m
  coordinator:
    sweep_period: 2m

动态更新配置 #

PUT /_cluster/settings
{
  "transient": {
    "index_lifecycle_management.job_interval": "10m"
  }
}

相关配置 #

配置项作用默认值
index_lifecycle_management.job_interval作业执行间隔5m
index_lifecycle_management.coordinator.sweep_period协调器清理周期5m

ILM 策略示例 #

典型的日志管理策略

Hot 阶段 (热数据):
- 条件: 索引大小 > 50GB 或 age > 1d
- 操作: rollover 到新索引
- 持续时间: 约 1 天

Warm 阶段 (温数据):
- 条件: age > 7d
- 操作: 设置为只读、force_merge
- 持续时间: 约 23 天

Cold 阶段 (冷数据):
- 条件: age > 30d
- 操作: 冻结索引、移动到冷存储
- 持续时间: 约 335 天

Delete 阶段 (删除):
- 条件: age > 365d
- 操作: 删除索引
- 持续时间: 永久

job_interval = 5m:
每 5 分钟检查一次这些条件是否满足

性能影响分析 #

job_interval 设置优点缺点
1m快速响应策略变化高调度开销
5m(默认)平衡性能和响应标准设置
15m低调度开销响应较慢
30m最小开销响应很慢

资源消耗对比 #

假设集群有 100 个托管索引

job_interval = 1m:
- 每小时检查次数: 60
- 每次扫描: 100 个索引
- 总检查: 6,000 次/小时
- CPU 开销: 高 ❌


job_interval = 5m:
- 每小时检查次数: 12
- 每次扫描: 100 个索引
- 总检查: 1,200 次/小时
- CPU 开销: 中等 ✅


job_interval = 15m:
- 每小时检查次数: 4
- 每次扫描: 100 个索引
- 总检查: 400 次/小时
- CPU 开销: 低 ✅

使用场景 #

推荐使用默认值的场景 #

  • 标准日志管理: 按天滚动的日志索引
  • 常规业务: 不需要极快响应
  • 稳定环境: 集群负载正常

推荐减少间隔的场景 #

  • 快速 rollover: 需要快速滚动索引
  • 高频数据: 数据增长非常快
  • 时间敏感: 策略转换时间要求严格

推荐增加间隔的场景 #

  • 大规模集群: 托管索引数量很多
  • 负载敏感: 希望减少调度开销
  • 长周期策略: 策略转换以天为单位

常见 ILM 操作 #

ILM 支持的操作

Rollover (滚动):
- 创建新索引
- 将别名指向新索引
- 条件: 大小、年龄、文档数

Shrink (收缩):
- 减少主分片数
- 优化索引结构
- 用于旧数据

Force Merge (强制合并):
- 合并段文件
- 释放空间
- 提升查询性能

Freeze (冻结):
- 降低内存占用
- 仍可查询
- 写入开销最小

Delete (删除):
- 删除整个索引
- 释放存储空间
- 清理过期数据

注意事项 #

  1. 与 sweep_period 协调: 两个配置需要合理搭配。

  2. 动态更新: 支持动态更新,修改后立即生效。

  3. 策略条件: 确保策略中的条件设置合理。

  4. 资源监控: 监控 ILM 任务对集群资源的影响。

  5. 测试验证: 新策略应在测试环境验证后再部署到生产。

  6. 时间精度: 操作执行的延迟最多为 job_interval 时间。

  7. 大批量操作: 避免大量索引同时触发策略转换。

  8. 日志保留: 确保删除策略符合数据保留要求。

  9. 备份策略: 重要数据删除前应做好备份。

  10. 版本兼容: 确保集群版本支持使用的 ILM 功能。