ElasticSearch基于snapshot和华为云OBS的备份

ElasticSearch基于snapshot和华为云OBS的备份,第1张

ElasticSearch基于snapshot和华为云OBS的备份

微信公众号:运维开发故事,作者:double冬

0 背景

任何一个存储数据的软件,都需要定期的备份数据。es replica提供了运行时的高可用保障机制,可以容忍少数节点的故障和部分数据的丢失,但是整体上却不会丢失任何数据,而且不会影响集群运行。但是replica没法进行灾难性的数据保护,比如说机房彻底停电,所有机器全部宕机,等等情况。对于这种灾难性的故障,我们就需要对集群中的数据进行备份了,集群中数据的完整备份。
Elasticsearch提供了replica解决方案,它可以帮我们解决了如果有一个或多个node失败了,那么我们的数据还是可以保证完整的情况,并且搜索还可以继续进行。但是,有一种情况是我们的所有的node,或者有一部分node失败,可能会造成我们的数据的丢失。也就是说replca不能提供一种灾难性的保护机制。我们需要一种完整的备份机制。

Snapshot及Restore

在Elastic里,我们提供了一个叫做snapshot及restore API的接口。使您可以使用数据和状态快照备份您的Elasticsearch索引和集群。快照很重要,因为快照会在出现问题时提供您数据的副本。如果需要回滚到旧版本的数据,则可以从存储库中还原快照。如上图所示,我们可以把当前index的状态及数据存入到一个repository里去。Elasticsearch 的 snapshot 是由其自身控制的,整个系统保持了一个如下的从下到上的控制结构,他们具备包含关系:
snapshot --> repository --> single snapshot --> indices

repository

为了能够做备份,我们首先必须创建一个repository,也就是一个仓库。你可以为一个cluster创建多个仓库。目前支持的仓库类型有:这个仓库应该是一组 snapshot 备份的集合,也可以认为是一个目标的选择。在一个 Elasticsearch 系统中你可以根据自己的意愿设定不同的 Repository。
Elasticsearch支持仓库类型

Respository配置类型Shared file system“type”: “fs”Read-only URL“type”: “url”S3“type”: “s3”HDFS“type”: “hdfs”Azure“type”: “azure”Google Cloud Storage“type”: “gcs”

这里需要注意的是:S3, HDFS, Azure and GCS 需要相应的插件进行安装才可以。

Single snapshot

这个指的是在 Repository 中我们进行的每个备份内容,他更像一个集合,包含了这次 snapshot 中所有的 Indices。

Indices

在一个 snapshot 当中,可以包含多个 Indices 文件内容。他可以在执行 snapshot 的时候用 pattern 识别,也可以一个一个的指定。

S3 插件

如果要想让 Elasticsearch 备份到 S3 当中需要单独安装一个插件 S3 Repository Plugin。

1 ES集群中插件安装和配置修改 1.1 自建ES集群下载repository-s3插件

首先先要在es插件目录安装repository-s3的插件,必须在每个节点上都安装。

./bin/elasticsearch-plugin install repository-s3

1.2 修改elasticsearch的jvm.options

集群所有服务器节点都要 *** 作,在配置文件最后添加如下内容
-Des.allow_insecure_settings=true

1.3 验证插件

重启各节点上的elasticsearch服务,然后在浏览器中输入http://esip地址/_cat/plugins,马上能看到所有节点安装的插件,则表示安装成功

3、创建华为云OBS

elastic官网文档,主要是介绍的对AWS上的S3如果配置进行说明,实际上如果公司没有使用AWS的话,还是不太适用的,这里主要是以国产云平台华为云上的对象存储OBS为例,大家可以根据自己公司的业务情况进行选择腾讯云COS、阿里云OOS;只需要我们的Repository类型使用的是s3就行

3.1 创建es备份使用的桶,并获取访问密钥

3.2 设置OBS为快照仓库

可以在kibana中使用dev_tools来调用API进行 *** 作,如下所示,创建了一个仓库名为es_s3_repository,其中bucket是刚才创建的桶,access_key,secret_key,endpoint根据实际情况填写,compress为true表示为会对数据进行压缩

PUT _snapshot/es_s3_repository
{
  "type": "s3",
  "settings": {
    "access_key": "xxxxxxxxxxxxxxx",
    "secret_key": "xxxxxxxxxxxxxxxxx",
    "bucket": "es-centre",
    "endpoint":"xxxxxxxxxxxx",
    "compress":"true"
  }
}

执行之后返回为true,则为创建成功,如果返回其他错误,可能需要检查一下插件是否安装和jvm.options是否设置,集群重启成功

# 查看所有的仓库
GET /_snapshot/_all

返回结果

{
  "es_s3_repository" : {
    "type" : "s3",
    "settings" : {
      "bucket" : "es-centre",
      "compress" : "true",
      "endpoint" : "obs.cn-north-2.myhuaweicloud.com"
    }
  }
}

如果所示则为创建成功

3.2 创建快照测试(快照名index_bak)

数据量太大会出问题,只能一个索引一个索引的做快照,如下为创建一个快照名为index_bak的快照,主要对index1,index2,两个索引进行创建快照

PUT /_snapshot/es_s3_repository/index_bak?wait_for_completion=true
{
  "indices": "index1,index2",
  "ignore_unavailable": true,
  "include_global_state": false,
  "metadata": {
    "taken_by": "kimchy",
    "taken_because": "backup before upgrading"
  }
}

常用的API命令

# 查看所有的仓库
GET /_snapshot/_all
# 查看某一个具体的仓库的快照情况
GET /_snapshot/es_s3_repository/_all?pretty
# 列出所有当前正在运行的快照以及显示他们的详细状态信息
GET /_snapshot/_status?pretty
# 列出所有当前正在运行的快照以及显示他们的详细状态信息
GET /_snapshot/es_s3_repository/_status?pretty
# 查看指定快照的详细状态信息即使不是正在运行
GET /_snapshot/es_s3_repository/snapshot_2/_status?pretty
#删除某一个快照
DELETE /_snapshot/es_s3_repository/snapshot_2

3.3 在kibana上添加快照策略

这种创建方式,是对es上所有的所有的索引都会创建快照,这里需要注意,如果是有特殊需求可以调用API来进行创建

创建策略基本信息,这里的策略名称可以自己修改,快照名称名称,是表示一天创建一个快照,命名为snapshot加日期,频率设置为天,计划就是定时任务,这里的设置,实际上会+8h,表示为每天的凌晨00点10分进行前一天的索引快照备份

3.4 OBS上查看数据是否上传

image.png

参考文档:

https://blog.csdn.net/UbuntuTouch/article/details/103045482?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159819053019725211918411%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=159819053019725211918411&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_blog_default-1-103045482.pc_v2_rank_blog_default&utm_term=snapshot&spm=1018.2118.3001.4187
https://www.elastic.co/guide/en/elasticsearch/reference/7.9/snapshots-take-snapshot.html

公众号:运维开发故事

github:https://github.com/orgs/sunsharing-note/dashboard

爱生活,爱运维

如果你觉得文章还不错,就请点击右上角选择发送给朋友或者转发到朋友圈。您的支持和鼓励是我最大的动力。喜欢就请关注我吧~

扫码二维码

关注我,不定期维护优质内容

温馨提示

如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。

                                          ........................

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5690254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存