Easysearch、Elasticsearch、Amazon OpenSearch 快照兼容对比

启动集群

Easysearch

sysctl -w vm.max_map_count=262144

Amazon OpenSearch

Elasticsearch

由于这个docker compose没有关于kibana的配置,所以我们还是用Console添加原生的Elasticsearch集群请添加图片描述

集群信息

请添加图片描述

快照还原的步骤

快照前的准备

插件安装

本次测试选择把索引快照备份到Amazon S3,所以需要使用S3 repository plugin,这个插件添加了对使用 Amazon S3 作为快照/恢复存储库的支持。

Easysearch和OpenSearch集群自带了这个插件,所以无需额外安装。

对于自己部署的三节点Elasticsearch则需要进入每一个节点运行安装命令然后再重启集群,建议使用自动化运维工具来做这步,安装命令如下:

sudo bin/elasticsearch-plugin install repository-s3

如果不再需要这个插件,可以这样删除。

sudo bin/elasticsearch-plugin remove repository-s3

由于需要和Amazon Web Services打交道,所以我们需要设置IAM凭证,这个插件可以从EC2 IAM instance profile,ECS task role 以及EKS的Service account读取相应的凭证。

对于托管的Amazon OpenSearch来说,我们无法在托管的EC2上绑定我们的凭证,所以需要新建一个OpenSearchSnapshotRole,然后通过当前的用户把这个角色传递给服务,也就是我们说的IAM:PassRole。

创建OpenSearchSnapshotRole,策略如下:

{"Version": "2012-10-17","Statement": [{"Action": ["s3:ListBucket"],"Effect": "Allow","Resource": ["arn:aws:s3:::bucket-name"]},{"Action": ["s3:GetObject","s3:PutObject","s3:DeleteObject"],"Effect": "Allow","Resource": ["arn:aws:s3:::bucket-name/*"]}]
}

信任关系如下:

{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": "es.amazonaws.com"},"Action": "sts:AssumeRole"}]
}

然后在我们的IAM user上加上PassRole的权限,这样我们就可以把OpenSearchSnapshotRole传递给OpenSearch集群。

{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "iam:PassRole","Resource": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole"}]
}

注册存储库

在源集群执行注册

PUT /_snapshot/snapshot-repo-name
{"type": "s3","settings": {"bucket": "<bucket-name>","base_path": "<bucket-prefix>",

在目标集群同样执行这个语句,为了防止覆盖源集群存储库的数据,将 “readonly”: true 添加到"settings" PUT 请求中,这样就只有一个集群具有对存储库的写入权限。

PUT /_snapshot/snapshot-repo-name
{"type": "s3","settings": {"bucket": "<bucket-name>","base_path": "<bucket-prefix>","readonly": true,

对于OpenSearch来说,还需要执行passrole,所以还需要添加role_arn这个字段,由于IAM:PassRole需要对HTTP 请求做signV4日签名,所以这部常常使用Postman来完成。把角色传递过去之后,接下来的快照还原操作就可以在OpenSearch Dashboard中进行操作了。

在这里插入图片描述

需要注意的是,需要在auth这里输入AccessKey,SecretKey,AWS Region,Service Name(es)来做SignV4的签名。
在这里插入图片描述

请求体如下:

{"type": "s3","settings": {"bucket": "<bucket-name>","base_path": "<bucket-prefix>","readonly": true,"role_arn": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole"}
}

  • 查看所有注册的存储库
    • GET _snapshot:这个命令返回所有已注册的快照存储库列表及其基本信息。
GET _snapshot
{"es_repository": {"type": "s3","settings": {"bucket": "your-s3-bucket-name","region": "your-s3-bucket-region"}}
}
  • 查看特定存储库的详细信息
    GET _snapshot/es_repository:这个命令返回名为es_repository的存储库的详细配置信息,包括存储桶名称、区域和其他设置。
GET _snapshot/es_repository
{"es_repository": {"type": "s3","settings": {"bucket": "your-s3-bucket-name","region": "your-s3-bucket-region","access_key": "your-access-key","secret_key": "your-secret-key"}}
}
  • 查看特定存储库中的快照
    GET _cat/snapshots/es_repository?v:这个命令返回es_repository存储库中的所有快照及其详细信息,包括快照ID、状态、开始时间、结束时间、持续时间、包含的索引数量、成功和失败的分片数量等。
GET _cat/snapshots/es_repository?v
id                     status start_epoch start_time end_epoch end_time duration indices successful_shards failed_shards total_shards
snapshot_1             SUCCESS 1628884800 08:00:00   1628888400 09:00:00 1h       3       10                0             10
snapshot_2             SUCCESS 1628971200 08:00:00   1628974800 09:00:00 1h       3       10                0             10

创建索引快照

# PUT _snapshot/my_repository/<my_snapshot_{now/d}>
PUT _snapshot/my_repository/my_snapshot
{"indices": "my-index,logs-my_app-default",
}

根据快照的大小不同,完成快照可能需要一些时间。默认情况下,create snapshot API 只会异步启动快照过程,该过程在后台运行。要更改为同步调用,可以将 wait_for_completion 查询参数设置为 true

PUT _snapshot/my_repository/my_snapshot?wait_for_completion=true

另外还可以使用 clone snapshot API 克隆现有的快照。要监控当前正在运行的快照,可以使用带有 _current 请求路径参数的 get snapshot API。

GET _snapshot/my_repository/_current

如果要获取参与当前运行快照的每个分片的完整详细信息,可以使用 get snapshot status API。

GET _snapshot/_status

成功创建快照之后,就可以在S3上看到备份的数据块文件,这个是正确的快照层级结构:
在这里插入图片描述

需要注意的是, “base_path”: ""这里最好不要加/,虽然不影响同集群迁移,这个会为我们在不同厂商的搜索引擎中迁移遇到问题,可能是这样的,所以需要注意。请添加图片描述所以在Open Search中还原Elasticsearch就遇到了这个问题:

{"error": {"root_cause": [{"type": "snapshot_missing_exception","reason": "[easy_repository:2/-jOQ0oucQDGF3hJMNz-vKQ] is missing"}],"type": "snapshot_missing_exception","reason": "[easy_repository:2/-jOQ0oucQDGF3hJMNz-vKQ] is missing","caused_by": {"type": "no_such_file_exception","reason": "Blob object [11111/indices/7fv2zAi4Rt203JfsczUrBg/meta-YGnzxZABRBxW-2vqcmci.dat] not found: The specified key does not exist. (Service: S3, Status Code: 404, Request ID: R71DDHX4XXM0434T, Extended Request ID: d9M/HWvPvMFdPhB6KX+wYCW3ZFqeFo9EoscWPkulOXWa+TnovAE5PlemtuVzKXjlC+rrgskXAus=)"}},"status": 404
}

恢复索引快照

POST _snapshot/my_repository/my_snapshot_2099.05.06/_restore
{"indices": "my-index,logs-my_app-default",
}

各个集群的还原

  1. Elasticsearch 7.10.2 的快照可以还原到Easysearch和Amazon OpenSearch

  2. 从Easysearch 1.8.2还原到Elasticsearch 7.10.2报错如下:

{"error": {"root_cause": [{"type": "snapshot_restore_exception","reason": "[s3_repository:1/a2qV4NYIReqvgW6BX_nxxw] cannot restore index [my_indexs] because it cannot be upgraded"}],"type": "snapshot_restore_exception","reason": "[s3_repository:1/a2qV4NYIReqvgW6BX_nxxw] cannot restore index [my_indexs] because it cannot be upgraded","caused_by": {"type": "illegal_state_exception","reason": "The index [[my_indexs/ALlTCIr0RJqtP06ouQmf0g]] was created with version [1.8.2] but the minimum compatible version is [6.0.0-beta1]. It should be re-indexed in Elasticsearch 6.x before upgrading to 7.10.2."}},"status": 500
}
  1. 从Amazon OpenSearch 2.1.3还原到Elasticsearch 7.10.2报错如下(无论是否开启兼容模式):
{"error": {"root_cause": [{"type": "snapshot_restore_exception","reason": "[aos:2/D-oyYSscSdCbZFcmPZa_yg] the snapshot was created with Elasticsearch version [36.34.78-beta2] which is higher than the version of this node [7.10.2]"}],"type": "snapshot_restore_exception","reason": "[aos:2/D-oyYSscSdCbZFcmPZa_yg] the snapshot was created with Elasticsearch version [36.34.78-beta2] which is higher than the version of this node [7.10.2]"},"status": 500
}
  1. 从Easysearch 1.8.2还原到Amazon OpenSearch2.13报错如下(无论是否开启兼容模式):
{"error": {"root_cause": [{"type": "snapshot_restore_exception","reason": "[easy_repository:2/LE18AWHlRJu9rpz9BJatUQ] cannot restore index [my_indexs] because it cannot be upgraded"}],"type": "snapshot_restore_exception","reason": "[easy_repository:2/LE18AWHlRJu9rpz9BJatUQ] cannot restore index [my_indexs] because it cannot be upgraded","caused_by": {"type": "illegal_state_exception","reason": "The index [[my_indexs/VHOo7yfDTRa48uhQvquFzQ]] was created with version [1.8.2] but the minimum compatible version is OpenSearch 1.0.0 (or Elasticsearch 7.0.0). It should be re-indexed in OpenSearch 1.x (or Elasticsearch 7.x) before upgrading to 2.13.0."}},"status": 500
}

以下是兼容性对比,每行第一列代表源集群,第一行代表目标集群:

快照兼容对比Easysearch 1.8.2Elasticsearch 7.10.2OpenSearch 2.13
Easysearch 1.8.2兼容不兼容不兼容
Elasticsearch 7.10.2兼容兼容兼容
OpenSearch 2.13不兼容不兼容兼容

Elasticsearch的兼容列表官方的列表如下:
在这里插入图片描述

参考文献

开始使用 Elastic Stack 和 Docker Compose:第 1 部分
https://www.elastic.co/cn/blog/getting-started-with-the-elastic-stack-and-docker-compose

Docker Compose 部署多节点Elasticsearch

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docker.html#docker-compose-file

repository-s3 教程

https://www.elastic.co/guide/en/elasticsearch/reference/8.14/repository-s3.html

https://www.elastic.co/guide/en/elasticsearch/plugins/7.10/repository-s3.html

snapshot-restore

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/snapshot-restore.html

在亚马逊 OpenSearch 服务中创建索引快照

https://docs.amazonaws.cn/zh_cn/opensearch-service/latest/developerguide/managedomains-snapshots.html#managedomains-snapshot-restore

教程:迁移至 Amazon OpenSearch Service

https://docs.amazonaws.cn/zh_cn/opensearch-service/latest/developerguide/migration.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【微服务】feign使用

【微服务】feign使用 引入依赖启动类配置注解创建业务层使用项目调用可能会遇到的bug 01 引入依赖 Feign是Spring Cloud提供的一个声明式的伪Http客户端&#xff0c; 它使得调用远程服务就像调用本地服务一样简单&#xff0c; 只需要创建一个接口并添加一个注解即可。在需要…

解决echarts在uniapp里tooltip,legend不能点击的问题

在main.js文件里面添加&#xff0c;这样tooltip就可以点击&#xff0c;但是legend可能还不能点击&#xff0c; window.wx {} // 在使用获取echarts dom使用 echarts.env.touchEventsSupported false; echarts.env.wxa false; const chartContainer this.$refs.chartContai…

生产力工具|Endnote 21 Macwin版本安装

一、软件下载&#xff1a; &#xff08;一&#xff09;mac版本 Endnote 21版本下载&#xff1a;点击下载 Endnote 20版本下载&#xff1a;点击下载 Endnote X9版本下载&#xff1a;点击下载 &#xff08;二&#xff09;Endnote 20 Win版本 第一步&#xff1a;安装好官网软…

Eureka: 微服务架构中的服务发现与注册实践

Eureka介绍与使用教程 你好&#xff0c;我是悦创。 Eureka 是 Netflix 开发的一款服务发现&#xff08;Service Discovery&#xff09;工具&#xff0c;它主要用于云中基于微服务架构的应用程序。Eureka使服务实例能够动态地注册自己&#xff0c;而其他服务实例可以通过 Eure…

【技术前沿 | AI Native应用新纪元:深度解析模型微调的艺术】

在这个智能化浪潮席卷全球的今天&#xff0c;AI技术已经不再是遥不可及的未来概念&#xff0c;而是深深地融入了我们的日常生活与工作中。从智能家居到自动驾驶&#xff0c;从智能客服到医疗诊断&#xff0c;AI正以它独有的方式改变着世界。而在这一过程中&#xff0c;AI Nativ…

随手记:推荐vscode好用的几个小插件

原始用了挺久的插件&#xff0c;先上截图&#xff0c;以后有空再编辑&#xff1a; fittenCode 是一个AI小助手&#xff0c;相对来说很智能&#xff0c;你在vscode当中编写代码&#xff0c;甚至都可以知道你下一步知道干嘛&#xff0c;训练的还可以。而且还可以帮你起名字&…

2024年7月17日(nodejs,npm设置国内镜像,vue脚手架,远程管理ssh,踢出用户,scp命令,ssh免密登录)

1、安装nodejs服务 nodejs是一个运行1环境&#xff0c;和javajdk运行环境格式一样 [roota ~]# yum -y install nodejs.x86_64 安装完成之后&#xff0c;使用node -v 查看版本 [roota ~]# node -v v16.20.2 2、简易服务器的环境安装npm 安装包管理器 npm node packae manger [ro…

云计算实训09——rsync远程同步、自动化推取文件、对rsyncd服务进行加密操作、远程监控脚本

一、rsync远程同步 1.rsync基本概述 &#xff08;1&#xff09;sync同步 &#xff08;2&#xff09;async异步 &#xff08;3&#xff09;rsync远程同步 2.rsync的特点 可以镜像保存整个目录树和文件系统 可以保留原有权限&#xff0c;owner,group,时间&#xff0c;软硬链…

数据分析入门:用Python和Numpy探索音乐流行趋势

一、引言 音乐是文化的重要组成部分&#xff0c;而音乐流行趋势则反映了社会文化的变迁和人们审美的变化。通过分析音乐榜单&#xff0c;我们可以了解哪些歌曲或歌手正在受到大众的欢迎&#xff0c;甚至预测未来的流行趋势。Python作为一种强大的编程语言&#xff0c;结合其丰…

[数据集][目标检测]导盲犬拐杖检测数据集VOC+YOLO格式4635张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4635 标注数量(xml文件个数)&#xff1a;4635 标注数量(txt文件个数)&#xff1a;4635 标注…

【ubuntu】没有声音??连不上网络???

一. ubuntu 突然之后没有声音&#xff1f;&#xff1f;&#xff1f; 卸载并重新加载 ALSA 驱动&#xff1a; 使用 alsa force-reload 命令来卸载并重新加载 ALSA 驱动&#xff1a; sudo alsa reload还不行&#xff1f;那就强制 reload sudo alsa force-reload二. ubuntu 突…

深入剖析CommonJS modules和ECMAScript modules

目录 前言CommonJS&#xff1a;服务器端模块化的先驱背景与起源语法与机制 ECMAScript Modules&#xff1a;现代前端的基石背景与起源语法与机制 比较与权衡语法差异加载机制编译时与运行时运行时行为构建第三方库现代开发环境 结论 前言 在 JavaScript 生态系统中&#xff0c…

RabbitMQ学习实践一:MQ的安装

文章是本人在学习springboot实现消息队列功能时所经历的过程的记录&#xff0c;仅供参考&#xff0c;如有侵权请随时指出。 参考文章地址&#xff1a; RabbitMQ安装与入门_rabbitmq win11配置-CSDN博客 RabbitMQ入门到实战一篇文章就够了-CSDN博客 RabbitMQ系列&#xff08…

【LeetCode】十五、回溯法:括号生成 + 子集

文章目录 1、回溯法2、leetcode22&#xff1a;括号生成3、leetcode78&#xff1a;子集 1、回溯法 使用场景&#xff0c;如找[1&#xff0c;2&#xff0c;3]的所有子集&#xff1a; 2、leetcode22&#xff1a;括号生成 以n2为例&#xff0c;即两个左括号、两个右括号&#xff0c…

汇编实验5

本实验在32位Linux虚拟机中完成&#xff08;点击查看安装教程&#xff09; 实验内容 二进制炸弹实际是由C语言源程序生成的可执行目标代码&#xff0c;主程序可参考bomb.c。运行时&#xff0c;会按次序提示用户输入3个不同的字符串。如果输入的字符串有误&#xff0c;炸弹就会…

随手记:vsCode修改主题色为自定义颜色

因为工作需要长时间面对vscode&#xff0c;视力不好&#xff0c;想要把工具改成护眼色&#xff0c;于是就把vscode改成了自定义的护眼色 效果图&#xff1a; 操作步骤&#xff1a; 快捷键打开设置页面&#xff1a; 按住ctrlshiftp 选择Open setting 按回车键 打开setting页面编…

FlagEval 7月榜丨新增29个模型评测结果,智源发布评估技术报告《AI大模型能力全景扫描》

智源研究院FlagEval 7月榜单新增29个语言、多模态和文生图开源与闭源模型评测结果&#xff0c;包括阿里巴巴、OpenAI、快手、智谱等厂商近期发布的新模型。 本次评测发现&#xff0c;大语言模型&#xff0c;国产模型主观能力整体有所提升&#xff1b;视觉语言新模型的能力有所…

ArduPilot开源代码之AP_DAL_RangeFinder

ArduPilot开源代码之AP_DAL_RangeFinder 1. 源由2. 框架设计2.1 枚举 Status2.2 公有方法2.3 私有成员变量 3. 重要例程3.1 应用函数3.1.1 ground_clearance_cm_orient3.1.2 max_distance_cm_orient3.1.3 has_orientation3.1.4 get_backend 3.2 其他函数3.2.1 AP_DAL_RangeFind…

git config

文章目录 1.简介2.格式3.选项4.示例参考文献 1.简介 安装完 Git 后&#xff0c;需要对 Git 环境进行一次配置&#xff0c;且只需要配置一次。程序升级时会保留配置信息。 你可以在任何时候再次通过运行命令来修改它们。 Git 自带一个 git config 的工具来设置控制 Git 外观和…

AI(Adobe lliustrator)教程+软件包

简介&#xff1a; 软件主要应用于印刷出版、海报书籍排版、专业插画、多媒体图像处理和互联网页面的制作等&#xff0c;也可以为线稿提供较高的精度和控制&#xff0c;适合生产任何小型设计到大型的复杂项目。 通常用于创建LOGO(商标或徽标)&#xff0c;图标&#xff0c;插图…