前言 |
在前面的章节中, 我讲了 ES 从 6.8 版本开始默认免费支持索引生命周期管理策略的实际应用, 那么今天我们继续深化讲解一下这个架构的应用, 主要将 ILM 结合 Rollover 实现索引的自动滚动生成并根据属性自动管理集群索引.
一, ILM 到底怎么用?
索引生命周期管理策略是一组规则的总称, 它需要应用到某个索引上或者某个模板上, 这样, 当 ES 集群中的索引产生 ES 的时候就会根据模板中的策略匹配规则, 而这些规则中又包含索引生命周期管理策略. 自然, 这些策略就能被作用到这些索引上. 大致流向图如下:
ILM 动态示意图
因此, 要想完整的执行整个流程, 就需要下面的三步:
1, 创建 ILM 策略, 可以图形化操作也可以 API 操作
2, 创建基于给定索引的模板, 并关联 ILM 策略.
3, 设定 Rollover 参数, 自动滚动更新索引
二, ILM 实战
集群环境: ES6.8.2 冷热集群环境下 ILM 的配置,
要求: 实现 HOT 节点上的索引 2 小时后自动移动到 warm 节点, 热节点上文档超过设定数 8 个自动 rollover 到新索引.
开始操作:
第一步, 创建一个索引生命周期策略, 并命名 ELK.
创建 ILM 策略
创建 ILM 策略 2
第二步: 创建模板, 并关联策略. 此策略跟上面创建的策略须一致.
创建模板
需要指出的是这里的 rollover_alias 别名: 要注意, 这个别名非常重要, Rollover 功能能否正常使用都是根据这个别名来发挥作用的.
第三步: 配置 rollover 参数
Rollover 功能是结合索引别名来实现的. 所以, 我们可以这样操作:
配置 Rollover 参数
解释: Rollover 参数有一定的格式要求, timeseries-XXXXX1 格式是必须的格式, 这里的别名必须与上面模板定义的别名一致. 因为等会写入是针对这个别名进行操作.
那么这样, 我们的三步走流程就已经走完. ILM 流程就这么简单
三, 结果验证
这里为了方便验证, 我随意加入些数据, 然后将 ILM 策略生效时间改成 1 秒. 如下:
写入几十条数据:
插入数据
我们看结果如何? 发现索引根据先前设置自动滚动更新了. 如下图所示:
那么属性有没有自动转移呢? 默认是 HOT,2 小时后, 会不会改变呢? 发现是成功的.
那么以上就说明了, 索引到 ES 集群后会默认匹配模板的规则匹配 ILM, 然后 2 小时后会自动迁移到 warm 节点. 那么这里有一个疑问? 为什么这个索引创建很久了, 节点属性还是 HOT 呢?
因为它的文档个数还没到 8 个, 只有 3 个, 还没触发 Rollover. 等它触发 Rollover 的时候再过 2 小时, 它就会变成 Warm 了.
四, 总结
那么今天我们结合图形操作 + API 的方式实现了 ILM 在冷热集群下的综合应用. 实际这个方法也应用的非常多. 希望朋友们都动手操作一下. 后面, 我们将讲解用 API 创建 ILM 在单集群模式下的应用. 好的. 本节就到这里.
来源: https://www.qcloud.com/developer/article/1672954