Amazon OpenSearch Service용 콜드 스토리지 - 아마존 OpenSearch 서비스

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

Amazon OpenSearch Service용 콜드 스토리지

콜드 스토리지를 사용하면 Amazon OpenSearch Service 도메인에 액세스 빈도가 낮은 데이터 또는 기록 데이터를 저장하고 필요에 따라 다른 스토리지 계층보다 저렴한 비용으로 분석할 수 있습니다. 콜드 스토리지는 오래된 데이터에 대한 정기적인 연구 또는 포렌식 분석을 수행해야 하는 경우에 적합합니다. 콜드 스토리지에 적합한 데이터의 실용적인 예로는 액세스 빈도가 낮은 로그, 규정 준수 요구 사항을 충족하기 위해 보존해야 하는 데이터 또는 기록 가치가 있는 로그가 있습니다.

UltraWarm스토리지와 마찬가지로 콜드 스토리지는 Amazon S3 에서 지원됩니다. 콜드 데이터를 쿼리해야 하는 경우 기존 UltraWarm 노드에 선택적으로 연결할 수 있습니다. 수동으로 또는 인덱스 상태 관리 정책을 사용하여 콜드 데이터의 마이그레이션 및 수명 주기를 관리할 수 있습니다.

필수 조건

콜드 스토리지에는 다음과 같은 사전 요구 사항이 있습니다.

  • 콜드 스토리지를 사용하려면 OpenSearch 또는 Elasticsearch 버전 7.9 이상이 필요합니다.

  • OpenSearch Service 도메인에서 콜드 스토리지를 활성화하려면 동일한 도메인에서 UltraWarm도 활성화해야 합니다.

  • 콜드 스토리지를 사용하려면 도메인에 전용 프라이머리 노드가 있어야 합니다.

  • 도메인에서 데이터 노드에 T2 또는 T3 인스턴스 유형을 사용하는 경우, 콜드 스토리지를 사용할 수 없습니다.

  • 인덱스가 Zstandard 압축 코덱("index.codec": "zstd" 또는 "index.codec": "zstd_no_dict")을 사용하는 경우 인덱스를 콜드 스토리지로 이동할 수 없습니다.

  • 인덱스가 근사 k-NN("index.knn": true)을 사용하는 경우 콜드 스토리지로 이동할 수 없습니다.

  • 도메인에서 세분화된 액세스 제어를 사용하는 경우 관리자가 아닌 사용자는 OpenSearch Dashboards에서 cold_manager 역할에 매핑되어 콜드 인덱스를 관리해야 합니다.

참고

cold_manager 역할이 일부 기존 OpenSearch Service 도메인에 존재하지 않을 수 있습니다. Dashboards에 역할이 보이지 않으면 수동으로 생성해야 합니다.

권한 구성

기존 OpenSearch Service 도메인에서 콜드 스토리지를 활성화한 경우 cold_manager 역할이 도메인에 정의되어 있지 않을 수 있습니다. 도메인에서 세분화된 액세스 제어를 사용하는 경우 관리자가 아닌 사용자는 이 역할에 매핑되어 콜드 인덱스를 관리해야 합니다. 수동으로 cold_manager 역할을 생성하려면 다음 단계를 수행합니다.

  1. OpenSearch Dashboards에서 보안(Security)으로 이동하여 권한(Permissions)을 선택합니다.

  2. 작업 그룹 생성(Create action group)을 선택하고 다음 그룹을 구성합니다.

    그룹 이름 권한
    cold_cluster
    • cluster:monitor/nodes/stats

    • cluster:admin/ultrawarm*

    • cluster:admin/cold/*

    cold_index
    • indices:monitor/stats

    • indices:data/read/minmax

    • indices:admin/ultrawarm/migration/get

    • indices:admin/ultrawarm/migration/cancel

  3. 역할(Roles)역할 생성(Create role)을 차례로 선택합니다.

  4. 역할 이름을 cold_manager로 지정합니다.

  5. 클러스터 권한(Cluster permissions)의 경우 생성한 cold_cluster 그룹을 선택합니다.

  6. 인덱스(Index)*를 입력합니다.

  7. 인덱스 권한(Index permissions)의 경우 생성한 cold_index 그룹을 선택합니다.

  8. 생성을 선택합니다.

  9. 역할을 생성한 후, 콜드 인덱스를 관리하는 모든 사용자 또는 백엔드 역할에 매핑합니다.

콜드 스토리지 요구 사항 및 성능 고려 사항

콜드 스토리지는 Amazon S3를 사용하기 때문에 복제본, Linux 예약 공간 및 OpenSearch Service 예약 공간과 같은 핫 스토리지의 오버헤드가 발생하지 않습니다. 콜드 스토리지에는 컴퓨팅 용량이 연결되어 있지 않기 때문에 특정 인스턴스 유형이 없습니다. 콜드 스토리지에 원하는 양의 데이터를 저장할 수 있습니다. Amazon CloudWatch에서 ColdStorageSpaceUtilization 지표를 모니터링하여 사용 중인 콜드 스토리지 공간의 양을 확인할 수 있습니다.

콜드 스토리지 요금

UltraWarm 스토리지와 마찬가지로 콜드 스토리지를 사용하면 데이터 스토리지에 대해서만 비용을 지불합니다. 콜드 데이터에 대한 컴퓨팅 비용이 없으며 콜드 스토리지에 데이터가 없는 경우 요금이 청구되지 않습니다.

콜드 스토리지와 웜 스토리지 간에 데이터를 이동할 때 전송 요금이 발생하지 않습니다. 웜 스토리지와 콜드 스토리지 간에 인덱스를 마이그레이션하는 동안에는 인덱스 복사본 하나에 대해서만 비용을 계속 지불합니다. 마이그레이션이 완료되면 마이그레이션된 스토리지 계층에 따라 인덱스가 청구됩니다. 콜드 스토리지 요금에 대한 자세한 내용은 Amazon OpenSearch Service 요금을 참조하세요.

콜드 스토리지 활성화

콘솔은 콜드 스토리지를 사용하는 도메인을 생성하는 가장 간단한 방법입니다. 도메인을 생성하는 동안 콜드 스토리지 활성화(Enable cold storage)를 선택합니다. 사전 조건을 충족하는 경우 기존 도메인에서도 동일한 프로세스가 적용됩니다. 도메인 상태가 처리 중(Processing)에서 활성(Active)으로 변경된 후에도 콜드 스토리지를 몇 시간 동안 사용하지 못할 수 있습니다.

AWS CLI 또는 구성 API를 사용하여 콜드 스토리지를 활성화할 수도 있습니다.

CLI 명령 예

다음 AWS CLI 명령은 3개의 데이터 노드, 3개의 전용 프라이머리 노드, 활성화된 콜드 스토리지 및 세분화된 액세스 제어가 활성화되어 있는 도메인을 생성합니다.

aws opensearch create-domain \ --domain-name my-domain \ --engine-version Opensearch_1.0 \ --cluster-config ColdStorageOptions={Enabled=true},WarmEnabled=true,WarmCount=4,WarmType=ultrawarm1.medium.search,InstanceType=r6g.large.search,DedicatedMasterEnabled=true,DedicatedMasterType=r6g.large.search,DedicatedMasterCount=3,InstanceCount=3 \ --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=11 \ --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-password}' \ --region us-east-2

자세한 내용은 AWS CLI 명령 참조를 참조하세요.

샘플 구성 API 요청

구성 API에 대한 다음 요청은 3개의 데이터 노드, 3개의 전용 프라이머리 노드, 활성화된 콜드 스토리지 및 세분화된 액세스 제어가 활성화되어 있는 도메인을 생성합니다.

POST https://es.us-east-2.amazonaws.com/2021-01-01/opensearch/domain { "ClusterConfig": { "InstanceCount": 3, "InstanceType": "r6g.large.search", "DedicatedMasterEnabled": true, "DedicatedMasterType": "r6g.large.search", "DedicatedMasterCount": 3, "ZoneAwarenessEnabled": true, "ZoneAwarenessConfig": { "AvailabilityZoneCount": 3 }, "WarmEnabled": true, "WarmCount": 4, "WarmType": "ultrawarm1.medium.search", "ColdStorageOptions": { "Enabled": true } }, "EBSOptions": { "EBSEnabled": true, "VolumeType": "gp2", "VolumeSize": 11 }, "EncryptionAtRestOptions": { "Enabled": true }, "NodeToNodeEncryptionOptions": { "Enabled": true }, "DomainEndpointOptions": { "EnforceHTTPS": true, "TLSSecurityPolicy": "Policy-Min-TLS-1-2-2019-07" }, "AdvancedSecurityOptions": { "Enabled": true, "InternalUserDatabaseEnabled": true, "MasterUserOptions": { "MasterUserName": "master-user", "MasterUserPassword": "master-password" } }, "EngineVersion": "Opensearch_1.0", "DomainName": "my-domain" }

자세한 내용은 Amazon OpenSearch Service 참조를 참조하세요.

OpenSearch Dashboards의 콜드 인덱스 관리

OpenSearch Service 도메인의 기존 Dashboards 인터페이스를 사용하여 핫 인덱스, 웜 인덱스 및 콜드 인덱스를 관리할 수 있습니다. Dashboards를 사용하면 CLI 또는 구성 API를 사용하지 않고도 웜 스토리지와 콜드 스토리지 간에 인덱스를 마이그레이션하고 인덱스 마이그레이션 상태를 모니터링할 수 있습니다. 자세한 내용은 OpenSearch Dashboards의 인덱스 관리를 참조하세요.

콜드 스토리지로 인덱스 마이그레이션

콜드 스토리지로 인덱스를 마이그레이션하는 경우 데이터를 더욱 쉽게 검색할 수 있도록 시간 범위를 제공합니다. 인덱스의 데이터를 기반으로 타임스탬프 필드를 선택하거나, 시작 및 종료 타임스탬프를 수동으로 제공하거나, 타임스탬프를 지정하지 않도록 선택할 수 있습니다.

파라미터 지원되는 값 설명
timestamp_field 인덱스 매핑의 날짜/시간 필드입니다.

제공된 필드의 최솟값과 최댓값이 계산되어 콜드 인덱스에 대한 start_timeend_time 메타데이터로 저장됩니다.

start_timeend_time

다음 형식 중 하나:

  • strict_date_optional_time. 예: yyyy-MM-dd'T'HH:mm:ss.SSSZ 또는 yyyy-MM-dd

  • Epoch 시간(밀리초)

제공된 값은 콜드 인덱스에 대한 start_timeend_time 메타데이터로 저장됩니다.

타임 스탬프를 지정하지 않으려면 대신 ?ignore=timestamp를 요청에 추가합니다.

다음 요청은 웜 인덱스를 콜드 스토리지로 마이그레이션하고 해당 인덱스의 데이터에 대한 시작 및 종료 시간을 제공합니다.

POST _ultrawarm/migration/my-index/_cold { "start_time": "2020-03-09", "end_time": "2020-03-09T23:00:00Z" }

그런 다음 마이그레이션 상태를 확인합니다.

GET _ultrawarm/migration/my-index/_status { "migration_status": { "index": "my-index", "state": "RUNNING_METADATA_RELOCATION", "migration_type": "WARM_TO_COLD" } }

OpenSearch Service는 한 번에 하나의 인덱스를 콜드 스토리지로 마이그레이션합니다. 대기열에 최대 100번의 마이그레이션이 있을 수 있습니다. 한도를 초과하는 요청은 거부됩니다. 현재 대기열의 마이그레이션 번호를 확인하려면 WarmToColdMigrationQueueSize 지표를 모니터링합니다. 마이그레이션 프로세스의 상태는 다음과 같습니다.

ACCEPTED_COLD_MIGRATION - Migration request is accepted and queued. RUNNING_METADATA_MIGRATION - The migration request was selected for execution and metadata is migrating to cold storage. FAILED_METADATA_MIGRATION - The attempt to add index metadata has failed and all retries are exhausted. PENDING_INDEX_DETACH - Index metadata migration to cold storage is completed. Preparing to detach the warm index state from the local cluster. RUNNING_INDEX_DETACH - Local warm index state from the cluster is being removed. Upon success, the migration request will be completed. FAILED_INDEX_DETACH - The index detach process failed and all retries are exhausted.

콜드 스토리지로 마이그레이션 자동화

인덱스가 특정 기간에 도달하거나 다른 조건을 충족한 후에는 인덱스 상태 관리를 사용하여 마이그레이션 프로세스를 자동화할 수 있습니다. 샘플 정책을 참조하세요. 핫 스토리지에서 UltraWarm, 콜드 스토리지로 인덱스를 자동 마이그레이션하는 방법을 보여줍니다.

참고

명시적 timestamp_field은(는) 인덱스 상태 관리 정책을 사용하여 인덱스를 콜드 스토리지로 이동하는 데 필요합니다.

콜드 스토리지로의 마이그레이션 취소

콜드 스토리지로의 마이그레이션이 대기 중이거나 실패 상태인 경우 다음 요청을 사용하여 마이그레이션을 취소할 수 있습니다.

POST _ultrawarm/migration/_cancel/my-index { "acknowledged" : true }

도메인에서 세분화된 액세스 제어를 사용하는 경우 이 요청을 하기 위해 indices:admin/ultrawarm/migration/cancel 권한이 필요합니다.

콜드 인덱스 목록 표시

쿼리하기 전에 콜드 스토리지에 인덱스를 나열하여 추가 분석을 위해 UltraWarm으로 마이그레이션할 인덱스를 결정할 수 있습니다. 다음 요청에는 인덱스 이름별로 정렬된 모든 콜드 인덱스가 나열됩니다.

GET _cold/indices/_search

샘플 응답

{ "pagination_id" : "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "total_results" : 3, "indices" : [ { "index" : "my-index-1", "index_cold_uuid" : "hjEoh26mRRCFxRIMdgvLmg", "size" : 10339, "creation_date" : "2021-06-28T20:23:31.206Z", "start_time" : "2020-03-09T00:00Z", "end_time" : "2020-03-09T23:00Z" }, { "index" : "my-index-2", "index_cold_uuid" : "0vIS2n-oROmOWDFmwFIgdw", "size" : 6068, "creation_date" : "2021-07-15T19:41:18.046Z", "start_time" : "2020-03-09T00:00Z", "end_time" : "2020-03-09T23:00Z" }, { "index" : "my-index-3", "index_cold_uuid" : "EaeXOBodTLiDYcivKsXVLQ", "size" : 32403, "creation_date" : "2021-07-08T00:12:01.523Z", "start_time" : "2020-03-09T00:00Z", "end_time" : "2020-03-09T23:00Z" } ] }

필터링

접두사 기반 인덱스 패턴 및 시간 범위 오프셋을 기반으로 콜드 인덱스를 필터링할 수 있습니다.

다음 요청은 event-*의 접두사 패턴과 일치하는 인덱스를 나열합니다.

GET _cold/indices/_search { "filters":{ "index_pattern": "event-*" } }

샘플 응답

{ "pagination_id" : "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "total_results" : 1, "indices" : [ { "index" : "events-index", "index_cold_uuid" : "4eFiab7rRfSvp3slrIsIKA", "size" : 32263273, "creation_date" : "2021-08-18T18:25:31.845Z", "start_time" : "2020-03-09T00:00Z", "end_time" : "2020-03-09T23:00Z" } ] }

다음 요청은 2019-03-01~2020-03-01start_timeend_time 메타데이터 필드를 사용하여 인덱스를 반환합니다.

GET _cold/indices/_search { "filters": { "time_range": { "start_time": "2019-03-01", "end_time": "2020-03-01" } } }

샘플 응답

{ "pagination_id" : "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "total_results" : 1, "indices" : [ { "index" : "my-index", "index_cold_uuid" : "4eFiab7rRfSvp3slrIsIKA", "size" : 32263273, "creation_date" : "2021-08-18T18:25:31.845Z", "start_time" : "2019-05-09T00:00Z", "end_time" : "2019-09-09T23:00Z" } ] }

정렬

인덱스 이름이나 크기와 같은 메타데이터 필드별로 콜드 인덱스를 정렬할 수 있습니다. 다음 요청은 크기별로 정렬된 모든 인덱스를 내림차순으로 나열합니다.

GET _cold/indices/_search { "sort_key": "size:desc" }

샘플 응답

{ "pagination_id" : "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "total_results" : 5, "indices" : [ { "index" : "my-index-6", "index_cold_uuid" : "4eFiab7rRfSvp3slrIsIKA", "size" : 32263273, "creation_date" : "2021-08-18T18:25:31.845Z", "start_time" : "2020-03-09T00:00Z", "end_time" : "2020-03-09T23:00Z" }, { "index" : "my-index-9", "index_cold_uuid" : "mbD3ZRVDRI6ONqgEOsJyUA", "size" : 57922, "creation_date" : "2021-07-07T23:41:35.640Z", "start_time" : "2020-03-09T00:00Z", "end_time" : "2020-03-09T23:00Z" }, { "index" : "my-index-5", "index_cold_uuid" : "EaeXOBodTLiDYcivKsXVLQ", "size" : 32403, "creation_date" : "2021-07-08T00:12:01.523Z", "start_time" : "2020-03-09T00:00Z", "end_time" : "2020-03-09T23:00Z" } ] }

다른 유효한 정렬 키는start_time:asc/desc, end_time:asc/desc, index_name:asc/desc입니다.

페이지 매김

콜드 인덱스 목록을 페이지 매김할 수 있습니다. page_size 파라미터를 사용해 페이지당 반환될 인덱스 수를 구성합니다(기본값은 10). 콜드 인덱스에 대한 모든 _search 요청은 후속 호출에 사용할 수 있는 pagination_id을(를) 반환합니다.

다음 요청은 콜드 인덱스의 _search 요청 결과를 페이지 매김하고 다음 100개의 결과를 표시합니다.

GET _cold/indices/_search?page_size=100 { "pagination_id": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY" }

웜 스토리지로 콜드 인덱스 마이그레이션

이전 섹션의 필터링 기준을 적용해 콜드 인덱스 목록 범위를 좁힌 후, 데이터를 쿼리하고 이를 사용해 시각화를 생성할 수 있는 UltraWarm으로 다시 마이그레이션합니다.

다음 요청은 두 콜드 인덱스를 다시 웜 스토리지로 마이그레이션합니다.

POST _cold/migration/_warm { "indices": "my-index1,my-index2" } { "acknowledged" : true }

마이그레이션 상태를 확인하고 마이그레이션 ID를 검색하려면 다음 요청을 보냅니다.

GET _cold/migration/_status

샘플 응답

{ "cold_to_warm_migration_status" : [ { "migration_id" : "tyLjXCA-S76zPQbPVHkOKA", "indices" : [ "my-index1,my-index2" ], "state" : "RUNNING_INDEX_CREATION" } ] }

인덱스 관련 마이그레이션 정보를 가져오려면 인덱스 이름을 포함하세요.

GET _cold/migration/my-index/_status

인덱스를 지정하는 대신 현재 마이그레이션 상태별로 인덱스를 나열할 수 있습니다. 유횻값은 _failed, _accepted, _all입니다.

다음 명령은 단일 마이그레이션 요청에서 모든 인덱스의 상태를 가져옵니다.

GET _cold/migration/_status?migration_id=my-migration-id

상태 요청을 사용하여 마이그레이션 ID를 검색합니다. 자세한 마이그레이션 정보를 보려면 &verbose=true를 추가합니다.

최대 100개의 지표를 동시에 마이그레이션하여 콜드 스토리지에서 웜 스토리지로 인덱스를 10개 이하의 배치에 마이그레이션할 수 있습니다. 한도를 초과하는 요청은 거부됩니다. 현재 수행하고 있는 마이그레이션 번호를 확인하려면 ColdToWarmMigrationQueueSize 지표를 모니터링합니다. 마이그레이션 프로세스의 상태는 다음과 같습니다.

ACCEPTED_MIGRATION_REQUEST - Migration request is accepted and queued. RUNNING_INDEX_CREATION - Migration request is picked up for processing and will create warm indexes in the cluster. PENDING_COLD_METADATA_CLEANUP - Warm index is created and the migration service will attempt to clean up cold metadata. RUNNING_COLD_METADATA_CLEANUP - Cleaning up cold metadata from the indexes migrated to warm storage. FAILED_COLD_METADATA_CLEANUP - Failed to clean up metadata in the cold tier. FAILED_INDEX_CREATION - Failed to create an index in the warm tier.

스냅샷에서 콜드 인덱스 복원

삭제된 콜드 인덱스를 복원해야 하는 경우 스냅샷에서 웜 인덱스 복원의 지침에 따라 다시 웜 티어로 복원한 다음 인덱스를 다시 콜드 티어로 마이그레이션하면 됩니다. 삭제된 콜드 인덱스를 콜드 티어에 직접 복원할 수는 없습니다. OpenSearch Service는 콜드 인덱스를 삭제한 후 14일 동안 유지합니다.

콜드 스토리지에서 웜 스토리지로의 마이그레이션 취소

콜드 스토리지에서 웜 스토리지로의 인덱스 마이그레이션이 대기 중이거나 실패 상태인 경우 다음 요청으로 취소할 수 있습니다.

POST _cold/migration/my-index/_cancel { "acknowledged" : true }

인덱스 배치에 대한 마이그레이션을 취소하려면(한 번에 최대 10개) 마이그레이션 ID를 지정합니다.

POST _cold/migration/_cancel?migration_id=my-migration-id { "acknowledged" : true }

상태 요청을 사용하여 마이그레이션 ID를 검색합니다.

콜드 인덱스 메타데이터 업데이트

콜드 인덱스에 대한 start_timeend_time 필드를 업데이트할 수 있습니다.

PATCH _cold/my-index { "start_time": "2020-01-01", "end_time": "2020-02-01" }

콜드 스토리지에 있는 인덱스의 timestamp_field를 업데이트할 수 없습니다.

참고

OpenSearch Dashboards는 PATCH 메서드를 지원하지 않습니다. curl, Postman 또는 다른 메서드를 사용하여 콜드 메타데이터를 업데이트합니다.

콜드 인덱스 삭제

ISM 정책을 사용하지 않는 경우 콜드 인덱스를 수동으로 삭제할 수 있습니다. 다음 요청은 콜드 인덱스를 삭제합니다.

DELETE _cold/my-index { "acknowledged" : true }

콜드 스토리지 비활성화

OpenSearch Service 콘솔은 콜드 스토리지를 비활성화하는 가장 간단한 방법입니다. 도메인을 선택하고 [작업(Actions)], [클러스터 구성 편집(Edit cluster configuration)]을 선택한 다음 [콜드 스토리지 사용(Enable cold storage)]을 선택 취소합니다.

AWS CLI 또는 구성 API를 사용하려면 ColdStorageOptions에서 "Enabled"="false"를 설정합니다.

콜드 스토리지를 비활성화하기 전에 모든 콜드 인덱스를 삭제하거나 웜 스토리지로 다시 마이그레이션해야 합니다. 그렇지 않으면 비활성화 작업이 실패합니다.