本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:迁移至 Amazon OpenSearch Service
要从自行管理的 OpenSearch 集群或遗留的 Elasticsearch 集群迁移到 Amazon OpenSearch Service,的一种常用的方式是使用索引快照。总体而言,此过程包括以下步骤:
-
拍摄现有集群的快照,然后将快照上载到 Amazon S3 存储桶。
-
创建 OpenSearch Service 域。
-
授予 OpenSearch Service 访问存储桶的权限,并确保您有权限使用快照。
-
恢复 OpeSearch Service 域上的快照。
此演练提供了更详细的步骤和替代选项(如果适用)。
拍摄并上载快照
尽管可以使用 repository-s3opensearch.yml
(如果使用的是 Elasticsearch 集群,则需要调整 elasticsearch.yml
),重新启动每个节点,添加 AWS 凭证,最后拍摄快照。此插件是持续使用或迁移大型集群的绝佳选择。
对于较小的集群,一次性方法是拍摄共享文件系统快照
拍摄快照并将其上载到 Amazon S3
-
将
path.repo
设置添加到所有节点上的opensearch.yml
(或Elasticsearch.yml
),然后重新启动每个节点。path.repo: ["
/my/shared/directory/snapshots
"] -
注册快照存储库
,这是您拍摄快照之前所必需的。存储库只是一个存储位置:共享文件系统、Amazon S3、Hadoop Distributed File System (HDFS) 等。在这种情况下,我们将使用共享文件系统(“fs”): PUT _snapshot/
my-snapshot-repo-name
{ "type": "fs", "settings": { "location": "/my/shared/directory/snapshots
" } } -
拍摄快照:
PUT _snapshot/
my-snapshot-repo-name
/my-snapshot-name
{ "indices": "migration-index1
,migration-index2
,other-indices-*
", "include_global_state": false } -
安装 AWS CLI
,然后运行 aws configure
以添加凭证。 -
导航到快照目录。然后运行以下命令以创建新的 S3 存储桶,并将快照目录的内容上传到该存储桶:
aws s3 mb s3://
bucket-name
--regionus-west-2
aws s3 sync . s3://bucket-name
--sse AES256此操作可能需要一些时间,具体取决于快照大小和互联网连接速度。
创建域
虽然控制台是创建域的最简单方法,但在这种情况下,您已经打开了终端并安装了 AWS CLI。修改以下命令以创建符合您需要的域:
aws opensearch create-domain \ --domain-name
migration-domain
\ --engine-versionOpenSearch_1.0
\ --cluster-config InstanceType=c5.large.search,InstanceCount=2 \ --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=100 \ --node-to-node-encryption-options Enabled=true \ --encryption-at-rest-options Enabled=true \ --domain-endpoint-options EnforceHTTPS=true,TLSSecurityPolicy=Policy-Min-TLS-1-2-2019-07 \ --advanced-security-options Enabled=true,InternalUserDatabaseEnabled=true,MasterUserOptions='{MasterUserName=master-user
,MasterUserPassword=master-user-password
}' \ --access-policies '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":["*"]},"Action":["es:ESHttp*"],"Resource":"arn:aws:es:us-west-2
:123456789012
:domain/migration-domain
/*"}]}' \ --regionus-west-2
如果不修改,此命令会创建一个具有两个数据节点的可访问互联网的域,每个节点都有 100 GiB 的存储。它还可以通过 HTTP 基本身份验证和所有加密设置实现精细访问控制。如果需要更高级的安全配置(如 VPC),请使用 OpenSearch Service 控制台。
在发布命令之前,请更改域名、主用户凭证和账号。指定与您用于 S3 存储桶的相同 AWS 区域,以及与您的快照兼容的 OpenSearch/Elasticsearch 版本。
重要
快照只能向前兼容,并且只能与一个主要版本兼容。例如,您无法从 Elasticsearch 7.x 集群上的 OpenSearch 1.x 集群还原快照,只能从 OpenSearch 1.x 或 2.x 集群还原快照。次要版本也很重要。您无法从 5.3.2 OpenSearch Service 域上自行托管的 5.3.3 集群还原快照。我们建议您选择快照支持的最新版本的 OpenSearch 或 Elasticsearch。有关兼容版本的表格,请参阅使用快照迁移数据。
提供权限以访问 S3 存储桶。
在 AWS Identity and Access Management (IAM) 控制台中,创建具有以下权限和信任关系的角色。创建角色时,选择 S3作为 AWS服务。将该角色命名为 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 角色授予权限以代入 OpenSearchSnapshotRole
。创建以下策略并将其附加到您的身份。
权限
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::
123456789012
:role/OpenSearchSnapshotRole" } ] }
映射 OpenSearch 控制面板中的快照角色(如果使用精细访问控制)
如果启用了细粒度访问权限,即使您将 HTTP 基本身份验证用于所有其他目的,也需要将 manage_snapshots
角色映射到您的 IAM 角色,以便使用快照。
授予您的身份使用快照的权限
-
然后使用您在创建 OpenSearch Service 域时指定的主用户凭证录入到控制面板。您可以在 OpenSearch Service 控制台中找到控制面板 URL。其格式为
https://
。domain-endpoint
/_dashboards/ -
从主菜单中选择安全、角色,然后选择 manage_snapshots 角色。
-
选择映射的用户、管理映射。
-
在相应字段中添加个人 IAM 角色的域 ARN。ARN 必须采用以下格式之一:
arn:aws:iam::
123456789123
:user/user-name
arn:aws:iam::
123456789123
:role/role-name
-
选择 Map(映射)并确认在 Mapped users(映射的用户)下显示的角色。
还原快照。
此时,可以通过两种方式访问 OpenSearch Service 域:使用您的主用户凭证进行 HTTP 基本身份验证,或者使用 IAM 凭证进行 AWS 身份验证。由于快照使用 Amazon S3(没有主用户的概念),因此必须使用 IAM 凭证向您的 OpenSearch Service 域注册快照存储库。
大多数编程语言都有库来协助对请求进行签名,但更简单的方法是使用像 Postman
还原快照。
无论您选择如何对请求进行签名,第一步都是注册存储库:
PUT _snapshot/
my-snapshot-repo-name
{ "type": "s3", "settings": { "bucket": "bucket-name
", "region": "us-west-2
", "role_arn": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole" } }然后在存储库中列出快照,并找到要还原的快照。此时,您可以继续使用 Postman,也可以切换到像 curl
这样的工具。 速记
GET _snapshot/
my-snapshot-repo-name
/_allcurl
curl -XGET -u '
master-user
:master-user-password
' https://domain-endpoint
/_snapshot/my-snapshot-repo-name
/_all还原快照。
速记
POST _snapshot/
my-snapshot-repo-name
/my-snapshot-name
/_restore { "indices": "migration-index1
,migration-index2
,other-indices-*
", "include_global_state": false }curl
curl -XPOST -u '
master-user
:master-user-password
' https://domain-endpoint
/_snapshot/my-snapshot-repo-name
/my-snapshot-name
/_restore \ -H 'Content-Type: application/json' \ -d '{"indices":"migration-index1
,migration-index2
,other-indices-*
","include_global_state":false}'最后,验证索引是否已按预期还原:
速记
GET _cat/indices?v
curl
curl -XGET -u '
master-user
:master-user-password
' https://domain-endpoint
/_cat/indices?v
此时,迁移已完成。您可以将客户端配置为使用新的 OpenSearch Service 端点,调整域大小以适应您的工作负载,检查索引的分片计数,切换到 IAM 主用户,或开始构建 OpenSearch 控制面板。