Amazon OpenSearch Service의 클러스터 간 복제 - Amazon OpenSearch 서비스

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

Amazon OpenSearch Service의 클러스터 간 복제

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

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

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

참고

이 설명서에서는 Amazon OpenSearch Service 관점에서 교차 클러스터 복제를 설정하는 방법을 설명합니다. 여기에는 AWS Management Console을 사용하여 자체 관리형 OpenSearch 클러스터에서는 불가능한 교차 클러스터 연결을 설정하는 작업이 포함됩니다. 설정 참조 및 포괄적인 API 참조를 포함한 전체 설명서는 OpenSearch 설명서의 Cross-cluster replication을 참조하세요.

제한 사항

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

  • 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 문서에서 복제 권한을 참조하세요.

참고

복제를 시작하고 복제 규칙을 생성하는 명령은 특별한 경우입니다. 리더 도메인과 팔로워 도메인에서 백그라운드 프로세스를 호출하기 때문에 요청에서 leader_cluster_rolefollower_cluster_role을(를) 통과해야 합니다. OpenSearch Service는 모든 백엔드 복제 작업에서 이러한 역할을 사용합니다. 이러한 역할을 매핑하고 사용하는 데 대한 자세한 내용은 OpenSearch 문서에서 리더 및 팔로워 클러스터 역할 매핑을 참조하세요.

클러스터 간 연결 설정

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

참고

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

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

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

  3. AWS 계정 및 리전 또는 다른 계정 또는 리전의 도메인 연결 중에서 선택합니다.

    • AWS 계정 및 리전의 도메인에 연결하려면 도메인을 선택하고 [요청(Request)]을 선택합니다.

    • 다른 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 Service에서는 패턴과 일치하는 기존 인덱스와 사용자가 생성하는 새 인덱스를 복제합니다. 팔로워 도메인에 이미 있는 인덱스는 복제하지 않습니다.

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

복제 규칙 생성

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

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 Service가 패턴과 일치하는 인덱스의 복제를 중지하지만, 기존 복제 작업은 해당 인덱스의 복제를 중지할 때까지 계속합니다.

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

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

연결된 도메인 업그레이드

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