《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.1.Elastic Stack 安装部署——3.4.1.8. ECK 安装(9) https://developer.aliyun.com/article/1231272
定义 ILM 策略,其中包含 4 个生命周期阶段:
l Hot 阶段:将索引优先级设置为一个较高的值 100,以便节点在恢复运行后(例如重启)在Hot 阶段的索引能够在 Warm 和 Cold 阶段的索引之前恢复。当索引主分片文档数达到 5个或者索引主分片总容量达到 5MB 时,rollover 滚动更新索引。
l Warm 阶段:20s 后索引进入 Warm 阶段,将索引收缩到 1 个主分片,强制合并为 1 个段,并将索引的优先级调低为 50,然后通过 allocate 操作将索引移动到 Warm 节点。
l Cold 阶段:40s 后索引是进入 Cold 阶段,将索引的优先级调为最低值 0,并设置索引为只读状态,然后通过 allocate 操作将索引移动到 Cold 节点。
l Delete 阶段:60s 后删除该索引。
PUT _ilm/policy/hot-warm-ilm { "policy": { "phases": { "hot": { "actions": { "rollover": { "max_size":"5mb", "max_docs": "5" }, "set_priority": { "priority":100 } } }, "warm": { "min_age":"20s", "actions": { "forcemerge": { "max_num_segments":1 }, "shrink": { "number_of_shards":1 }, "allocate": { "include": { "data": "warm" } }, "set_priority": { "priority":50 } } }, "cold": { "min_age":"40s", "actions": { "set_priority": { "priority":0 }, "readonly": {}, "allocate": { "include": { "data": "cold" } } } }, "delete": { "min_age":"60s", "actions": { "delete": {} } } } } }
ECK 在创建 Elasticsearch 集群时,会根据我们指定的属性为节点添加属性,例如 node.attr.data: hot,我们后续就可以通过 node.attr.data 来区分冷热节点。属性名是可以自己定义的,比如还可以叫 node.attr.my-data。
定义一个索引模板,所有通配符匹配 hot-warm-index* 的索引,都会应用该模板的规则。该索引模板调用了刚刚创建的 ILM 策略,并且将新索引分配到 Hot 节点上,主分片数设置为 3,副本分片为 1。当索引触发 rollover 滚动更新新的索引时,以 hot-warm-index 作为别名。
PUT /_template/hot-warm-index-template { "index_patterns" : [ "hot-warm-index*" ], "settings" : { "index" : { "lifecycle" : { "name" : "hot-warm-ilm", "rollover_alias" : "hot-warm-index" }, "routing" : { "allocation" : { "include" : { "data" : "hot" } } }, "number_of_shards" : 3, "number_of_replicas": 1 } } }
为 hot-warm-index 别名创建第一个索引 hot-warm-index-000001,后续在 rollover 滚动更新索引时,索引名会根据最后的序号递增,例如 hot-warm-index-000002、hot-warm-index-000003、hot-warm-index-000004 ...。指定第一个索引分配到 Hot 节点上,索引别名为 hot-warm-index。一个别名中的所有索引只能有一个索引可以写入数据,"is_write_index": true自动设置最新滚动更新的索引可写。
PUT hot-warm-index-000001 { "aliases": { "hot-warm-index": { "is_write_index": true } } }
往索引中插入 5 条数据。
POST _bulk {"index":{"_index":"hot-warm-index"}} {"name":"Erlend","age":16} {"index":{"_index":"hot-warm-index"}} {"name":"Brynjar","age":18} {"index":{"_index":"hot-warm-index"}} {"name":"Fox","age":18} {"index":{"_index":"hot-warm-index"}} {"name":"Frank","age":23} {"index":{"_index":"hot-warm-index"}} {"name":"Sam","age":18}
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.1.Elastic Stack 安装部署——3.4.1.8. ECK 安装(11) https://developer.aliyun.com/article/1231270