본문 바로가기
WIKI 기술 지식 베이스

Configuration options

원문 보기 위키 갱신

출처: 문서

본문

설정 옵션

이 페이지에서는 세 가지 주요 마이그레이션 시나리오에 대한 설정 옵션을 설명해요:

  1. 메타데이터 마이그레이션
  2. Reindex-from-Snapshot(RFS)를 사용한 백필 마이그레이션
  3. Capture and Replay(C&R)를 사용한 라이브 캡처 마이그레이션

이 마이그레이션들은 각각 스냅샷이나 캡처 프록시에 의존해요. 다음의 cdk.context.json 설정 예시는 AWS Cloud Development Kit(AWS CDK)가 Migration Assistant for OpenSearch를 배포하고 설정하는 데 사용하는 것으로, 마이그레이션 유형별로 별도의 블록으로 표시했어요. 여러 시나리오에 해당하는 마이그레이션을 수행한다면 이 옵션들을 조합할 수 있어요.

전체 설정 옵션 목록은 opensearch-migrations-options.md를 참고하세요. 이 페이지에서 찾을 수 없는 설정 옵션이 필요하다면 OpenSearch Migrations repository에 이슈를 만들어 주세요. {: .tip }

마이그레이션 도구가 효과적으로 작동하려면 소스 클러스터 엔드포인트, 타깃 클러스터 엔드포인트, 기존 가상 프라이빗 클라우드(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"
  }
}

{% include copy.html %}

RFS 백필 마이그레이션을 수행하려면 기존 스냅샷이 필요해요.

RFS 설정은 다음 옵션들을 사용해요. 모든 옵션은 선택 사항이에요.

이름 예시 설명
reindexFromSnapshotServiceEnabled true RFS ECS 서비스의 배포와 설정을 활성화해요.
reindexFromSnapshotExtraArgs "--target-aws-region us-east-1 --target-aws-service-signing-name es" Document Migration 명령에 전달하는 추가 인자예요. 공백으로 구분해요. 자세한 내용은 RFS Extra Arguments를 참고하세요. --no-insecure를 전달하면 --insecure 플래그를 제거할 수 있어요.

reindexFromSnapshotExtraArgs에 사용할 수 있는 모든 인자를 보려면 Snapshot migrations 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

  }
}

{% include copy.html %}

라이브 캡처 마이그레이션을 수행하려면 Capture Proxy가 들어오는 트래픽을 캡처해서 Traffic Replayer 서비스를 통해 타깃 클러스터로 보내도록 설정되어 있어야 해요. captureProxyExtraArgs에 사용할 수 있는 인자는 여기의 @Parameter 필드를 참고하세요. trafficReplayerExtraArgs에 대해서는 여기의 @Parameter 필드를 참고하세요. 최소한의 경우라면 추가 인자가 필요 없을 수도 있어요.

이름 예시 설명
captureProxyServiceEnabled true AWS CloudFormation 스택을 사용한 Capture Proxy 서비스 배포를 활성화해요.
captureProxyExtraArgs "--suppressCaptureForHeaderMatch user-agent .*elastic-java/7.17.0.*" Capture Proxy 명령에 전달하는 추가 인자예요. Capture Proxy에서 지정하는 옵션들이 포함돼요.
captureProxyDesiredCount 0 Capture Proxy Amazon Elastic Container Service(Amazon ECS) 태스크 수를 설정해요. 대부분의 경우 Migration Console에서 소스 클러스터와 타깃 클러스터 간의 연결을 확인할 때까지는 이 설정을 0으로 유지하세요. 배포 후에는 마이그레이션 보안 그룹에서 기존 클러스터 보안 그룹으로의 인바운드를 허용하도록 네트워킹 설정을 수정할 수 있어요.
trafficReplayerServiceEnabled true CloudFormation 스택을 사용한 Traffic Replayer 서비스 배포를 활성화해요.
trafficReplayerExtraArgs "--sigv4-auth-header-service-region es,us-east-1 --speedup-factor 5" Traffic Replayer 명령에 전달하는 추가 인자예요. 인증 헤더 옵션과 Traffic Replayer에서 지정하는 다른 파라미터들이 포함돼요.
targetClusterProxyServiceEnabled true CloudFormation 스택을 사용한 타깃 클러스터 프록시 서비스 배포를 활성화해요.
targetClusterProxyDesiredCount 0 타깃 클러스터 프록시 Amazon ECS 태스크 수를 설정해요. 대부분의 경우 Migration Console에서 소스 클러스터와 타깃 클러스터 간의 연결을 확인할 때까지는 이 설정을 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"}
    }

{% include copy.html %}

기본 인증

    "sourceCluster": {
        "endpoint": <SOURCE_CLUSTER_ENDPOINT>,
        "version": "ES 7.10",
        "auth": {
            "type": "basic",
            "userSecretArn": <SECRET_WITH_USERNAME_AND_PASSWORD_KEYS>
        }
    }

{% include copy.html %}

AWS Signature Version 4 인증

    "sourceCluster": {
        "endpoint": <SOURCE_CLUSTER_ENDPOINT>,
        "version": "ES 7.10",
        "auth": {
            "type": "sigv4",
            "region": "us-east-1",
            "serviceSigningName": "es"
        }
    }

{% include copy.html %}

Elasticsearch나 OpenSearch 도메인이라면 serviceSigningName은 es가 될 수 있어요.

이 인증 옵션들은 모두 소스 클러스터와 타깃 클러스터 양쪽에 적용돼요.

스냅샷 옵션

다음 설정 옵션들은 스냅샷에서 마이그레이션하는 과정을 사용자 지정해요.

관리형 서비스 소스의 스냅샷

소스 클러스터가 Amazon OpenSearch Service에 있다면 AWS 문서에 설명된 대로 추가 AWS Identity and Access Management(IAM) 역할을 설정하고 스냅샷 생성 호출과 함께 전달해야 해요. Migration Assistant가 이 과정을 자동으로 관리할 수 있어요. OpenSearch Service 스냅샷은 AWS Signature Version 4 인증하고만 호환돼요. 다음 파라미터는 추가 IAM 역할이 생성되고 전달되도록 보장해요.

이름 예시 설명
managedServiceSourceSnapshotEnabled true OpenSearch Service 소스 클러스터의 스냅샷을 생성하는 데 필요한 역할과 신뢰 관계를 만들어요. AWS Signature Version 4 인증하고만 호환돼요.

직접 준비한 스냅샷 사용

Migration Assistant로 스냅샷을 만드는 대신 기존 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"
    }

{% include copy.html %}

제공된 스냅샷 설정에 사용되는 클러스터 버전은 소스 클러스터 버전과 일치해야 해요. 제공된 스냅샷이 적절하게 파싱되도록 하려면 소스 클러스터 버전이 필요해요. 모니터링과 검증에 소스 클러스터 접근이 필요하지 않다면 다음과 같이 비활성화할 수 있어요:

    "sourceCluster": {
        "disabled": true,
        "version": "ES 7.10"
    }

{% include copy.html %}

기본적으로 Amazon S3 버킷은 버킷의 AWS 리전과 관계없이 같은 AWS 계정에 있는 역할(적절한 s3:* 권한을 가진)이 S3 버킷에 접근하는 것을 자동으로 허용해요. 외부 S3 버킷이 Migration Assistant 배포와 같은 AWS 계정에 있다면 버킷에 접근하기 위한 추가 IAM 설정은 필요 없어요.

Amazon S3에서 사용자 지정 권한 모델을 사용한다면, 액세스 제어 목록(ACL)이나 사용자 지정 버킷 정책이 RFS와 Migration Console을 위한 Migration Assistant 태스크 역할이 S3 버킷에서 읽을 수 있도록 허용해야 해요.

S3 버킷이 Migration Assistant 배포와 별개의 AWS 계정에 있다면 Migration Assistant의 접근을 허용하려면 다음과 비슷한 사용자 지정 버킷 정책이 필요해요:

{
  "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/*"
      ]
    }
  ]
}

{% include copy.html %}

네트워크 설정

마이그레이션 도구는 소스 클러스터, 타깃 클러스터, 마이그레이션 리소스가 같은 VPC에 존재한다고 가정해요. 그렇지 않다면 이 문서 외부에서 수동으로 네트워킹을 설정해야 할 가능성이 높아요.

{% include migration-phase-navigation.html %}

더 알아보기 (Learn more)