Amazon OpenSearch 서비스를 위한 클러스터 간 복제 - 아마존 OpenSearch 서비스

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

Amazon OpenSearch 서비스를 위한 클러스터 간 복제

Amazon OpenSearch Service의 클러스터 간 복제를 사용하면 한 OpenSearch 서비스 도메인에서 다른 서비스 도메인으로 사용자 인덱스, 매핑 및 메타데이터를 복제할 수 있습니다. 클러스터 간 복제를 사용하면 중단 시 재해 복구를 보장하는 데 도움이 되며, 지리적으로 멀리 떨어진 데이터 센터 간에 데이터를 복제하여 대기 시간을 줄일 수 있습니다. 도메인 간에 전송된 데이터에 대해서는 표준 AWS 데이터 전송 요금을 지불합니다.

클러스터 간 복제는 로컬 또는 팔로어 인덱스가 원격 또는 리더 인덱스에서 데이터를 가져오는 액티브-패시브 복제 모델을 따릅니다. 리더 인덱스는 데이터 원본 또는 데이터를 복제하려는 인덱스를 나타냅니다. 팔로워 인덱스는 데이터 대상 또는 데이터를 복제하려는 인덱스를 나타냅니다.

클러스터 간 복제는 Elasticsearch 7.10 또는 OpenSearch 1.1 이상을 실행하는 도메인에서 사용할 수 있습니다.

참고

이 설명서는 Amazon OpenSearch Service 관점에서 클러스터 간 복제를 설정하는 방법을 설명합니다. 여기에는 를 사용하여 클러스터 간 연결을 설정하는 AWS Management Console 것도 포함되며, 이는 자체 OpenSearch 관리형 클러스터에서는 불가능합니다. 설정 참조 및 포괄적인 API 참조를 포함한 전체 설명서는 설명서의 클러스터 간 복제를 참조하십시오. OpenSearch

제한 사항

클러스터 간 복제에는 다음 제한 사항이 적용됩니다.

  • Amazon OpenSearch Service 도메인과 자체 관리형 OpenSearch 또는 Elasticsearch 클러스터 간에는 데이터를 복제할 수 없습니다.

  • 팔로워 도메인의 인덱스를 다른 팔로워 도메인으로 복제할 수 없습니다. 인덱스를 여러 팔로워 도메인에 복제하려는 경우 단일 리더 도메인에서만 복제할 수 있습니다.

  • 도메인은 인바운드 연결과 아웃바운드 연결의 조합을 통해 최대 20개의 다른 도메인에 연결할 수 있습니다.

  • 클러스터 간 연결을 처음 설정할 때는 리더 도메인이 팔로워 도메인과 같거나 상위 버전에 있어야 합니다.

  • 도메인을 연결하는 데는 사용할 AWS CloudFormation 수 없습니다.

  • M3 또는 버스트 가능(T2 및 T3) 인스턴스에서는 클러스터 간 복제를 사용할 수 없습니다.

  • 콜드 인덱스 UltraWarm 간에는 데이터를 복제할 수 없습니다. 두 인덱스 모두 핫 스토리지에 있어야 합니다.

  • 리더 도메인에서 인덱스를 삭제해도 팔로워 도메인의 해당 인덱스는 자동으로 삭제되지 않습니다.

필수 조건

클러스터 간 복제를 설정하기 전에 도메인이 다음 요구 사항을 충족하는지 확인하세요.

권한 요구 사항

복제를 시작하려면 원격(리더) 도메인에 대한 es:ESCrossClusterGet 권한을 포함해야 합니다. 원격 도메인에서 다음 IAM 정책을 사용하는 것이 좋습니다. 이 정책을 사용하면 문서 인덱싱 및 표준 검색 수행과 같은 다른 작업까지 수행할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:region:account:domain/leader-domain/*" }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESCrossClusterGet", "Resource": "arn:aws:es:region:account:domain/leader-domain" } ] }

es:ESCrossClusterGet 권한이 /leader-domain/*이 아닌 /leader-domain에 적용되었는지 확인합니다.

관리자가 아닌 사용자가 복제 작업을 수행하려면 해당 사용자도 적절한 권한에 매핑되어야 합니다. 대부분의 권한은 특정 REST API 작업에 해당합니다. 예를 들어 indices:admin/plugins/replication/index/_resume 권한을 사용하면 인덱스 복제를 재개할 수 있습니다. 전체 권한 목록은 OpenSearch 설명서의 복제 권한을 참조하십시오.

참고

복제를 시작하고 복제 규칙을 생성하는 명령은 특별한 경우입니다. 리더 도메인과 팔로워 도메인에서 백그라운드 프로세스를 호출하므로 follower_cluster_role 요청에서 and를 전달해야 합니다. leader_cluster_role OpenSearch 서비스는 모든 백엔드 복제 작업에서 이러한 역할을 사용합니다. 이러한 역할을 매핑하고 사용하는 방법에 대한 자세한 내용은 설명서의 리더 및 팔로워 클러스터 역할 매핑을 OpenSearch 참조하십시오.

클러스터 간 연결 설정

특정 도메인에서 다른 도메인으로 인덱스를 복제하려면 도메인 간에 클러스터 간 연결을 설정해야 합니다. 도메인을 연결하는 가장 쉬운 방법은 도메인 대시보드의 [연결(Connections)] 탭을 사용하는 것입니다. 구성 API 또는 AWS CLI를 사용할 수도 있습니다. 클러스터 간 복제는 ‘풀’ 모델을 따르므로 팔로워 도메인에서 연결을 초기화합니다.

참고

이전에 클러스터 간 검색을 수행하기 위해 2개의 도메인을 연결한 경우, 동일한 연결을 복제에 사용할 수 없습니다. 해당 연결은 콘솔에서 SEARCH_ONLY로 표시됩니다. 이전에 연결된 두 도메인 간에 복제를 수행하려면 연결을 삭제하고 다시 생성해야 합니다. 이렇게 하면 교차 클러스터 검색 및 교차 클러스터 복제 모두에 연결을 사용할 수 있습니다.

연결을 설정하려면
  1. Amazon OpenSearch Service 콘솔에서 팔로워 도메인을 선택하고 [연결] 탭으로 이동한 다음 [Request] 를 선택합니다.

  2. [연결 별칭(Connection alias)]에 연결 이름을 입력합니다.

  3. 내 AWS 계정 및 지역의 도메인에 연결할지, 다른 계정이나 지역의 도메인에 연결할지 선택합니다.

    • 사용자 AWS 계정 및 지역의 도메인에 연결하려면 도메인을 선택하고 요청을 선택합니다.

    • 다른 도메인 AWS 계정 또는 지역에 있는 도메인에 연결하려면 원격 도메인의 ARN을 지정하고 Request를 선택합니다.

OpenSearch 서비스는 연결 요청을 검증합니다. 도메인이 서로 호환되지 않으면 연결이 실패합니다. 검증에 성공하면 승인을 위해 대상 도메인으로 전송됩니다. 대상 도메인이 요청을 승인하면 복제를 시작할 수 있습니다.

클러스터 간 복제는 양방향 복제를 지원합니다. 즉, 도메인 A에서 도메인 B로의 아웃바운드 연결과 도메인 B에서 도메인 A로의 또 다른 아웃바운드 연결을 만들 수 있습니다. 그런 다음 도메인 A가 도메인 B의 인덱스를 따르고 도메인 B가 도메인 A의 인덱스를 따르도록 복제를 설정할 수 있습니다.

복제 시작

클러스터 간 연결을 설정하고 나면 데이터 복제를 시작할 수 있습니다. 먼저 복제할 리더 도메인에 인덱스를 생성합니다.

PUT leader-01

해당 인덱스를 복제하기 위해 다음 명령을 팔로워 도메인으로 보냅니다.

PUT _plugins/_replication/follower-01/_start { "leader_alias": "connection-alias", "leader_index": "leader-01", "use_roles":{ "leader_cluster_role": "all_access", "follower_cluster_role": "all_access" } }

도메인 대시보드의 연결(Connections) 탭에서 연결 별칭을 찾을 수 있습니다.

이 예에서는 설명의 편의를 위해 관리자가 요청을 실행하고 leader_cluster_rolefollower_cluster_role(으)로 all_access을(를) 사용하는 것으로 가정합니다. 하지만 프로덕션 환경에서는 리더 및 팔로워 인덱스 모두에 복제 사용자를 생성하고 그에 따라 매핑하는 것이 좋습니다. 사용자 이름은 동일해야 합니다. 이러한 역할과 역할을 매핑하는 방법에 대한 자세한 내용은 설명서의 리더 및 팔로워 클러스터 역할 매핑을 OpenSearch 참조하십시오.

복제 확인

복제가 진행되고 있는지 확인하려면 복제 상태를 가져옵니다.

GET _plugins/_replication/follower-01/_status { "status" : "SYNCING", "reason" : "User initiated", "leader_alias" : "connection-alias", "leader_index" : "leader-01", "follower_index" : "follower-01", "syncing_details" : { "leader_checkpoint" : -5, "follower_checkpoint" : -5, "seq_no" : 0 } }

리더 및 팔로워 체크포인트 값은 음의 정수로 시작하며, 보유한 샤드 수를 반영합니다(샤드가 하나인 경우 -1, 샤드가 5개인 경우 -5 등과 같은 식임). 변경할 때마다 값이 양의 정수로 증가합니다. 값이 동일하면 인덱스가 완전히 동기화되었음을 의미합니다. 이러한 체크포인트 값을 사용하여 도메인 전체의 복제 대기 시간을 측정할 수 있습니다.

복제를 추가로 검증하려면 리더 인덱스에 문서를 추가합니다.

PUT leader-01/_doc/1 { "Doctor Sleep":"Stephen King" }

그리고 팔로워 인덱스에 표시되는지 확인합니다.

GET follower-01/_search { ... "max_score" : 1.0, "hits" : [ { "_index" : "follower-01", "_type" : "_doc", "_id" : "1", "_score" : 1.0, "_source" : { "Doctor Sleep" : "Stephen King" } } ] } }

복제 일시 중지 및 다시 시작

문제를 해결하거나 리더 도메인의 부하를 줄여야 하는 경우 복제를 일시적으로 중지할 수 있습니다. 이 요청을 팔로워 도메인에 보냅니다. 다음과 같이 빈 요청 본문을 포함해야 합니다.

POST _plugins/_replication/follower-01/_pause {}

그런 다음 상태를 가져와 복제가 일시 중지되었는지 확인합니다.

GET _plugins/_replication/follower-01/_status { "status" : "PAUSED", "reason" : "User initiated", "leader_alias" : "connection-alias", "leader_index" : "leader-01", "follower_index" : "follower-01" }

변경을 마치면 복제를 다시 시작합니다. 이 요청을 팔로워 도메인에 보냅니다. 다음과 같이 빈 요청 본문을 포함해야 합니다.

POST _plugins/_replication/follower-01/_resume {}

12시간 이상 일시 중지된 후에는 복제를 재개할 수 없습니다. 복제를 중지하고 팔로워 인덱스를 삭제한 다음 리더의 복제를 다시 시작해야 합니다.

복제 중지

복제를 완전히 중지하면 팔로워 인덱스가 리더를 팔로우하지 않고 표준 인덱스가 됩니다. 복제를 중지한 후에는 다시 시작할 수 없습니다.

팔로워 도메인에서 복제를 중지합니다. 다음과 같이 빈 요청 본문을 포함해야 합니다.

POST _plugins/_replication/follower-01/_stop {}

자동 팔로우

단일 리더 도메인에 대해 지정된 패턴과 일치하는 인덱스를 자동으로 복제하는 일련의 복제 규칙을 정의할 수 있습니다. 리더 도메인의 색인이 패턴 중 하나 (예:books*) 와 일치하면 팔로워 도메인에도 일치하는 팔로워 색인이 만들어집니다. OpenSearch 서비스는 패턴과 일치하는 기존 인덱스와 사용자가 만든 새 인덱스를 모두 복제합니다. 팔로워 도메인에 이미 있는 인덱스는 복제하지 않습니다.

시스템에서 생성한 인덱스와 팔로워 도메인에 이미 있는 인덱스를 제외한 모든 인덱스를 복제하려면 와일드카드(*) 패턴을 사용합니다.

복제 규칙 생성

팔로워 도메인에 복제 규칙을 생성하고 클러스터 간 연결의 이름을 지정합니다.

POST _plugins/_replication/_autofollow { "leader_alias" : "connection-alias", "name": "rule-name", "pattern": "books*", "use_roles":{ "leader_cluster_role": "all_access", "follower_cluster_role": "all_access" } }

도메인 대시보드의 연결(Connections) 탭에서 연결 별칭을 찾을 수 있습니다.

이 예에서는 설명의 편의를 위해 관리자가 요청을 실행하고 리더 및 팔로워 도메인 역할로 all_access을(를) 사용하는 것으로 가정합니다. 하지만 프로덕션 환경에서는 리더 및 팔로워 인덱스 모두에 복제 사용자를 생성하고 그에 따라 매핑하는 것이 좋습니다. 사용자 이름은 동일해야 합니다. 이러한 역할 및 역할을 매핑하는 방법에 대한 자세한 내용은 설명서의 리더 및 팔로워 클러스터 역할 매핑을 참조하십시오. OpenSearch

도메인의 기존 복제 규칙 목록을 검색하려면 자동 팔로우 통계 API 작업을 사용합니다.

규칙을 테스트하려면 리더 도메인의 패턴과 일치하는 인덱스를 생성합니다.

PUT books-are-fun

그리고 해당 복제본이 팔로워 도메인에 표시되는지 확인합니다.

GET _cat/indices health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open books-are-fun ldfHO78xYYdxRMULuiTvSQ 1 1 0 0 208b 208b

복제 규칙 삭제

복제 규칙을 삭제하면 OpenSearch 서비스에서 패턴과 일치하는 인덱스의 복제를 중지하지만 해당 인덱스의 복제를 중지할 때까지 기존 복제 작업을 계속합니다.

팔로워 도메인에서 복제 규칙을 삭제합니다.

DELETE _plugins/_replication/_autofollow { "leader_alias" : "connection-alias", "name": "rule-name" }

연결된 도메인 업그레이드

클러스터 간 연결이 있는 두 도메인의 엔진 버전을 업그레이드하려면 먼저 팔로워 도메인을 업그레이드한 다음 리더 도메인을 업그레이드하십시오. 두 도메인 간 연결을 삭제하면 복제가 일시 중지되고 다시 시작할 수 없으므로 연결을 삭제해서는 안 됩니다.