关于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 集群中创建一个 fs类型的 repository仓库,这个仓库下后面可以存放很多的数据快照文件。创建快照前必须先创建 repository 仓库。那么这里的fs(file system)表示共享文件系统,也称为share file system.
换言之,就是这个共享类型的仓库将存放来自集群的数据快照。而集群又是多节点,数据又均匀的分布在各个节点上。所以,集群中的每个节点都必须能访问到这个共享类型的仓库,并且能写入文件。为此,我查阅了相关资料,得到如下答复:
那么怎么样去建立一个共享文件系统让大家都能访问呢?我们可以使用sshfs、Nfs等方法。
第一:建立共享文件系统,本节使用NFS共享,确定每一个节点挂载到指定路径,才能创建快照存储库。
第二:所有的主节点、数据节点都要配置相同的path.repo。
实际环境介绍:
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 server、NFS客户端2部分,首先我们配置NFS Server
首先:确保服务端安装如下软件,没有,可以直接在线安装
其次:NFS安装以后,默认会生成一个/etc/exports的配置文件,非常简单,格式:共享资源路径 [主机地址] [选项],如下:
再次:为了使配置文件立即生效,我们可以使用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 发起请求。如下:
仓库注册是成功的。这个意思就是说在/hezhen目录下我们创建了一个叫my_backup的仓库,我们可以用它来存各种各样的快照了。这里要提一下,如果你不配置NFS ,执行上述命令,会报如下错误:
当然,我们也可以查看仓库信息,如下:
第六步: 创建索引数据快照,指定备份特定的索引
PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true 全部索引备份,不推荐,了解即可
接下来,我们查看仓库是否存在快照文件。那么我们到底去哪里看这些文件呢?前面我们讲到集群3个节点都将仓库挂载到了nfsserver上的/share目录,那么/share目录到底有没有数据写入呢?我们去NFS服务器上看一下。
可以确认,通过在kibana上执行的那个快照命令我们已经成功的将快照文件备份到了NFS server上的的共享目录。
第七步:打包nfs server上的快照文件,上传到腾讯云COS 桶里,并执行恢复到目标腾讯云ES。如果没有COS,就需要先去控制提创建一个bucket.注意:COS bucket的创建一定要跟ES在同一地域。否则,腾讯云ES与COS之间无法同步。报错如下
接下来,同样在腾讯云ES上注册一个COS仓库,如下操作
这个命令的意思:创建一个叫my_cos_backup的仓库,将其挂载到aa 桶的/hezhen目录下。然后将nfsserver上的快照文件上传到/hezhen目录下,并在Kibana上执行恢复。快照文件内容如下所示:
随后,在腾讯云ES上执行恢复,使用如下命令执行快照恢复:
POST _snapshot/my_cos_backup/shujubeifen1/_restore
注意:这里恢复的快照名是你之前在源集群创建的快照名,不要搞混了!
第八步:腾讯云ES验证数据收否恢复 为了确保数据的准确性,首先delete hezhen* delete nginx*,删除数据。然后执行确认,如下:
要注意的是,如果目标集群中有索引名重名的情况会导致恢复报错。这种情况下要确保目标集群的存量索引无重名。
具体报错如下所示:
那么至此,数据已经从自建ES集群---------》COS ----------》腾讯云ES,数据正常操作流转成功。
使用COS进行数据迁移使用场景也非常多。通过上一小结的理解,我想大家更理解了这个工具的使用诀窍。同时我们知道,COS是腾讯云给用户来提供云存储的一款产品,我们的云上ES默认就内部集成了这些插件,但是如果是用户自建的集群,用户如果要使用COS就需要安装针对用户对应的ES版本的COS插件,腾讯云的Es-Cos插件官方链接如下:
https://github.com/tencentyun/elasticsearch-repository-cos
用户可以到这里去获取相应ES版本的插件,但是目前该站的COS插件不是特别多,用户可以通过工单的方式获取匹配的COS插件
COS插件的功能:
直接可以将用户自建集群上将快照文件备份到Cos bucket里。然后去对端执行恢复即可。
同样,以ES7.2 3个节点为集群 实现数据的COS存储与恢复,步骤如下:
第一步:获取对应ES版本的插件
第二步:授权ES启动账号elastic对该插件文件的所有权限
第三步:切换到普通用户下,安装插件,重启ES服务。注意:集群每个节点都要操作
执行此命令: bin/elasticsearch-plugin install file:///path/repository-cos.zip 如下:
装完后,我们可以去kibana上通过get _cat/plugins 查看一下,如下
POST _snapshot/仓库名/快照名/_restore 同样,注意索引名如果存在就回报数据冲突的错。这里就不再细说。
有个客户,因为广州的ES2集群的数据存在广州区的bucket桶里,现在需要将数据迁移到位于上海区域的ES集群里,怎么操作呢?
我们可以在上海区域的网络环境里创建一个bucket,然后将源广州bucket的数据迁移到上海的Bucket里然后执行恢复。
首先:简单看一下案例拓扑,如下:
1,COS间数据迁移,有两种方式实现:
第一种方式:
将原有bucket上的备份文件打包,然后上传到目标的新建的bucket上。原有的集群的快照文件如下图所示,全部要打包:
第二种方式:直接在腾讯云cos控制台上选择源快照文件所在的bucket,"复制",然后“粘贴”到目标的bucket上,如下所示:
2,在目标ES集群注册仓库,将其挂载到新建的上海的bucket里,如下:
3,执行恢复 ,使用如下命令:
4,验证数据,在目标上海集群查看索引是否存在。
跨区COS间的数据迁移恢复,验证成功。
这里要注意:腾讯云ES与COS之间不支持外网访问,默认走的内网。因此,在创建内部COS桶的时候一定要选择同地域。
另外,COS间的数据恢复有更加轻便的方法,具体可以参考COS官方文档。
腾讯云ES默认集成COS插件,所以,配置也非常简单,基本流程都是创建仓库--执行快照--COS确认这样一个过程。相反,
COS存储的快照文件也可以在控制台上下载,然后上传到自建ES集群上,接着在自建ES集群安装对应的COS插件--创建仓库,执行数据恢复。相信经过上面三种方式的学习了解,这个自然也不在话下,这个场景应用的不多,配置简单,大家可以动手操作一下,这里就不做过多讲解。
本章节我们总结了腾讯云ES、COS、自建ES之间各个场景的应用与实战,经过上面的过程,我们可以更加深入的了解多个组建的协同应用,清楚的了解各个组建运行的详细流程,以及常见故障的排查,当然,本文不是基于基础的详细讲解,如果想了解更多的参数、命令可以参考腾讯云ES官方文档种关于本章节的讲解。链接如下:
常见问题1:
腾讯云ES 6.4.3 可能因为自身版本问题导致,执行创建仓库时报错,唯一能处理的办法是将云ES升级,比如升级到6.8.2
否则一直报如下错误:
常见问题2:
COS仓库时逻辑概念,注册仓库后,bucket桶里不存在文件,只有创建快照后,才会生成文件。
常见问题3:
COS网络。如果腾讯云ES、COS之间不在同地域,那么两者之间时无法进行通信的。切记。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。