前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云ES与COS之间的那点事儿

腾讯云ES与COS之间的那点事儿

原创
作者头像
南非骆驼说大数据
修改2020-05-24 09:53:42
2.9K0
修改2020-05-24 09:53:42
举报

前言|

关于ES与COS之间的使用场景主要体现在数据迁移、数据恢复备份这几个方面。其原理就是通过COS将源ES数据中间存储,然后再将存储的数据进行目标ES集群异步恢复的过程。COS在ES数据离线迁移Snapshot方式中使用较为广泛;因为近期遇到的此类需求挺多,结合客户实际以及腾讯云ES官方文档,特地梳理总结,通过本文,您可以了解到以下场景的COS使用:

1,用户自建ES集群<多节点>如何通过snapshot+fs+cos的方式实现数据到腾讯云ES的迁移恢复

2,用户自建ES集群<多节点>如何通过snapshot+cos的方式实现数据到腾讯云ES的迁移恢复

3, 用户如何将不同地域的cos桶之间的数据做迁移恢复

4,腾讯云ES数据到cos、cos到自建ES之间的数据备份、恢复

一、用户自建ES集群<多节点>通过snapshot+fs+cos的方式实现数据到腾讯云ES的迁移恢复

这里提一下为什么不用单节点来演示呢,因为单节点操作简单。而且实际环境基本都是多节点。因此我们就以该环境来测试。以下是该环境的操作流程,如下:

1,操作原理

在源 ES 集群中创建一个 fs类型的 repository仓库,这个仓库下后面可以存放很多的数据快照文件。创建快照前必须先创建 repository 仓库。那么这里的fs(file system)表示共享文件系统,也称为share file system.

换言之,就是这个共享类型的仓库将存放来自集群的数据快照。而集群又是多节点,数据又均匀的分布在各个节点上。所以,集群中的每个节点都必须能访问到这个共享类型的仓库,并且能写入文件。为此,我查阅了相关资料,得到如下答复:

FS类型仓库讲解
FS类型仓库讲解

那么怎么样去建立一个共享文件系统让大家都能访问呢?我们可以使用sshfs、Nfs等方法。

2、本节小结:多节点集群如何配置才能实现快照?

第一:建立共享文件系统,本节使用NFS共享,确定每一个节点挂载到指定路径,才能创建快照存储库。

第二:所有的主节点、数据节点都要配置相同的path.repo。

3、动手实战

实际环境介绍

ES7.2 3台 分别依次对应下面的s4、s5、s6 CentOS 7.7

NFS: 1台 对应下面的NFS Server

COS: 2个 广州区域

TencentES: ES7.5.1

实战拓扑图,如下:

集群架构
集群架构

详细操作步骤:

第一步:搭建一个三节点的ES集群,安装Kibana,将5601端口改为8080,过程略。可参考前面博文,截图如下:

搭建集群
搭建集群

第二步:安装、配置NFS server ,如下:

NFS的全称是Network FileSystem,即网络文件系统,NFS主要实现的功能是让网络上的不同操作系统之间共享数据。NFS首先在远程服务端(共享数据的操作系统)共享出文件或者目录,然后远端共享出来的文件或者目录就可以通过挂载(mount)的方式挂接到本地的不同操作系统上,最后,本地系统就可以很方便的使用远端提供的文件服务,操作起来像在本地操作一样。从而实现了数据的共享。NFS拓扑图如下:

NFS架构
NFS架构

NFS分为NFS server、NFS客户端2部分,首先我们配置NFS Server

首先:确保服务端安装如下软件,没有,可以直接在线安装

nfs软件安装
nfs软件安装

其次:NFS安装以后,默认会生成一个/etc/exports的配置文件,非常简单,格式:共享资源路径 [主机地址] [选项],如下:

nfs配置文件
nfs配置文件

再次:为了使配置文件立即生效,我们可以使用exportfs -rv 命令立即生效配置

最后:启动NFS 服务,执行三个命令,如下:

只要以上四步,NFS Server就配置完成了。接下来,我们配置NFS客户端。步骤如下:

首先:确保客户端安装以下几个插件:

客户端软件
客户端软件

其次:在客户端机器上,使用 showmount -e 服务端ip 查看服务端提供的共享目录,如下:

查看服务端共享的目录
查看服务端共享的目录

于是我们可以知道:10.1.1.238这台服务器上共享了一个叫share的目录,然后可以被任何人访问。

再次:在客户端挂载服务端目录到本地,使用Mount命令,格式: mount -t nfs 服务端文件 本地文件,如下:

挂载到本地
挂载到本地

注意:有几个节点,就在客户端执行几次命令。我们可以使用df -h 查看挂载情况

查看挂载详细情况
查看挂载详细情况

因此,到这里我们的NFS Server就搭建成功,当然,nfsserver内容还是比较多的。读者可以自行查阅补全相关知识。

第三步:确定每一个节点挂载到指定路径,并授权挂载目录给ES启动账户,才能创建快照存储库

上面已经将NFS环境搭建好,同时将server上的/share文件夹作为共享目录并被挂载到每个节点的客户端的/hezhen目录下。在每个节点上创建挂载目录,并给予权限,最好每个节点上保持名字、路径、权限一致。如下:

创建目录,赋予权限
创建目录,赋予权限

第四步:修改ES集群的每个节点的配置文件,添加仓库路径,重启服务,注意:此路径是本地挂载目录的路径,如下:

配置文件配置路径
配置文件配置路径

第五步:注册快照仓库到ES,这里是在 kibana 的 Dev Tools 上操作的,也可以使用 curl 发起请求。如下:

注册ES仓库
注册ES仓库

仓库注册是成功的。这个意思就是说在/hezhen目录下我们创建了一个叫my_backup的仓库,我们可以用它来存各种各样的快照了。这里要提一下,如果你不配置NFS ,执行上述命令,会报如下错误:

权限导致的集群访问错误
权限导致的集群访问错误

当然,我们也可以查看仓库信息,如下:

查看仓库信息
查看仓库信息

第六步: 创建索引数据快照,指定备份特定的索引

创建索引快照
创建索引快照

PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true 全部索引备份,不推荐,了解即可

接下来,我们查看仓库是否存在快照文件。那么我们到底去哪里看这些文件呢?前面我们讲到集群3个节点都将仓库挂载到了nfsserver上的/share目录,那么/share目录到底有没有数据写入呢?我们去NFS服务器上看一下。

NFSserver 快照文件
NFSserver 快照文件

可以确认,通过在kibana上执行的那个快照命令我们已经成功的将快照文件备份到了NFS server上的的共享目录。

第七步:打包nfs server上的快照文件,上传到腾讯云COS 桶里,并执行恢复到目标腾讯云ES。如果没有COS,就需要先去控制提创建一个bucket.注意:COS bucket的创建一定要跟ES在同一地域。否则,腾讯云ES与COS之间无法同步。报错如下

COS访问报错
COS访问报错

接下来,同样在腾讯云ES上注册一个COS仓库,如下操作

创建COS仓库
创建COS仓库

这个命令的意思:创建一个叫my_cos_backup的仓库,将其挂载到aa 桶的/hezhen目录下。然后将nfsserver上的快照文件上传到/hezhen目录下,并在Kibana上执行恢复。快照文件内容如下所示:

COS快照目录
COS快照目录

随后,在腾讯云ES上执行恢复,使用如下命令执行快照恢复:

POST _snapshot/my_cos_backup/shujubeifen1/_restore

注意:这里恢复的快照名是你之前在源集群创建的快照名,不要搞混了!

恢复快照
恢复快照

第八步:腾讯云ES验证数据收否恢复 为了确保数据的准确性,首先delete hezhen* delete nginx*,删除数据。然后执行确认,如下:

验证数据
验证数据
验证数据
验证数据

要注意的是,如果目标集群中有索引名重名的情况会导致恢复报错。这种情况下要确保目标集群的存量索引无重名。

具体报错如下所示:

恢复报错信息
恢复报错信息

结论:

那么至此,数据已经从自建ES集群---------》COS ----------》腾讯云ES,数据正常操作流转成功。

二、用户自建ES集群<多节点>如何通过snapshot+cos的方式实现数据到腾讯云ES的迁移恢复

使用COS进行数据迁移使用场景也非常多。通过上一小结的理解,我想大家更理解了这个工具的使用诀窍。同时我们知道,COS是腾讯云给用户来提供云存储的一款产品,我们的云上ES默认就内部集成了这些插件,但是如果是用户自建的集群,用户如果要使用COS就需要安装针对用户对应的ES版本的COS插件,腾讯云的Es-Cos插件官方链接如下:

https://github.com/tencentyun/elasticsearch-repository-cos

用户可以到这里去获取相应ES版本的插件,但是目前该站的COS插件不是特别多,用户可以通过工单的方式获取匹配的COS插件

COS插件的功能

直接可以将用户自建集群上将快照文件备份到Cos bucket里。然后去对端执行恢复即可。

1,COS插件的安装

同样,以ES7.2 3个节点为集群 实现数据的COS存储与恢复,步骤如下:

第一步:获取对应ES版本的插件

第二步:授权ES启动账号elastic对该插件文件的所有权限

授权插件
授权插件

第三步:切换到普通用户下,安装插件,重启ES服务。注意:集群每个节点都要操作

执行此命令: bin/elasticsearch-plugin install file:///path/repository-cos.zip 如下:

安装COS插件
安装COS插件

装完后,我们可以去kibana上通过get _cat/plugins 查看一下,如下

确认插件安装成功
确认插件安装成功

2:在本地集群上注册COS仓库

创建仓库
创建仓库

3:在本地仓库创建快照文件,发现快照自动到COS里去了,可以使用put _snapshot/仓库名/快照名的方式执行快照

仓库快照
仓库快照

4:在腾讯云ES上同样注册一个仓库,注意:目标ES集群也要注册仓库。仓库名可以不一样

5:在云ES,针对之前存在COS里的快照进行恢复。 使用命令如下:

POST _snapshot/仓库名/快照名/_restore 同样,注意索引名如果存在就回报数据冲突的错。这里就不再细说。

三、 用户如何将不同地域的cos桶之间的数据做迁移恢复

案例分析:

有个客户,因为广州的ES2集群的数据存在广州区的bucket桶里,现在需要将数据迁移到位于上海区域的ES集群里,怎么操作呢?

我们可以在上海区域的网络环境里创建一个bucket,然后将源广州bucket的数据迁移到上海的Bucket里然后执行恢复。

首先:简单看一下案例拓扑,如下:

COS跨区操作
COS跨区操作

其次:具体操作步骤

1,COS间数据迁移,有两种方式实现:

第一种方式:

将原有bucket上的备份文件打包,然后上传到目标的新建的bucket上。原有的集群的快照文件如下图所示,全部要打包:

快照文件数据上传
快照文件数据上传

第二种方式:直接在腾讯云cos控制台上选择源快照文件所在的bucket,"复制",然后“粘贴”到目标的bucket上,如下所示:

复制粘贴方式拷贝数据
复制粘贴方式拷贝数据

2,在目标ES集群注册仓库,将其挂载到新建的上海的bucket里,如下:

目标ES集群注册仓库
目标ES集群注册仓库

3,执行恢复 ,使用如下命令:

恢复快照
恢复快照

4,验证数据,在目标上海集群查看索引是否存在。

验证数据
验证数据

结论:

跨区COS间的数据迁移恢复,验证成功。

这里要注意:腾讯云ES与COS之间不支持外网访问,默认走的内网。因此,在创建内部COS桶的时候一定要选择同地域。

另外,COS间的数据恢复有更加轻便的方法,具体可以参考COS官方文档。

四,腾讯云ES数据到cos、cos到自建ES之间的数据备份、恢复

腾讯云ES默认集成COS插件,所以,配置也非常简单,基本流程都是创建仓库--执行快照--COS确认这样一个过程。相反,

COS存储的快照文件也可以在控制台上下载,然后上传到自建ES集群上,接着在自建ES集群安装对应的COS插件--创建仓库,执行数据恢复。相信经过上面三种方式的学习了解,这个自然也不在话下,这个场景应用的不多,配置简单,大家可以动手操作一下,这里就不做过多讲解。

五、总结

本章节我们总结了腾讯云ES、COS、自建ES之间各个场景的应用与实战,经过上面的过程,我们可以更加深入的了解多个组建的协同应用,清楚的了解各个组建运行的详细流程,以及常见故障的排查,当然,本文不是基于基础的详细讲解,如果想了解更多的参数、命令可以参考腾讯云ES官方文档种关于本章节的讲解。链接如下:

/document/product/845/19549

/document/product/845/35568

常见问题1:

腾讯云ES 6.4.3 可能因为自身版本问题导致,执行创建仓库时报错,唯一能处理的办法是将云ES升级,比如升级到6.8.2

否则一直报如下错误:

目标ES6.4.3仓库创建报错
目标ES6.4.3仓库创建报错

常见问题2:

COS仓库时逻辑概念,注册仓库后,bucket桶里不存在文件,只有创建快照后,才会生成文件。

常见问题3:

COS网络。如果腾讯云ES、COS之间不在同地域,那么两者之间时无法进行通信的。切记。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言|
    • 一、用户自建ES集群<多节点>通过snapshot+fs+cos的方式实现数据到腾讯云ES的迁移恢复
      • 1,操作原理
      • 2、本节小结:多节点集群如何配置才能实现快照?
      • 3、动手实战
      • 详细操作步骤:
    • 结论:
      • 二、用户自建ES集群<多节点>如何通过snapshot+cos的方式实现数据到腾讯云ES的迁移恢复
        • 1,COS插件的安装
        • 2:在本地集群上注册COS仓库
        • 3:在本地仓库创建快照文件,发现快照自动到COS里去了,可以使用put _snapshot/仓库名/快照名的方式执行快照
        • 4:在腾讯云ES上同样注册一个仓库,注意:目标ES集群也要注册仓库。仓库名可以不一样
        • 5:在云ES,针对之前存在COS里的快照进行恢复。 使用命令如下:
      • 三、 用户如何将不同地域的cos桶之间的数据做迁移恢复
        • 案例分析:
        • 其次:具体操作步骤
      • 结论:
        • 四,腾讯云ES数据到cos、cos到自建ES之间的数据备份、恢复
          • 五、总结
          相关产品与服务
          Elasticsearch Service
          腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com