到底什么是冷热分离?简单来说,我们会把一些比较新的同时查询要求又比较频繁的数据放在Hot节点上、把一些比较旧的查询比较少的数据放在warm节点上。以达到企业生产环境既能降低成本又能兼顾性能的需求。总之,冷热属性是针对ES集群的数据节点进行配置的。
一、Hot & Warm Architecture 特性1,数据通常不会又update 操作,适用于time based索引数据,同时数据量比较大的场景,读写要求高;
2,引入warm节点,低配置大容量的机器存放老数据,降低企业成本;
3, 两类数据节点,不同的硬件配置:
A: Hot节点:索引不断有新文档的写入,Indexing对CPU 、IO都有很高的要求,需要使用高配置的机器,建议使用SSD存储性能高的磁盘。
B:Warm节点:索引不存在新数据的写入,同时也不存在大量的数据查询,通常使用HDD高性能磁盘。通常用它来保存旧的索引。
二、快速搭建一个冷热集群让一个集群成为冷热集群,只需在ES的配置文件 elasticsearch.yml文件中添加 “node.attr.key:value”即可,注意key:value的值是可以根据实际变化的。
这里以ES6.8.2为列,用一台CVM启动三个ES进程作为实际环境来搭建环境
启动2个Hot、1个warm那么,我们来验证一下:curl 127.0.0.1:9200/_cat/nodes?v
查询节点信息发现是没有问题的,那么我们现在登录kibana,进入dev tools工具进行操作
默认情况下,集群配置了冷热属性,在没有进行特定的数据设置前,数据是不会优先写入热节点的,这就是为什么我们的用户命名购买了冷热集群,为何实际不生效的原因。我们确认一下:
创建一个索引,插入几条数据:
接下来,我们来看一下,默认情况下,该索引的实际分片分配,如下:
首先通过这条命令查看冷热节点分布详细信息、结果如下
集群节点信息其次,通过GET _cat/shards?v 查看集群分片的分配情况,发现即便是冷热集群,默认情况下,分片也是随机分配的。
分片分配三、如何保证冷热集群的高效快速应用呢?一般情况下,生产环境中,我们都会通过模板的方式将该冷热属性设置在有一定优先级的系统模板中,这样,集群在写入数据的时候,默认匹配模板的规则自动创建应用。这个方法我们后面详细来讲。这里,因为是测试冷热属性,我们先简单的验证一下,通过手动匹配索引的方式让特定的索引写入特定的节点。
先创建一个索引
创建索引然后通过下面的命令将它挪动到hot节点上
挪动分片使用_cat/shards API查看确认,反之,移动到warm节点上,也可以.
设置冷属性验证确认成功当然,使用如下命令也可以查看。GET _cat/shards/hot_warm_test_index?v&h=index,shard,prirep,node&s=node
索引分片的分配详细情况结果如下:都可以。
四、总结本节我们快速基于CVM搭建了一个冷热属性的集群,并简单的测试应用,通过手动指定特定的索引将一些数据移动到冷节点的方式也是实际生产环境中比较常用的一种方式。下一节,我们将通过模板的方式讲讲它更高级的应用。OK。
---来自腾讯云社区的---南非骆驼漫谈ELK Stack
微信扫一扫打赏
支付宝扫一扫打赏