amazon elastcsearch service 소개 및 활용 방법 (윤석찬)

52
Amazon Elasticsearch Service 소개 및 활용 방법 윤석찬 @channyun AWS Korea 테크에반젤리스트

Upload: amazon-web-services-korea

Post on 15-Apr-2017

3.984 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Amazon Elasticsearch Service 소개 및 활용 방법

윤석찬

@channyunAWS Korea 테크에반젤리스트

Page 2: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

목차

• Elasticsearch 및 Amazon Elasticsearch 서비스 소개• Amazon ES 활용하기

1. Amazon ES 도메인 설정 (데모: ES 도메인 생성)2. Amazon ES 확장성3. 안전한 도메인 접근 제어4. 분석 데이터 로딩하기 (데모: VPC Flow Log 분석)5. Amazon ES 관리 기능

• Amazon ES 시작하기

Page 3: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

US-WEST (Oregon)

EU (Ireland)

ASIA PACIFIC (Tokyo)

US-WEST (N. California)

SOUTH AMERICA (Sao

Paulo)

US-EAST (N. Virginia)

AWS GOVCLOUD (US)

ASIA PACIFIC (Sydney)

ASIA PACIFIC (Singapore)

CHINA (Beijing)

32 AZAvailability Zones

EU (Frankfurt)

ASIA PACIFIC (Seoul)

12 Regions오하이오,중국,인도,영국, 캐나다 (2016-17)

54 Edges

2016년 1월 7일 - 서울 리전 개시!

Page 4: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

2016년 1월 7일 - 서울 리전 개시!

* 서울 리전 이용가능 서비스 (2016. 1. 7 현재)

ComputeElastic

BeanstalkEC2Elastic Load

Balancing

Networking

VPC Direct Connect Route 53

Analytics

EMR Kinesis

Management Tools

CloudWatch CloudFormation CloudTrail

Security & IdentityIdentity &

Access Management

Trusted Advisor

Key Management

Service

Storage & CDN

S3 CloudFront Glacier

Database

RDS DynamoDB ElastiCache RedShift

App Services

SQS SWF SNS

The Next Wave

Page 5: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

2016년 1월 29일 - 서울 리전 첫 신규 서비스

Page 6: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Amazon Elasticsearch• 실시간 분석 + 모니터링ü ELK 스택 관리형 서비스ü 대용량 데이터 볼륨 지원ü 저렴한 실시간 분석 및시각화

두 가지 클라우드 검색 서비스?

Amazon CloudSearch• 자동화된 검색 서비스ü 키워드 텍스트 검색에 효과적ü 간단한 API로 동작ü 간편한 스키마 변경

Page 7: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Elasticsearch 소개

강력한 실시간분산 기반 검색및 분석 엔진:• 2010년에 처음출시되어인기오픈소스검색및분석엔진으로성장• Apache Lucene 기반으로수백대까지분산클러스터를구성가능• 유연한스키마를가진 JSON 데이터스토어• 개발자친화적RESTful API 제공

Page 8: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Elasticsearch의 강점

로그 수집기인 Logstash와 시각화도구인 Kibana를 연결하여,ELK Stack을 통해 강력한실시간 데이터분석이 가능!

Page 9: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Elasticsearch를 사용하는 AWS 고객

• 실시간 고객행동 분석 및 이해• 모바일 유저및 애플리케이션로그 분석• 웹 로그 분석• 소셜 미디어/스트리밍분석• 일반적인웹 사이트 검색

Page 10: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Elasticsearch에 대한 고객의 소리

“Elasticsearch는 매우 편리하고빠르게빅데이터 분석용애플리케이션을만들수 있는 ELK 스택을제공합니다. 다만, 서버클러스터운영및 확장성에대한 관리 부담때문에 ElasticsearchAPI에 직접 접속 만으로유연하게서비스를 빠르게만들 수 있는Amazon Elasticsearch Services를 선택했습니다."

Sean Curtis, SVP Engineering at Major League Baseball Advanced Engineering

Page 11: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Amazon Elasticsearch Service란?

Amazon Elasticsearch Service는 ES 클러스터를 클라우드에 설치, 운영및 확장을용이하고 하는 관리형 서비스로 AWS 기타서비스와 연계하기에 편리합니다!

Page 12: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Amazon ES의 주요 이점

손쉽게 클러스터설정 및관리 가능ELK 스택 지원

AWS IAM을통한사용자 인증 및CloudWatch를통한 모니터링

다른 AWS 자원과 손쉽게통합 가능

Page 13: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

1. Amazon ES 도메인 설정

Page 14: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Amazon ES 도메인 생성 – 콘솔

Page 15: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
Page 16: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

API 엔드포인트및 내장 Kibana 사용법

API 엔드포인트

내장 Kibana

Page 17: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Amazon ES 도메인 생성 - CLI 명령어

add-tagscreate-elasticsearch-domaindelete-elasticsearch-domaindescribe-elasticsearch-domaindescribe-elasticsearch-domain-config

describe-elasticsearch-domainslist-domain-nameslist-tagsremove-tagsupdate-elasticsearch-domain-config

$ aws es create-elasticsearch-domain --domain-name my-domain--elasticsearch-cluster-configInstanceType=m3.xlarge.elasticsearch,InstanceCount=3

--ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=512

Page 18: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Amazon ES 도메인 구성도

Amazon Route 53

Elastic Load

Balancing

IAM

CloudWatch

Elasticsearch API

CloudTrail

ES Clusters

Page 19: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Amazon Route 53

Elastic LoadBalancingIAM

CloudWatch

Elasticsearch API

CloudTrail

Amazon ES 도메인 구성도

노드관리 – 마스터/데이터노드

Page 20: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

IAM

CloudWatchCloudTrail

Elasticsearch API

Amazon Route 53

Elastic LoadBalancing

Amazon ES 도메인 구성도

싱글엔드포인트REST API

Page 21: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

CloudWatchCloudTrail

Elasticsearch API

Amazon Route 53

Elastic LoadBalancingIAM

Amazon ES 도메인 구성도

통합인증및접근제어

Page 22: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Elasticsearch API

Amazon Route 53

Elastic LoadBalancingIAM

CloudWatchCloudTrail

Amazon ES 도메인 구성도

CloudWatch/CloudTrail 모니터링

Page 23: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

2. Amazon ES 확장성

Page 24: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Amazon ES 도메인 내부 용어

Shard 1 Shard 2

{ {Id Id Id . . .

Documents

{Index

• Document: 검색 단위 문서• ID: 각 문서에 대한 인식자• Shard: 인덱스의 부분을가지는 Lucene 인스턴스

• Index: 검색데이터 집합

Page 25: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Amazon ES 도메인 내 클러스터 구성

• Index 1• Shard 1• Shard 2• Shard 3

• Index 2• Shard 1• Shard 2• Shard 3

Amazon ES cluster

123

123

123

123

Primary Replica

1

3

3

1

Instance 1

2

1

1

2

Instance 2

3

2

2

3

Instance 3

Page 26: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Amazon ES 인스턴스 타입Instance 타입 업무 영역 예제 타입 가격 구조

T2 개발및테스트에용이 Busting 모델t2.micro.elasticsearch는 프리티어제공 (매월 750시간)

M4 쓰기및읽기볼륨이비슷할때(블록스토리지가5TB까지)

m4.large.elasticsearch(2vcpu/8GB/EBS 전용)=0.243/시간당

R3 쿼리요청이많은읽기중심서비스 r3.large.elasticsearch(2vcpu/15GB/32GBSSD)= 0.294/시간당 * 동경리전 기준

I2 16TB까지 SSD 스토리지제공 i2.xlarge.elasticsearch(4vcpu/30.5GB/800GBSSD)= 1.401/시간당

https://aws.amazon.com/ko/elasticsearch-service/pricing/ 서울리전기준

Page 27: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

3. 안전한 도메인 접근 제어

Page 28: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

안전한 도메인 접근 제어 방법{

"Version": "2012-10-17","Statement": [{

"Sid": "","Effect": "Allow","Principal": {"AWS": "arn:aws:iam:123456789012:user/susan"

},"Action": [ "es:ESHttpGet", "es:ESHttpPut", "es:ESHttpPost",

"es:CreateElasticsearchDomain","es:ListDomainNames" ],

"Resource": "arn:aws:es:ap-northeast-2:###:domain/logs/<index>/*"

} ] }

Page 29: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

안전한 도메인 접근 제어 방법{

"Version": "2012-10-17","Statement": [{

"Sid": "","Effect": "Allow","Principal": {"AWS": "arn:aws:iam:123456789012:user/susan"

},"Action": [ "es:ESHttpGet", "es:ESHttpPut", "es:ESHttpPost",

"es:CreateElasticsearchDomain","es:ListDomainNames" ],

"Resource": "arn:aws:es:ap-northeast-2:###:domain/logs/<index>/*"

} ] }

사용자 기반권한 관리

Page 30: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

안전한 도메인 접근 제어 방법{

"Version": "2012-10-17","Statement": [{

"Sid": "","Effect": "Allow","Principal": {"AWS": "arn:aws:iam:123456789012:user/susan"

},"Action": [ "es:ESHttpGet", "es:ESHttpPut", "es:ESHttpPost",

"es:CreateElasticsearchDomain","es:ListDomainNames" ],

"Resource": "arn:aws:es:ap-northeast-2:###:domain/logs/<index>/*"

} ] }

HTTP 메소드에따른 허용/거부및 정책 설정

Page 31: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

안전한 도메인 접근 제어 방법{

"Version": "2012-10-17","Statement": [{

"Sid": "","Effect": "Allow","Principal": {"AWS": "arn:aws:iam:123456789012:user/susan"

},"Action": [ "es:ESHttpGet", "es:ESHttpPut", "es:ESHttpPost",

"es:CreateElasticsearchDomain","es:ListDomainNames" ],

"Resource": "arn:aws:es:ap-northeast-2:###:domain/logs/<index>/*"

} ] }인덱스에대한 세부적인권한 관리

Page 32: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

안전한 도메인 접근 제어 방법{

"Version": "2012-10-17","Statement": [

{"Sid": "","Effect": "Allow","Principal": {

"AWS": "*"},"Action": [ "es:ESHttpGet", "es:ESHttpPut", "es:ESHttpPost",

"es:CreateElasticsearchDomain","es:ListDomainNames" ],

"Resource": "arn:aws:es:ap-northeast-2:###:domain/logs/<index>/*"

"Condition":"IpAddress": {

"aws:SourceIp": [ "xx.xx.xx.xx/yy" ]} } ] }

IP 주소 기반한접근 제어 가능

Page 33: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

4. 분석 데이터 로딩하기

Page 34: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

1. Elasticsearch API 직접 접속

$ curl -XPUT https://<endpoint>/blog -d '{"settings" : { "number_of_shards" : 3, "number_of_replicas" : 1 } }’

$ curl -XPOST http://<endpoint>/blog/post/1 -d '{"author":"jon handler",

"title":"Amazon ES Launch" }’

$ curl -XPOST https://<endpoint>/blog/post/_bulk -d '{ "index" : { "_index" : "blog", "_type" : "post", "_id" : "2"}}

{"title":"Amazon ES for search", "author": "pravin pillai"},

{ "index" : { "_index":"blog", "_type":"post", "_id":"3" } }

{ "title":"Analytics too", "author": "vivek sriram"}’

$ curl -XGET http://<endpoint>/_search?q=ES{"took":16,"timed_out":false,"_shards":{"total":3,"successful":3,"failed":0},"hits":{"total":

2,"max_score":0.13424811,"hits":[{"_index":"blog","_type":"post","_id":"1","_score":0.13424811,"_source":{"author":"jon handler", "title":"Amazon ES Launch" }},{"_index":"blog","_type":"post","_id":"2","_score":0.11506981,"_source":{"title":"Amazon ES for search", "author": "pravin pillai"},}]}}

Page 35: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

2. Logstash를 통한 데이터 로딩

Application nodes/Logstash forwarders

Logstash indexerAmazon

Elasticsearch Service

Page 36: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Amazon ES를 위한 Logstash 플러그인

https://github.com/awslabs/logstash-output-amazon_es

output { amazones {

*hosts => ["foo.ap-northeast-2.es.amazonaws.com"] *region => ”ap-northeast-2"

access_key => 'ACCESS_KEY' (optional)secret_key => 'SECRET_KEY' (optional)codec => "plain" workers => 1 index => "logstash-%{+YYYY.MM.dd}"

}

}

Page 37: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

3. AWS Lambda를 통한 데이터 전달

Amazon Lambda

Amazon Elasticsearch

Service

Amazon S3

DynamoDB

Amazon Kinesis

Page 38: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

예제. 간단한 Lambda 함수

var AWS = require('aws-sdk');

var creds = new AWS.EnvironmentCredentials('AWS');

function postDocumentToES(doc, context) {

var req = new AWS.HttpRequest(endpoint);

var signer = new AWS.Signers.V4(req, 'es');

signer.addAuthorization(creds, new Date());

var send = new AWS.NodeHttpClient();

send.handleRequest(req, null, function(httpResp)...

https://github.com/awslabs/amazon-elasticsearch-lambda-samples

Page 39: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Arrow direction indicates general direction of data flow

EC2 instances

Logstashcluster on EC2

DynamoDBTables

RDS Databases(via JDBC)

SQSQueues

KinesisStreams

AmazonElasticsearchdomain

CWL Logs agent

VPCFlow Logs

CloudTrailAudit Logs

S3AccessLogs

ELBAccessLogs

CloudFrontAccessLogs

SNSNotifications

DynamoDBStreams

SESInbound

Email

CognitoEvents

KinesisStreams

CloudWatchEvents &Alarms

ConfigRules

Lambda

Filebeat agent

REST API client

S3

CloudWatchLogs

Page 40: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

데모.Amazon ES기반CloudWatch 로그 분석

CloudWatch Amazon Elasticsearch

Service

Page 41: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

VPC Flow Logs 분석하기

• 특정 VPC 그룹에대한네트워크로그수집및스트리밍가능• 소스 / 목적지 IP 주소, 포트, 프로토콜번호패킷바이트모니터링간격시간, 그리고이에따른액션(ACCEPT 또는 REJECT) 정보 포함

Page 42: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
Page 43: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Kibana UI

Page 44: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

5. Amazon ES 관리 기능

Page 45: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Amazon ES 모니터링 및 스냅샷 백업

• CloudWatch 및 CloudTrail을 통한모니터링

Page 46: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

모니터링 필수 지표

• FreeStorageSpace – 클러스터의남은 용량알람 설정• CPUUtilization – 확장을고려하여 80% CPU 시 알람 설정• ClusterStatus.yellow – 추가노드의 리플리케이션이필요할 때• JVMMemoryPressure – 인스턴스타입 선정 및 자원 확인• MasterCPUUtilization – 마스터노드에 대한 모니터링

Page 47: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

Amazon ES 자동 스냅샷 및 백업

• 추가 비용 없음• 무료로 14일까지저장 가능

Page 48: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

스냅삿 백업 및 꺼내 오기

1. S3 bucket에 저장하기curl -XPUT http://<endpoint>/_snapshot/<repo-name>-d '{"type":"s3",

"settings": {"bucket":"<bucket>","region":"<region>","role-arn":"<arn>"}}’

2. 스냅샷 꺼내 오기curl -XPUT http://<endpoint>/_snapshot/<repo-name>/snapshot1

Page 49: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

맺으면서

1. Elasticsearch는 검색, 로그 분석 및 시각화를위한 일체형오픈소스 분석 엔진으로실시간데이터 폭증에도유리한 도구입니다.

2. Amazon Elasticsearch Service는 ES 클러스터를손쉽게 만들고관리하는데용이합니다.

3. 여러분이 Amazon EC2에서 ES를 사용하고 계시다면, 자원비용외 추가 비용 없이 관리 서비스를 사용해 보실 수 있습니다.

4. 만약 기존 데이터센터에 계시다면,확장성 고려및 ES 관리비용을 줄여보세요!

Page 50: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

지금 시작하기

1. 아마존 웹 서비스(AWS) 가입• http://aws.amazon.com/ko

2. Amazon ES 서비스 시작하기• 서비스 소개: https://aws.amazon.com/ko/elasticsearch-service/• FAQ: https://aws.amazon.com/ko/elasticsearch-service/faqs/

3. Amazon ES 프리티어• 750시간의 t2.micro.elasticsearch 인스턴스와 10GB의 Amazon EBS 스토리지 옵션※ t2.micro 인스턴스 10대 x 월 75시간 무료 사용 가능

Page 51: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

AWS 코리아 소통 채널• 공식 블로그: http://aws.amazon.com/ko/blogs/korea

• 공식 소셜 미디어

• 한국 사용자 모임: http://awskr.org

@AWSKorea

AmazonWebServices.ko

AWSKorea

AWSKorea

Page 52: Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)

질문을 남겨주세요

강연에 대한 설문조사

발표자료 / 녹화영상http://bit.ly/awskr-webinar