配置选项
本页概述了三种关键迁移场景的配置选项
- 元数据迁移
- 使用快照重新索引 (RFS) 进行回填迁移
- 使用捕获和重放 (C&R) 进行实时捕获迁移
这些迁移都依赖于快照或捕获代理。以下示例 cdk.context.json
配置由 AWS Cloud Development Kit (AWS CDK) 用于部署和配置 OpenSearch 迁移助手,以每个迁移类型独立的块显示。如果您正在执行适用于多种场景的迁移,这些选项可以组合使用。
有关配置选项的完整列表,请参阅 opensearch-migrations-options.md。如果本页未提供您需要的配置选项,请在 OpenSearch Migrations 仓库中创建问题。
为了使迁移工具有效运行,应配置源集群端点、目标集群端点和现有虚拟私有云 (VPC) 的选项。
共享配置选项
每个迁移配置共享以下选项。
名称 | 示例 | 描述 |
---|---|---|
sourceClusterEndpoint | "https://source-cluster.elb.us-east-1.endpoint.com" | 源集群的端点。 |
targetClusterEndpoint | "https://vpc-demo-opensearch-cluster-cv6hggdb66ybpk4kxssqt6zdhu.us-west-2.es.amazonaws.com:443" | 目标集群的端点。如果使用现有目标集群进行迁移而不是创建新集群,则为必需项。 |
vpcId | "vpc-123456789abcdefgh" | 存储迁移资源的现有 VPC 的 ID。此 VPC 必须至少包含两个跨越两个可用区的私有子网。 |
使用 RFS 进行回填迁移
以下 CDK 使用 RFS 执行回填迁移
{
"backfill-migration": {
"stage": "dev",
"vpcId": <VPC_ID>,
"sourceCluster": {
"endpoint": <SOURCE_CLUSTER_ENDPOINT>,
"version": "ES 7.10",
"auth": {"type": "none"}
},
"targetCluster": {
"endpoint": <TARGET_CLUSTER_ENDPOINT>,
"auth": {
"type": "basic",
"userSecretArn": <SECRET_WITH_USERNAME_AND_PASSWORD_KEYS>
}
},
"reindexFromSnapshotServiceEnabled": true,
"reindexFromSnapshotExtraArgs": "",
"artifactBucketRemovalPolicy": "DESTROY"
}
}
执行 RFS 回填迁移需要现有快照。
RFS 配置使用以下选项。所有选项均为可选。
名称 | 示例 | 描述 |
---|---|---|
reindexFromSnapshotServiceEnabled | true | 启用 RFS ECS 服务的部署和配置。 |
reindexFromSnapshotExtraArgs | "--target-aws-region us-east-1 --target-aws-service-signing-name es" | 文档迁移命令的额外参数,用空格分隔。有关更多信息,请参阅 RFS 额外参数。您可以传递 --no-insecure 以删除 --insecure 标志。 |
要查看 reindexFromSnapshotExtraArgs
的所有可用参数,请参阅 快照迁移 README。最少情况下,可能不需要额外参数。
使用 C&R 进行实时捕获迁移
以下 CDK 示例使用 C&R 执行实时捕获迁移
{
"live-capture-migration": {
"stage": "dev",
"vpcId": <VPC_ID>,
"sourceCluster": {
"endpoint": <SOURCE_CLUSTER_ENDPOINT>,
"version": "ES 7.10",
"auth": {"type": "none"}
},
"targetCluster": {
"endpoint": <TARGET_CLUSTER_ENDPOINT>,
"auth": {
"type": "basic",
"userSecretArn": <SECRET_WITH_USERNAME_AND_PASSWORD_KEYS>
}
},
"// settingsForCaptureAndReplay": "Enable the following services for live traffic capture and replay:",
"trafficReplayerServiceEnabled": true,
"// help trafficReplayerExtraArgs": "Increase the speedup factor to replay requests at a faster rate in order to catch up.",
"trafficReplayerExtraArgs": "--speedup-factor 1.5",
"// help capture/target proxy pt. 1 of 2": "captureProxyService and targetClusterProxyService deployment will fail without network access to clusters.",
"// help capture/target proxy pt. 2 of 2": "In most cases, keep the desired count setting at `0` until you verify connectivity in the migration console. After verifying connectivity, you can redeploy with a higher desired count.",
"captureProxyServiceEnabled": true,
"captureProxyDesiredCount": 3,
"targetClusterProxyServiceEnabled": true,
"targetClusterProxyDesiredCount": 3
}
}
执行实时捕获迁移需要配置捕获代理 (Capture Proxy) 以捕获传入流量并使用流量重放器 (Traffic Replayer) 服务将其发送到目标集群。有关 captureProxyExtraArgs
中可用的参数,请参阅此处的 @Parameter
字段。有关 trafficReplayerExtraArgs
,请参阅此处的 @Parameter
字段。最少情况下,可能不需要额外参数。
名称 | 示例 | 描述 |
---|---|---|
captureProxyServiceEnabled | true | 使用 AWS CloudFormation 堆栈启用捕获代理服务的部署。 |
captureProxyExtraArgs | "--suppressCaptureForHeaderMatch user-agent .*elastic-java/7.17.0.*" | 捕获代理命令的额外参数,包括由捕获代理指定的选项。 |
captureProxyDesiredCount | 0 | 设置捕获代理 Amazon Elastic Container Service (Amazon ECS) 任务的数量。在大多数情况下,请将此设置保持为 0 ,直到您在迁移控制台中验证源集群和目标集群之间的连接。部署后,您可以修改网络设置,以允许从迁移安全组到现有集群安全组的入口。 |
trafficReplayerServiceEnabled | true | 使用 CloudFormation 堆栈启用流量重放器服务的部署。 |
trafficReplayerExtraArgs | "--sigv4-auth-header-service-region es,us-east-1 --speedup-factor 5" | 流量重放器命令的额外参数,包括由流量重放器指定的认证头和其他参数选项。 |
targetClusterProxyServiceEnabled | true | 使用 CloudFormation 堆栈启用目标集群代理服务的部署。 |
targetClusterProxyDesiredCount | 0 | 设置目标集群代理 Amazon ECS 任务的数量。在大多数情况下,请将此设置保持为 0 ,直到您在迁移控制台中验证源集群和目标集群之间的连接。部署后,您可以修改网络设置,以允许从迁移安全组到现有集群安全组的入口。 |
有关 captureProxyExtraArgs
中可用的参数,请参阅 CaptureProxy.java
中的 @Parameter
字段。有关 trafficReplayerExtraArgs
,请参阅 TrafficReplayer.java
中的 @Parameter
字段。
集群身份验证选项
源集群和目标集群均可使用无身份验证、仅限 VPC 的身份验证、用户名和密码的基本身份验证,或范围限定为用户或角色的 AWS Signature Version 4 身份验证。
无身份验证
"sourceCluster": {
"endpoint": <SOURCE_CLUSTER_ENDPOINT>,
"version": "ES 7.10",
"auth": {"type": "none"}
}
基本身份验证
"sourceCluster": {
"endpoint": <SOURCE_CLUSTER_ENDPOINT>,
"version": "ES 7.10",
"auth": {
"type": "basic",
"userSecretArn": <SECRET_WITH_USERNAME_AND_PASSWORD_KEYS>
}
}
AWS Signature Version 4 身份验证
"sourceCluster": {
"endpoint": <SOURCE_CLUSTER_ENDPOINT>,
"version": "ES 7.10",
"auth": {
"type": "sigv4",
"region": "us-east-1",
"serviceSigningName": "es"
}
}
serviceSigningName
对于 Elasticsearch 或 OpenSearch 域可以是 es
。
所有这些身份验证选项均适用于源集群和目标集群。
快照选项
以下配置选项自定义从快照迁移的过程。
托管服务源的快照
如果您的源集群位于 Amazon OpenSearch Service 上,您需要设置一个额外的 AWS Identity and Access Management (IAM) 角色,并随快照创建调用一起传递,如 AWS 文档所述。迁移助手可以自动管理此过程。OpenSearch Service 快照仅与 AWS Signature Version 4 身份验证兼容。以下参数确保创建并传递额外的 IAM 角色。
名称 | 示例 | 描述 |
---|---|---|
managedServiceSourceSnapshotEnabled | true | 创建拍摄 OpenSearch Service 源集群快照所需的角色和信任关系。此选项仅与 AWS Signature Version 4 身份验证兼容。 |
自带快照
您可以使用现有 Amazon Simple Storage Service (Amazon S3) 快照执行元数据和回填迁移,而不是使用迁移助手创建快照
"snapshot": {
"snapshotName": "my-snapshot-name",
"snapshotRepoName": "my-snapshot-repo",
"s3Uri": "s3://my-s3-bucket-name/my-bucket-path-to-snapshot-repo",
"s3Region": "us-east-2"
}
用于所提供快照配置的集群版本应与源集群版本一致。需要源集群版本以确保正确解析所提供的快照。如果监控和验证不需要访问源集群,则可以按如下方式禁用它
"sourceCluster": {
"disabled": true,
"version": "ES 7.10"
}
默认情况下,Amazon S3 存储桶自动允许同一 AWS 账户中的角色(具有适当的 s3:*
权限)访问 S3 存储桶,无论存储桶的 AWS 区域如何。如果外部 S3 存储桶与迁移助手部署位于同一 AWS 账户中,则无需进一步的 IAM 配置即可访问该存储桶。
如果您将自定义权限模型与 Amazon S3 结合使用,则任何访问控制列表 (ACL) 或自定义存储桶策略都应允许 RFS 和迁移控制台的迁移助手任务角色从 S3 存储桶读取。
如果 S3 存储桶与迁移助手部署位于不同的 AWS 账户中,您需要一个类似于以下的自定义存储桶策略以允许访问迁移助手
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowExternalAccountReadAccessToBucket",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<ACCOUNT_ID>:root"
},
"Action": [
"s3:GetObject",
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::my-s3-bucket-name",
"arn:aws:s3:::my-s3-bucket-name/*"
]
}
]
}
网络配置
迁移工具要求源集群、目标集群和迁移资源存在于同一个 VPC 中。如果情况并非如此,可能需要执行本文档之外的手动网络设置。