首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于SCF实现Elasticsearch的快照生命周期管理(SLM)

基于SCF实现Elasticsearch的快照生命周期管理(SLM)

原创
作者头像
bellen
修改于 2020-07-20 03:48:55
修改于 2020-07-20 03:48:55
1.5K0
举报

基于SCF实现Elasticsearch的快照生命周期管理(SLM)

在ES 7.4版本后,我们拥有了SLM(快照生命周期管理)的功能,但是只有X-PACK商业版才能使用该功能,快照生命周期管理的实现也比较简单,实际上就是制定计划定时执行快照,我们可以通过编写脚本然后配置crontab任务来实现SLM。本文主要介绍如何利用腾讯云的SCF(云函数)来实现SLM并且结合ILM(索引生命周期管理)降低集群整体的分片数量和数据存储量,从而降低集群压力,减少存储成本。

实施步骤

1. 创建COS仓库

我们把快照保存到腾讯云的COS对象存储中,首先需要调用ES的API创建一个COS repository:

代码语言:txt
AI代码解释
复制
PUT _snapshot/cos-repo
{
    "type": "cos",
    "settings": {
        "app_id": "xxxxxxx",
        "access_key_id": "xxxxxx",
        "access_key_secret": "xxxxxxx",
        "bucket": "xxxxxx",
        "region": "ap-guangzhou",
        "compress": true,
        "chunk_size": "500mb",
        "base_path": "/"
    }
}

更详细的基于COS备份和恢复ES数据的步骤可以参考使用 COS 进行备份及恢复.

2. 创建SCF云函数

如图,基于名为"ES写入函数"的模板,创建一个新的函数:

点击"下一步"进入函数编辑界面,直接复制如下函数代码粘贴到编辑框,修改ES的vip和用户名密码,以及索引前缀名称等信息:

代码语言:txt
AI代码解释
复制
# -*- coding: utf8 -*-
import datetime
from elasticsearch import Elasticsearch

ESServer = Elasticsearch(["x.x.x.x:9200"],http_auth=('username', 'password'))
# 需要进行备份的索引名称前缀,需要进行修改
esPrefix = "my-index-"
# 备份多少天前的索引
beforeOfDay = 7

# cos仓库名称
cosRepository = "cos-repo"
# 快照名称前缀
cosSnapshotPrefix = "snapshot-"


def check_or_create_snapshot():
    today = datetime.datetime.now()
    offset = datetime.timedelta(days=-beforeOfDay)
    re_date = (today + offset).strftime('%Y-%m-%d');

    params = {}
    params["ignore_unavailable"] = "true"
    getResult = ESServer.snapshot.get(cosRepository, cosSnapshotPrefix+ re_date, params = params)
    snapshots = getResult["snapshots"]
    if len(snapshots) != 0:
        if snapshots[0]["state"] == "SUCCESS":
            print "snapshot-"+ re_date +" executed finished!"
        else:
            print "snapshot-"+ re_date +" is running!"
    else:
        body = {}
        # 可以选择备份按天创建的索引
        body["indices"] = esPrefix + re_date
        # 也可以选择备份按小时创建的所有索引
        # body["indices"] = esPrefix + re_date + "-*"
        body["ignore_unavailable"] = "true"
        body["include_global_state"] = "false"
        createResult = ESServer.snapshot.create(cosRepository, cosSnapshotPrefix+ re_date,body)
        if createResult["accepted"] == True:
            print "create [snapshot-"+ re_date +"] success!"
            return
        else:
            print "create [snapshot-"+ re_date +"] failed!" + str(createResult)


def main_handler(event,context):
    check_or_create_snapshot()

点击"完成"即可完成云函数的创建。

3. 配置云函数

创建完云函数后,需要进行配置才能使用,如下图,可以配置函数的私有网络VPC和Subnet(选择和ES相同的VPC和Subnet):

4. 测试云函数

配置完云函数后,可以对函数代码进行测试,保证能够正常运行;如果需要进行编辑,可以直接编辑然后点击"保存并测试":

5. 配置触发器

配置触发器,每小时执行一次函数:

6. 查看函数监控

可以查看函数的运行监控信息:

也可以查看函数的运行日志:

7. 配置函数告警

云监控的控制台配置SCF的监控告警,可以及时获取函数的执行情况:

8. 配置ILM

在ES的kibana中配置ILM(X-PACK商业版支持), 我们的场景是索引创建7天后将其移动到warm节点,15天后将副本调低为0,因为使用了上述基于SCF实现的SLM功能,因为数据已经备份再COS中了,副本数可以降低为0,这样做的好处一是可以降低集群整体的分片数量,避免影响集群性能;二是可以降低存储成本。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于SCF实现批量备份Elasticsearch索引到COS
在采用ELK架构的日志应用场景中,通常我们会按天或者按小时创建索引,从而避免单个索引的数据量太大。如果我们需要对过去一段时间的老索引进行冷备份,比如通过快照备份到S3或者腾讯云的对象存储服务COS中,然后降低索引的副本数量或者直接从ES删除索引,可以采取的方式有多种。一种是手动调用ES的API,一次性备份所有的老索引到COS中,但是如果数据量较大时只使用一个快照可能因为数据传输中断而导致快照执行失败;另外一种方式是自己编写脚本,通过crontab定时执行脚本对过去某一天或几天的索引打快照,执行成功后再对其它的索引打快照;本文尝试使用SCF(腾讯云无服务器云函数)对按小时新建的索引,持续批量的打快照到COS。
bellen
2020/07/24
8040
基于SCF实现批量备份Elasticsearch索引到COS
Elasticsearch 快照生命周期管理 (SLM) 实战指南
关于如何创建快照和恢复快照,可以参考这篇:干货 | Elasitcsearch7.X集群/索引备份与恢复实战。
铭毅天下
2022/05/23
1.6K0
Elasticsearch 快照生命周期管理 (SLM) 实战指南
PB级大规模Elasticsearch集群运维与调优实践
某中型互联网公司的游戏业务,使用了腾讯云的Elasticsearch产品,采用ELK架构存储业务日志。因为游戏业务本身的日志数据量非常大(写入峰值在100w qps),在服务客户的几个月中,踩了不少坑,经过数次优化与调整,把客户的ES集群调整的比较稳定,避免了在业务高峰时客户集群的读写异常,并且降低了客户的资金成本和使用成本。下面把服务客户过程中遇到的典型问题进行梳理,总结经验,避免再次踩坑。
bellen
2020/07/24
2K0
PB级大规模Elasticsearch集群运维与调优实践
Elasticsearch ILM 索引生命周期管理 - ES 必备技能
假设有三个索引,my-index-001, my-index-002, my-index-003, 全部绑定到别名 my-alias, 并且 my-index-003 设置了 "is_write_index": true。这意味着对 my-alias 查询可以查询到以上所有三个索引的数据,而对 my-alias 写入数据只会写入到 my-index-003。
sir5kong
2023/07/20
1.1K0
腾讯云Elasticsearch索引生命周期管理原理及实践
本文将从三个方面介绍Elasticsearch索引生命周期管理的特性,首先会介绍ES索引生命周期管理的基本原理,其次会通过一个常见的日志场景来一步步配置索引生命周期管理,最后向大家介绍在日常的ES运维工作中遇到的关于索引生命周期管理常见的问题及解决方法。
吴容
2021/12/04
4.6K0
腾讯云Elasticsearch索引生命周期管理原理及实践
Elasticsearch 索引生命周期管理
在 Elasticsearch的日常管理中,有很多如系统日志,行为数据等方面的应用场景,这些场景的特点是数据量非常大,并且随着时间的增长索引的数量也会持续增长,然而这些场景基本上只有最近一段时间的数据有使用价值或者会被经常使用(热数据),而历史数据几乎没有作用或者很少会被使用(冷数据),这个时候就需要对索引进行一定策略的维护管理甚至是删除清理,否则随着数据量越来越多除了浪费磁盘与内存空间之外,还会严重影响 Elasticsearch 的性能。
Se7en258
2021/05/18
8580
Elasticsearch 索引生命周期管理
大幅降低存储成本,Elasticsearch可搜索快照是如何办到的?
在 Searchable snapshots 可搜索快照功能发布之前,通过调用 _snapshot API 对索引打的快照,不管是存储在 S3 还是 HDFS 或者是腾讯云的对象存储 COS上,都是不能够直接进行查询的。
腾讯云开发者
2020/12/08
1.1K0
大幅降低存储成本,Elasticsearch可搜索快照是如何办到的?
深入了解Elasticsearch:管理快照操作指南
在 Elasticsearch 中,有效地管理快照和使用快照生命周期管理(SLM)是确保数据备份和恢复的关键步骤。本节将提供删除快照、配置 SLM 策略以及执行自动备份的实用操作和示例。通过这些步骤可以更好地保护数据,应对意外数据丢失或系统故障。
洛秋_
2023/12/12
6721
深入了解Elasticsearch:管理快照操作指南
Elasticsearch & ClickHouse 存储成本比较
在上一篇文章(Elasticsearch & ClickHouse 存储效能对比)中,我们比较了ES和CK在数据集的压缩存储方面的效能,ClickHouse的压缩存储其实并没有特别的魔法,使用的列存方式和压缩算法其实都是业内常见的,因为其数据结构是以列存方式专门针对这种结构化数据的OLAP场景的,因此可以做到一个比较高的压缩比率。而Elasticsearch是一个使用场景非常广泛的数据库,其默认数据结构配置是支持高并发、高可用、可全文检索的非结构化数据的搜索需求,但同时也是提供doc_value, BKD tree等方式支持高效存储数据的。要达到CK类似的效果,需要有针对性的进行优化。
点火三周
2021/04/28
4.4K0
Elasticsearch & ClickHouse 存储成本比较
Elasticsearch 索引生命周期管理详解与实践汇总篇
Elasticsearch 从版本6.8开始已经免费开放索引生命周期管理的功能,通过该功能我们可以实现日志索引不同阶段的细化管理进而达到实际需求。本文基于以往的索引生命周期管理知识沉淀作进一步的深化,如大家想了解ILM的相关文章,请参考如下链接:
南非骆驼说大数据
2020/11/23
2.6K0
Elasticsearch 索引生命周期管理详解与实践汇总篇
Elasticsearch索引生命周期管理方案
在 Elasticsearch 的日常中,有很多如存储 「系统日志」、「行为数据」等方面的应用场景,这些场景的特点是数据量非常大,并且随着时间的增长 索引 的数量也会持续增长,然而这些场景基本上只有最近一段时间的数据有使用价值或者会被经常使用(热数据),而历史数据几乎没有作用或者很少会被使用(冷数据),这个时候就需要对 索引 进行一定策略的维护管理甚至是删除清理,否则随着数据量越来越多除了浪费磁盘与内存空间之外,还会严重影响 Elasticsearch 的性能;
陶陶技术笔记
2021/01/12
1K0
Elasticsearch索引生命周期管理方案
Elasticsearch ILM 索引生命周期管理常见坑及避坑指南
之前的博文和视频都讲过 ILM 索引生命周期管理。但从近期的反馈和我自己的实战经验看,依然会有很多坑。
铭毅天下
2022/02/09
2.4K0
Elasticsearch ILM 索引生命周期管理常见坑及避坑指南
Elasticsearch 可搜索快照技术原理及最佳实践
Elasticsearch于7.10版本推出可搜索快照功能,但是7.10版本的可搜索快照技术还不够成熟,随着7.14版本的发布,可搜索快照技术才真正能够大规模用于生产实践中。本文将基于ES 7.14.2版本,继续从原理和实践两个角度向大家介绍可搜索快照技术。
腾讯云大数据
2021/12/29
1.4K1
Elasticsearch 可搜索快照技术原理及最佳实践
干货 | Elasticsearch 索引生命周期管理 ILM 实战指南
关于人生,有人这么说:“人,生来一个人,死去一个人,所以,人生就是一个人生老病死的简称。”
铭毅天下
2021/06/25
7.4K1
干货 | Elasticsearch 索引生命周期管理 ILM 实战指南
Elasticsearch可搜索快照技术原理及最佳实践
Elasticsearch于7.10版本推出可搜索快照功能,但是7.10版本的可搜索快照技术还不够成熟,随着7.14版本的发布,可搜索快照技术才真正能够大规模用于生产实践中。本文将基于ES 7.14.2版本,继续从原理和实践两个角度向大家介绍可搜索快照技术的。
吴容
2021/11/27
2.2K3
Elasticsearch可搜索快照技术原理及最佳实践
深入了解Elasticsearch索引生命周期管理
ILM是Elasticsearch提供的一种机制,允许用户自动化地管理索引在其整个生命周期内的各个阶段。这些阶段通常包括Hot、Warm、Cold和Delete。每个阶段都有其特定的优化目标和操作,如存储类型、副本数、段合并等。
公众号:码到三十五
2024/03/19
3650
深入了解Elasticsearch索引生命周期管理
【ES三周年】深入理解 Elasticsearch 集群数据快照
之前我们生产 ES 集群因为数据分片过大,导致集群重启无法选举,具体可以看这篇文章。当系统分片数据量越来越大,给生产集群造成一定压力,同时也会影响数据检索和查询效率。为了减轻集群压力,缩小集群分片数,减少集群故障,需要考虑数据归档方案,将查询频率低的数据从集群中归档到一个集中区域。
leon 橙
2022/12/21
5.3K2
Elastic Stack 实战教程 2:ILM 索引生命周期管理
索引生命周期管理 (Index Lifecycle Management, ILM) 是在 Elasticsearch 在 6.6(公测版)首次引入并在 6.7 版正式推出的一项功能。ILM 旨在帮助用户更方便地管理时序数据(例如日志,指标等)。时序数据有如下几个典型的特点:
Se7en258
2023/02/26
7180
Elastic Stack 实战教程 2:ILM 索引生命周期管理
干货 | Elasticsearch 可搜索快照深入详解
Elasticsearch 可搜索快照是 7.10 版本才有的新功能,之前呼声非常高。
铭毅天下
2021/08/13
1.6K0
Elasticsearch使用:Snapshot备份与恢复
Elasticsearch 做备份有两种方式,一是将数据导出成文本文件,比如通过elasticdump、esm等工具将存储在 Elasticsearch 中的数据导出到文件中。二是以备份 elasticsearch data 目录中文件的形式来做快照,也就是 Elasticsearch 中snapshot接口实现的功能。第一种方式相对简单,在数据量小的时候比较实用,当应对大数据量场景效率就大打折扣。我们今天就着重讲解下第二种备份的方式,即snapshotapi 的使用。
HLee
2021/07/22
7.7K0
Elasticsearch使用:Snapshot备份与恢复
推荐阅读
相关推荐
基于SCF实现批量备份Elasticsearch索引到COS
更多 >
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入腾讯云技术交流站
洞悉AI新动向 Get大咖技术交流群
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档