튜토리얼: Amazon OpenSearch Service로 마이그레이션 - 아마존 OpenSearch 서비스

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

튜토리얼: Amazon OpenSearch Service로 마이그레이션

인덱스 스냅샷은 자체 관리형 OpenSearch 또는 레거시 Elasticsearch 클러스터에서 Amazon OpenSearch Service로 마이그레이션하는 데 널리 사용되는 방법입니다. 대체로 프로세스는 다음 단계로 구성됩니다.

  1. 기존 클러스터의 스냅샷을 만들고 스냅샷을 Amazon S3 버킷에 업로드합니다.

  2. OpenSearch Service 도메인 생성

  3. 버킷에 액세스할 수 있는 권한을 OpenSearch Service에 부여하고 자신에게 스냅샷으로 작업할 수 있는 권한이 있는지 확인합니다.

  4. OpenSearch Service 도메인에서 스냅샷을 복원합니다.

이 연습에서는 자세한 단계와 대체 옵션(해당되는 경우)을 다룹니다.

스냅샷 생성 및 업로드

repository-s3 플러그인을 사용하여 스냅샷을 S3에 직접 만들 수 있지만, 모든 노드에 플러그인을 설치하고 opensearch.yml(또는 Elasticsearch 클러스터를 사용하는 경우 elasticsearch.yml)을 수정하고 각 노드를 다시 시작하고 AWS 보안 인증을 추가한 다음 마지막으로 스냅샷을 작성해야 합니다. 플러그인은 지속해서 사용하거나 더 큰 클러스터를 마이그레이션하기 위한 좋은 옵션입니다.

소규모 클러스터에서 일회성 접근 방식은 공유 파일 시스템 스냅샷을 만든 다음 AWS CLI를 사용하여 S3에 업로드하는 것입니다. 이미 스냅샷이 있는 경우 4단계로 건너뜁니다.

스냅샷을 생성하여 Amazon S3에 업로드
  1. 모든 노드에서 opensearch.yml(또는 Elasticsearch.yml)에 path.repo 설정을 추가한 다음 각 노드를 다시 시작합니다.

    path.repo: ["/my/shared/directory/snapshots"]
  2. 스냅샷을 찍기 전에 필요한 스냅샷 리포지토리를 등록합니다. 리포지토리는 공유 파일 시스템, Amazon S3, Hadoop 분산 파일 시스템(HDFS) 등, 단순한 스토리지 위치입니다. 이 경우 공유 파일 시스템(“fs”)을 사용합니다.

    PUT _snapshot/my-snapshot-repo-name { "type": "fs", "settings": { "location": "/my/shared/directory/snapshots" } }
  3. 스냅샷 생성:

    PUT _snapshot/my-snapshot-repo-name/my-snapshot-name { "indices": "migration-index1,migration-index2,other-indices-*", "include_global_state": false }
  4. AWS CLI를 설치하고 aws configure을 실행하여 자격 증명을 추가합니다.

  5. 스냅샷 디렉터리로 이동합니다. 다음 명령을 실행하여 새 S3 버킷을 생성하고 스냅샷 디렉터리의 콘텐츠를 해당 버킷에 업로드합니다.

    aws s3 mb s3://bucket-name --region us-west-2 aws s3 sync . s3://bucket-name --sse AES256

    스냅샷의 크기와 인터넷 연결 속도에 따라 이 작업을 실행할 때 시간이 걸릴 수 있습니다.

도메인 생성

콘솔은 도메인을 만드는 가장 쉬운 방법이지만, 이미 터미널이 열려 있고 AWS CLI가 설치되어 있습니다. 다음 명령을 수정하여 필요에 맞게 도메인을 만듭니다.

aws opensearch create-domain \ --domain-name migration-domain \ --engine-version OpenSearch_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/*"}]}' \ --region us-west-2

마찬가지로 이 명령은 각각 100GiB의 스토리지가 있는 두 개의 데이터 노드를 갖춘 인터넷 액세스 가능 도메인을 만듭니다. 또한 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) 콘솔에 다음과 같은 권한 및 신뢰 관계를 가진 역할을 생성합니다. 역할을 생성할 때 AWS 서비스S3를 선택합니다. 쉽게 찾을 수 있도록 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 Dashboards에서 스냅샷 역할을 매핑할 수 있습니다.

세분화된 액세스 제어를 활성화한 경우 다른 모든 용도로 HTTP 기본 인증을 사용하더라도 manage_snapshots 역할을 IAM 역할에 할당하여 스냅샷으로 작업할 수 있도록 해야 합니다.

스냅샷으로 작업할 수 있는 자격 증명 권한을 부여하려면
  1. OpenSearch Service 도메인을 생성할 때 지정한 마스터 사용자 자격 증명을 사용하여 Dashboards에 로그인합니다. Dashboards URL은 OpenSearch Service 콘솔에서 찾을 수 있습니다. https://domain-endpoint/_dashboards/ 형식을 사용합니다.

  2. 주 메뉴에서 보안(Security), 역할(Roles)을 선택하고 manage_snapshots 역할을 선택합니다.

  3. 매핑된 사용자(Mapped users), 매핑 관리(Manage mapping)를 차례로 선택합니다.

  4. 그런 다음 해당 필드에 개인 IAM 역할의 도메인 ARN을 추가합니다. ARN은 다음 형식 중 하나여야 합니다.

    arn:aws:iam::123456789123:user/user-name
    arn:aws:iam::123456789123:role/role-name
  5. Map(맵)을 선택하고 Mapped users(매핑된 사용자)에 역할이 나타나는지 확인합니다.

스냅샷을 복원합니다.

이때 OpenSearch Service 도메인에 액세스하는 두 가지 방법이 있습니다. 마스터 사용자 자격 증명을 사용한 HTTP 기본 인증 또는 IAM 자격 증명을 사용한 AWS 인증입니다. 스냅샷에서는 마스터 사용자에 대한 개념이 없는 Amazon S3를 사용하므로, IAM 자격 증명을 사용하여 OpenSearch Service 도메인에 스냅샷 리포지토리를 등록해야 합니다.

대부분의 프로그래밍 언어에는 서명 요청에 도움이 되는 라이브러리가 있지만, 더 간단한 방법은 Postman과 같은 도구를 사용하여 IAM 자격 증명을 권한 부여 섹션에 넣는 것입니다.

스냅샷을 복원하려면
  1. 요청에 서명하는 방법과 관계없이 첫 번째 단계는 리포지토리를 등록하는 것입니다.

    PUT _snapshot/my-snapshot-repo-name { "type": "s3", "settings": { "bucket": "bucket-name", "region": "us-west-2", "role_arn": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole" } }
  2. 그런 다음 리포지토리에 있는 스냅샷을 나열하고 복원할 스냅샷을 찾습니다. 이 시점에서 Postman을 계속 사용하거나 curl과 같은 도구로 전환할 수 있습니다.

    간편

    GET _snapshot/my-snapshot-repo-name/_all

    curl

    curl -XGET -u 'master-user:master-user-password' https://domain-endpoint/_snapshot/my-snapshot-repo-name/_all
  3. 스냅샷을 복원합니다.

    간편

    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}'
  4. 마지막으로 인덱스가 예상대로 복원되었는지 확인합니다.

    간편

    GET _cat/indices?v

    curl

    curl -XGET -u 'master-user:master-user-password' https://domain-endpoint/_cat/indices?v

이 시점에서 마이그레이션이 완료됩니다. 새 OpenSearch 엔드포인트를 사용하도록 클라이언트를 구성하거나, 워크로드에 맞게 도메인 크기를 조정하거나, 인덱스의 샤드 수를 확인하거나, IAM 마스터 사용자로 전환하거나, OpenSearch Dashboards에서 시각화를 구축할 수 있습니다.