智能建筑发展的关键推动力
优先保证分片先从 hot 节点迁移到 warm 节点,这样后续的 shrink 才能顺利执行(也可能执行失败,因为 60 个分片都在一个节点上,可能会触发 rebalance, 导致分片迁移走,shrink 的前置条件又不满足,导致执行失败)。要完全规避这个问题,还得在 ILM 策略中设置,满足创建时间超过 360 个小时的索引,副本直接调整为 0,但是客户又不接受,没办法。 场景 7:自己实现 SLM 上文介绍了 10w 个分片会给集群带来的影响和通过开启 shrink 来降低分片数量,但是仍然有两个需要重点解决的问题:
可以估算一下,按小时建索引,60 分片 1 副本,一年的分片数为 24*120*365=1051200 个分片,执行 shrink 后分片数量 24*10*350 + 24*120*15 = 127200(15 天内的新索引为了保障写入性能和数据可靠性,仍然保持 60 分片 1 副本,旧的索引 shrink 为 5 分片 1 副本), 仍然有超过 10w 个分片。结合集群一年总的存储量和单个分片可以支持的数据量大小进行评估,我们期望集群总体的分片数量可以稳定为 6w~8w,怎么优化? 可以想到的方案是执行数据冷备份,把比较老的索引都冷备到其它的存储介质上比如 HDFS、S3、腾讯云的 COS 对象存储等。但是问题是这些冷备的数据如果也要查询,需要先恢复到 ES 中才可查,恢复速度比较慢,客户无法接受。由此也产生了新的想法,目前老的索引仍然是 1 副本,可以把老索引先进行冷备份,再把副本调为 0,这样做有以下几点好处:
经过和客户沟通,客户接受了上述方案,计划把老索引冷备到腾讯云的对象存储 COS 中,实施步骤为:
其中第一个步骤的实施可以通过脚本实现,本案例中就采用了腾讯云 SCF 云函数进行实施,方便快捷可监控。实施要点有:
在实施完第一个步骤之后,就可以批量把对索引进行过备份的索引副本数都调为 0, 这样一次性释放了很多磁盘空间,并且显著降低了集群整体的分片数量。 接下来实施第二个步骤,需要每天执行一次快照,多创建时间较久的索引进行备份。实施比较简单,可以通过 crontab 定时执行脚本或者使用腾讯云 SCF 执行。
之后,就可以修改 ILM 策略,开启 cold phase, 修改索引副本数量为 0: (编辑:常州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |