Link Search Menu Expand Document Documentation Menu

配置选项

本页概述了三种关键迁移场景的配置选项

  1. 元数据迁移
  2. 使用快照重新索引 (RFS) 进行回填迁移
  3. 使用捕获和重放 (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 中。如果情况并非如此,可能需要执行本文档之外的手动网络设置。