Amazon Elasticsearch Service 도메인 생성 및 관리 - Amazon Elasticsearch Service

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

Amazon Elasticsearch Service 도메인 생성 및 관리

이 장에서는 Amazon Elasticsearch Service(Amazon ES) 도메인을 만들고 관리하는 방법에 대해 설명합니다. Amazon ES 도메인은 Elasticsearch 클러스터와 동의어입니다. 도메인은 설정, 인스턴스 유형, 인스턴스 수, 스토리지 리소스를 지정한 설정입니다.

시작하기 자습서의 간단한 지침과 달리 이 장에서는 모든 옵션에 대해 설명하고 관련 참조 정보를 제공합니다. Amazon ES 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWS SDK에 대한 지침에 따라 각 절차를 완료할 수 있습니다.

Amazon ES 도메인 생성

이 단원에서는 Amazon ES 콘솔을 사용하거나 AWS CLI에서 create-elasticsearch-domain 명령을 사용하여 Amazon ES 도메인을 만드는 방법에 대해 설명합니다.

Amazon ES 도메인 생성(콘솔)

콘솔에서 다음 절차에 따라 Amazon ES 도메인을 만듭니다.

Amazon ES 도메인을 만들려면(콘솔)

  1. https://aws.amazon.com으로 이동하여 Sign In to the Console(콘솔에 로그인)을 선택합니다.

  2. Analytics에서 Elasticsearch 서비스를 선택합니다.

  3. Create a new domain(새 도메인 생성)을 선택합니다.

  4. 배포 유형 선택에서 도메인 목적에 가장 적합한 옵션을 선택합니다.

    • 프로덕션 도메인은 높은 가용성을 위해 다중 AZ와 전용 마스터 노드를 사용합니다.

    • 개발 및 테스트 도메인은 단일 가용 영역을 사용합니다.

    • 사용자 지정 도메인을 사용하면 모든 구성 옵션에서 선택할 수 있습니다.

    중요

    배포 유형이 다르면 다음 페이지에 표시되는 옵션도 다릅니다. 이러한 단계에는 모든 옵션(사용자 지정 배포 유형)이 포함됩니다.

  5. Elasticsearch 버전에서 최신 버전을 선택하는 것이 좋습니다. 자세한 내용은 지원되는 Elasticsearch 버전 단원을 참조하십시오.

  6. [Next]를 선택합니다.

  7. Elasticsearch 도메인 이름에 도메인 이름을 입력합니다. 이름은 다음 조건을 충족해야 합니다.

    • 해당 계정 및 리전에서 고유할 것

    • 소문자로 시작할 것

    • 3~28자 사이일 것

    • 소문자 a~z, 숫자 0~9 및 하이픈(-)만 포함할 것

  8. 가용 영역에서 1-AZ, 2-AZ 또는 3-AZ를 선택합니다. 자세한 내용은 다중 AZ 도메인 구성 단원을 참조하십시오.

  9. 인스턴스 유형에서 데이터 노드의 인스턴스 유형을 선택합니다. 자세한 내용은 지원되는 인스턴스 유형을 참조하십시오.

    참고

    모든 가용 영역에서 모든 인스턴스 유형이 지원되는 것은 아닙니다. 3-AZ를 선택할 경우 R5 또는 I3 등의 최신 세대 인스턴스 유형을 선택할 것을 권장합니다.

  10. 노드 수에서 데이터 노드 수를 선택합니다.

    최대값은클러스터 및 인스턴스 제한 단원을 참조하십시오. 단일 노드 클러스터는 개발 및 테스트 용도로 적합할 뿐 프로덕션 워크로드에 사용해서는 안 됩니다. 자세한 지침은 Amazon ES 도메인 크기 조정다중 AZ 도메인 구성 단원을 참조하십시오.

  11. 데이터 노드 스토리지 유형에서 인스턴스(기본값) 또는 EBS를 선택합니다.

    매우 큰 도메인을 생성하기 위한 지침은 페타바이트 규모 단원을 참조하십시오. EBS를 선택하면 다음 옵션이 나타납니다.

    1. EBS volume type(EBS 볼륨 유형)에서 EBS 볼륨 유형을 선택합니다.

      EBS 볼륨 유형으로 프로비저닝된 IOPS(SSD)를 선택하는 경우, 프로비저닝된 IOPS에 대해 원하는 기준 IOPS 성능을 입력합니다. 자세한 내용은 Amazon EC2 설명서의 Amazon EBS 볼륨을 참조하십시오.

    2. EBS storage size per node(노드당 EBS 스토리지 크기)에 각 데이터 노드에 연결할 EBS 볼륨 스토리지의 크기를 입력합니다.

      EBS volume size(EBS 볼륨 크기)는 노드당 크기입니다. 데이터 노드 수에 EBS 볼륨 크기를 곱하여 Amazon ES 도메인의 총 클러스터 크기를 계산할 수 있습니다. EBS 볼륨의 최소 크기 및 최대 크기는 지정된 EBS 볼륨 유형과 볼륨이 연결된 인스턴스 유형에 따라 달라집니다. 자세한 내용은 EBS 볼륨 크기 제한을 참조하십시오.

  12. (선택 사항) 전용 마스터 노드 활성화하거나 비활성화합니다. 전용 마스터 노드는 클러스터 안정성을 높이고 인스턴스 개수가 10개보다 많은 도메인에 필요합니다. 프로덕션 도메인의 경우 3개의 전용 마스터 노드를 권장합니다.

    참고

    전용 마스터 노드와 데이터 노드에 대해 다른 인스턴스 유형을 선택할 수 있습니다. 예를 들면 데이터 노드의 일반 목적 또는 스토리지 최적화 인스턴스를 선택할 수 있지만 전용 마스터 노드의 컴퓨팅에 최적화된 인스턴스는 선택할 수 없습니다.

  13. (선택 사항) UltraWarm 스토리지를 활성화하려면 Enable UltraWarm data nodes(UltraWarm 데이터 노드 활성화)를 선택합니다. 각 인스턴스 유형별로 처리할 수 있는 최대 스토리지 용량이 있습니다. 주소 지정 가능한 총 웜 스토리지에 대한 웜 데이터 노드 수를 이 값에 곱합니다.

  14. (선택 사항) Elasticsearch 5.3 이상을 실행하는 도메인의 경우 자동 스냅샷 시작 시간은 아무 효과도 없습니다. 자동 스냅샷에 대한 자세한 내용은 Amazon Elasticsearch Service 인덱스 스냅샷 작업 단원을 참조하십시오.

  15. (선택 사항) 선택적 Elasticsearch 클러스터 설정을 선택합니다. 이러한 옵션에 대한 요약은 고급 옵션 단원을 참조하십시오.

  16. 다음을 선택합니다.

  17. 네트워크 구성 섹션에서 VPC 액세스 또는 퍼블릭 액세스를 선택합니다. 퍼블릭 액세스를 선택한 경우, 다음 단계로 건너뜁니다. VPC access(VPC 액세스)를 선택한 경우, 사전 요구 사항이 충족되었는지 확인한 후 다음 작업을 수행합니다.

    1. VPC에서 사용하려는 VPC의 ID를 선택합니다.

      참고

      VPC 및 도메인은 동일한 AWS 리전에 있어야 하며 기본값으로 설정된 테넌시를 사용하여 VPC를 선택해야 합니다. Amazon ES는 아직 전용 테넌시를 사용하는 VPC를 지원하지 않습니다.

    2. 서브넷에서 서브넷을 선택합니다. 다중 AZ를 활성화한 경우, 서브넷을 2개 또는 3개 선택해야 합니다. Amazon ES는 서브넷에 VPC 엔드포인트와 탄력적 네트워크 인터페이스를 배치합니다.

      참고

      서브넷(들)에서 네트워크 인터페이스용 IP 주소를 충분히 예약해야 합니다. 자세한 내용은 VPC 서브넷에서 IP 주소 예약 단원을 참조하십시오.

    3. 보안 그룹에서 Amazon ES 도메인에 대한 액세스 권한이 필요한 VPC 보안 그룹을 선택합니다. 자세한 내용은 Amazon Elasticsearch Service 도메인에 대한 VPC 지원 단원을 참조하십시오.

    4. IAM 역할에서는 기본 역할을 유지합니다. Amazon ES가 이 사전 정의된 역할(서비스 연결 역할이라고도 함)을 사용하여 VPC에 액세스하고 VPC의 서브넷에 IAM 엔드포인트와 네트워크 인터페이스를 배치합니다. 자세한 내용은 VPC 액세스를 위한 서비스 연결 역할 단원을 참조하십시오.

  18. Fine-grained access control(세분화된 액세스 제어) 섹션에서 세분화된 액세스 제어를 활성화하거나 비활성화합니다.

    • 사용자 관리에 IAM을 사용하려면 Set IAM role as master user(IAM 역할을 마스터 사용자로 설정)를 선택하고 IAM 역할의 ARN을 지정합니다.

    • 내부 사용자 데이터베이스를 사용하려면 Create a master user(마스터 사용자 생성)를 선택하고 사용자 이름과 암호를 지정합니다.

    어느 옵션을 선택하든 마스터 사용자는 클러스터의 모든 인덱스와 모든 Elasticsearch API에 액세스할 수 있습니다. 선택할 옵션에 대한 지침은 핵심 개념 단원을 참조하십시오.

    세분화된 액세스 제어를 비활성화한 경우에도 VPC 내에 배치하거나 제한적인 액세스 정책을 적용하거나 둘 다를 통해 도메인에 대한 액세스를 제어할 수 있습니다. 세분화된 액세스 제어를 사용하려면 노드 간 암호화 및 유휴 데이터 암호화를 활성화해야 합니다.

  19. (선택 사항) Kibana에 Amazon Cognito 인증을 사용하려면 Enable Amazon Cognito authentication(Amazon Cognito 인증 활성화)을 선택합니다.

    1. Kibana 인증을 사용하려는 Amazon Cognito 사용자 풀과 자격 증명 풀을 선택하십시오. 이러한 리소스를 만드는 방법은 Kibana에 대한 Amazon Cognito 인증 단원을 참조하십시오.

  20. 도메인 액세스 정책의 경우, 원하는 ARN 또는 IP 주소를 추가하거나 드롭다운 목록에서 미리 구성된 정책을 선택합니다. 자세한 내용은 Amazon Elasticsearch Service의 자격 증명 및 액세스 관리VPC 도메인 액세스 정책에 대하여 단원을 참조하십시오.

    참고

    17단계에서 VPC 액세스를 선택한 경우, IP 기반 정책은 금지됩니다. 대신에 보안 그룹을 사용하여 어느 IP 주소가 도메인에 액세스할 수 있는지 제어할 수 있습니다. 자세한 내용은 VPC 도메인 액세스 정책에 대하여 단원을 참조하십시오.

  21. (선택 사항) 도메인에 대한 모든 요청이 HTTPS를 통해 도착하도록 하려면 도메인에 대한 모든 트랙픽에 HTTPS 요구 확인란을 선택합니다.

  22. (선택 사항) 노드 간 암호화를 사용하려면 노드 간 암호화 확인란을 선택합니다. 자세한 내용은 Amazon Elasticsearch Service 노드 간 암호화 단원을 참조하십시오.

  23. (선택 사항) 저장 시 데이터 암호화를 활성화하려면 유휴 시 데이터 암호화 활성화 확인란을 선택합니다.

    Amazon ES에서 사용자를 대신하여 KMS 암호화 키를 생성하도록 하려면(또는 이미 생성된 것을 사용함) (기본값) aws/es를 선택하십시오. 그렇지 않으면 KMS 마스터 키 메뉴에서 KMS 마스터 키를 선택하십시오. 자세한 내용은 Amazon Elasticsearch Service에 대한 유휴 데이터 암호화 단원을 참조하십시오.

  24. [Next]를 선택합니다.

  25. 복습 페이지에서 도메인 구성을 검토한 다음 확인을 선택합니다.

Amazon ES 도메인 생성(AWS CLI)

콘솔을 사용하여 Amazon ES 도메인을 만드는 대신 AWS CLI를 사용할 수 있습니다. 구문은 AWS CLI 명령 참조에서 Amazon Elasticsearch Service를 참조하십시오.

예시 명령

이 첫 번째 예에서는 다음 Amazon ES 도메인 구성을 보여줍니다.

  • Elasticsearch 버전 5.5에서 mylogs라는 Amazon ES 도메인을 만듭니다.

  • 인스턴스 유형이 m4.large.elasticsearch인 인스턴스 2개를 사용하여 도메인을 채웁니다.

  • 각 데이터 노드의 저장에 100GiB 자기 디스크 EBS 볼륨을 사용합니다.

  • 단일 IP 주소(192.0.2.0/32)의 익명 액세스만 허용합니다.

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=2 --ebs-options EBSEnabled=true,VolumeType=standard,VolumeSize=100 --access-policies '{"Version": "2012-10-17", "Statement": [{"Action": "es:*", "Principal":"*","Effect": "Allow", "Condition": {"IpAddress":{"aws:SourceIp":["192.0.2.0/32"]}}}]}'

다음 예에서는 아래 Amazon ES 도메인 구성을 보여줍니다.

  • Elasticsearch 버전 5.5에서 mylogs라는 Amazon ES 도메인을 만듭니다.

  • 인스턴스 유형이 m4.large.elasticsearch인 인스턴스 6개를 사용하여 도메인을 채웁니다.

  • 각 데이터 노드의 저장에 100GiB 범용(SSD) EBS 볼륨을 사용합니다.

  • 사용자 AWS 계정 ID가 555555555555인 단일 사용자로 서비스에 대한 액세스를 제한합니다.

  • 가용 영역 세 개에 인스턴스 분산

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=6,ZoneAwarenessEnabled=true,ZoneAwarenessConfig={AvailabilityZoneCount=3} --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=100 --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::555555555555:root" }, "Action":"es:*", "Resource": "arn:aws:es:us-east-1:555555555555:domain/mylogs/*" } ] }'

다음 예에서는 아래 Amazon ES 도메인 구성을 보여줍니다.

  • Elasticsearch 버전 5.5에서 mylogs라는 Amazon ES 도메인을 만듭니다.

  • 인스턴스 유형이 m4.xlarge.elasticsearch인 인스턴스 10개를 사용하여 도메인을 채웁니다.

  • 전용 마스터 노드의 역할을 위해 인스턴스 유형이 m4.large.elasticsearch인 인스턴스 세 개를 사용하여 도메인을 채웁니다.

  • 각 데이터 노드에 대해 1000 IOPS의 기본 성능으로 구성된 100GiB 프로비저닝된 IOPS EBS 볼륨을 저장에 사용합니다.

  • 사용자 한 명과 하위 리소스 하나(_search API)만 액세스할 수 있도록 제한합니다.

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.xlarge.elasticsearch,InstanceCount=10,DedicatedMasterEnabled=true,DedicatedMasterType=m4.large.elasticsearch,DedicatedMasterCount=3 --ebs-options EBSEnabled=true,VolumeType=io1,VolumeSize=100,Iops=1000 --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::555555555555:root" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-1:555555555555:domain/mylogs/_search" } ] }'
참고

Amazon ES 도메인을 만들려고 하는데 같은 이름의 도메인이 이미 존재하는 경우, CLI에 오류가 표시되지 않습니다. 그 대신 기존 도메인에 대한 세부 정보가 표시됩니다.

Amazon ES 도메인 생성(AWS SDK)

AWS SDK(Android 및 iOS SDK 제외)에서는 CreateElasticsearchDomain을 비롯하여 Amazon ES 구성 API 참조에 정의된 모든 작업을 지원합니다. 샘플 코드에 대한 내용은 Amazon Elasticsearch Service와 함께 AWS SDK 사용 단원을 참조하십시오. AWS SDK 설치 및 사용에 대한 자세한 내용은 AWS 소프트웨어 개발 키트를 참조하십시오.

액세스 정책 구성

Amazon Elasticsearch Service는 Amazon ES 도메인에 대한 액세스를 구성하는 여러 가지 방법을 제공합니다. 자세한 내용은 Amazon Elasticsearch Service의 자격 증명 및 액세스 관리Amazon Elasticsearch Service의 세분화된 액세스 제어 단원을 참조하십시오.

콘솔이 사용자가 도메인의 필요에 따라 사용자 지정할 수 있는 사전 구성된 액세스 정책을 제공합니다. 사용자가 다른 Amazon ES 도메인의 액세스 정책을 가져올 수도 있습니다. 이러한 액세스 정책이 VPC 액세스와 상호 작용하는 방식에 대한 자세한 내용은 VPC 도메인 액세스 정책에 대하여 단원을 참조하십시오.

액세스 정책을 구성하려면(콘솔)

  1. https://aws.amazon.com으로 이동하여 Sign In to the Console(콘솔에 로그인)을 선택합니다.

  2. Analytics에서 Elasticsearch 서비스를 선택합니다.

  3. 탐색 창의 My domains(내 도메인)에서 업데이트할 도메인을 선택합니다.

  4. Actions(작업)Modify access policy(액세스 정책 수정)를 선택합니다.

  5. 액세스 정책 JSON을 편집하거나 드롭다운 목록을 사용하여 미리 구성된 옵션을 선택합니다.

  6. 제출을 선택합니다.

고급 옵션

고급 옵션을 사용하여 다음을 구성합니다.

rest.action.multi.allow_explicit_index

HTTP 요청의 본문에서 인덱스에 대한 명시적 참조를 허용할지 여부를 지정합니다. 이 속성을 false로 설정하면 사용자가 하위 리소스에 대한 액세스 제어를 우회하는 것을 방지할 수 있습니다. 기본값은 true입니다. 자세한 내용은 고급 옵션 및 API 고려 사항 단원을 참조하십시오.

indices.fielddata.cache.size

필드 데이터에 할당되는 Java 힙 공간의 백분율을 지정합니다. 기본적으로 이 설정은 무한입니다.

참고

많은 고객이 일일 인덱스 교체를 문의합니다. 이와 같은 대부분의 경우 JVM 힙의 40%로 구성된 indices.fielddata.cache.size를 사용하여 벤치마크 테스트를 시작하는 것이 좋습니다. 그러나 인덱스가 매우 큰 경우 큰 필드 데이터 캐시가 필요할 수 있습니다.

indices.query.bool.max_clause_count

Lucene 부울 쿼리 하나에 허용되는 최대 절 수를 지정합니다. 기본값은 1,024입니다. 절 수가 허용되는 개수 이상인 쿼리는 TooManyClauses 오류를 일으킵니다. 자세한 내용은 Lucene documentation을 참조하십시오.