本文介绍在Elasticsearch集群上,通过生命周期管理ILM(Index Lifecycle Management)功能,实现冷热数据分离的实践流程。通过本实践,您既可以实现在保证集群读写性能的基础上,自动维护集群上的冷热数据,又能通过优化集群架构,降低企业生产成本。
背景信息
当今大数据时代,数据时刻在更新变化。尤其是随着时间的积累,存储在Elasticsearch中的数据会越来越多,当数据达到一定量时,必然会造成服务的内存、CPU、IO等指标上涨,影响Elasticsearch的全文检索能力。为此Elasticsearch(6.6.0及以上版本)提供了索引生命周期管理ILM功能,实现索引从设置、创建、打开、关闭到删除的全生命周期管理。尤其在时序和冷热数据场景上应用ILM,可以大幅度节约存储成本。本文以冷热数据场景为例,介绍如何使用ILM功能。业务场景如下:
-
将索引数据实时写入Elasticsearch。当索引数据增加到一定量时,数据自动写入新索引。
-
新索引(滚动后的索引)在hot阶段停留30分钟,进入warm阶段。
-
warm阶段完成Merge及Shrink操作后,索引等待1小时(从滚动更新时算起),进入cold阶段。
-
cold阶段将热节点数据迁移到冷节点,实现冷热数据分离后,索引会在2个小时(从滚动更新时算起)后被删除。
使用建议
-
Elasticsearch索引生命周期策略需密切贴近业务模型。例如,对多个不同结构的索引进行生命周期管理,建议各个索引配置独立的别名和生命周期策略,以便于管理。
-
使用rollover滚动索引,初始索引应以自增数字结尾(-000001),否则策略不生效,长度要求为6。例如,定义初始索引为myindex-000001,则rollover后的索引是myindex-000002,以此类推进行递增。如果集群中索引名不符合规范,建议进行索引重建。
-
hot阶段主要处理数据写入。业务中需保证数据是按照时间顺序写入的,处于warm和cold阶段的索引不建议进行数据写入。例如,在warm阶段配置
actions
为shrink
或read only
,那么索引进入warm阶段后将处于只读状态,数据无法写入。
说明 各生命周期阶段的详细说明请参见通过索引生命周期管理Heartbeat数据。 -
在选择冷热架构节点的规格时,由于热节点提供热点数据服务,因此建议配置较高的CPU和较快的IO;而冷节点提供冷数据服务,建议配置更多的磁盘空间。对于冷节点,即使配置较少的CPU和IO,也可以提供服务。
本文以阿里云Elasticsearch为例,为您介绍数据同步的方法。阿里云Elasticsearch兼容开源Elasticsearch的功能,以及Security、Machine Learning、Graph、APM等商业功能,致力于数据分析、数据搜索等场景服务。支持5.5.3、6.3.2、6.7.0、6.8.0和7.4.0等版本,并提供了商业插件X-Pack服务。在开源Elasticsearch的基础上提供企业级权限管控、安全监控告警、自动报表生成等功能。阿里云Elasticsearch为您提供1个月的免费试用活动,单击