1. 개념
정리
- Elasticsearch는 검색을 위해 단독으로 사용되기도 하며, ELK(Elasticsearch / Logstatsh / Kibana) 스택으로도사용된다.
- Logstash
다양한 소스(DB, csv파일) 의 로그 또는 트랜잭션 데이터를 수집, 집계, 파싱하여 Elasticsearch로 전달
- Elasticsearch
Logstash로 부터 받은 데이터를 검색 및 집계를 하여 필요한 관심 정보 획득
- Kibana
Elasicsearch의 빠른 검색을 통해 데이터를 시각화 및 모니터링
용어
- cluster
- Elastisearch 에서 가장 큰 시스템 단위를 의미
- 최소 하나 이상의 노드의 집합
- 서로 다른 클러스터는 데이터 접근,교환을 할수없는 독립적 시스템
- 여러 대의 서버가 하나의 클러스터를 구성할 수 있고, 한 서버에 여러개의 클러스터 존재 가능
- 노드
- Elasticsearch 를 구성하는 하나의 단위 프로세스를 의미
- 역할에 따라 Master-eligible,Data,Tribe 노드로 구분
node 종류
- master-eligible node ( 링크 )
클러스터를 제어하는 마스터로 선택할 수 있는 노드를 말합니다.
여기서 master 노드가 하는 역할은 다음과 같습니다.
- 인덱스 생성, 삭제
- 클러스더 노드들의 추적, 관리
- 데이터 입력 시 어느 샤드에 할당할 것인지
- Data node ( 링크 )
데이터와 관련된 CRUD 작업과 관련있는 노드입니다.
이 노드는 CPU, 메모리 등 자원을 많이 소모하므로 모니터링이 필요하며, master 노드와 분리되는 것이 좋습니다.
- Ingest node ( 링크 )
데이터를 변환하는 등 사전 처리 파이프라인을 실행하는 역할을 합니다.
- Coordination only node ( 링크 )
data node와 master-eligible node의 일을 대신하는 이 노드는 대규모 클러스터에서 큰 이점이 있습니다.
즉 로드밸런서와 비슷한 역할을 한다고 보시면 됩니다.
- master-eligible node ( 링크 )
- 인덱스(index) / 샤드(shard) / 복제 (Replica)
- 인덱스
- Elasticsearch에서 index는 RDBMS에서 database와 대응하는 개념입니다.
- 또한 shard와 replica는 Elasticsearch에만 존재하는 개념이 아니라, 분산 데이터베이스 시스템에도 존재하는 개념입니다.
- 샤딩( sharding )
- 데이터를 분산해서 저장하는 방법을 의미합니다.
즉, Elasticsearch에서 스케일 아웃을 위해 index를 여러 shard로 쪼갠 것입니다.
기본적으로 1개가 존재하며, 검색 성능 향상을 위해 클러스터의 샤드 갯수를 조정하는 튜닝을 하기도 합니다.
- 데이터를 분산해서 저장하는 방법을 의미합니다.
- replica
- 또 다른 형태의 shard라고 할 수 있습니다.
노드를 손실했을 경우 데이터의 신뢰성을 위해 샤드들을 복제하는 것이죠.
따라서 replica는 서로 다른 노드에 존재할 것을 권장합니다.
- 또 다른 형태의 shard라고 할 수 있습니다.
- 인덱스
- 특징
- Scale-oute
- 샤드를 통해 규모가 수평적 확장
- 고가용성
- Replica를 통해 데이터의 안정성 보장
- Schema Free
- json 문서를 통해 데이터 검색을 수행하므로 스키마 개념 x
- Restful
- 데이터 CURD 작업은 HTTP Restful API를 통해 수정하며, 각기 다음과같다
- Scale-oute
- cluster
2. 실습
아키텍처
실습
vpc flow
- vpc flow log 생섯
- cloudwatch
ElasticSearch
- 사용자 지정 생성
→ 테스트 목적
- 사용자 지정 생성
flowlog 남도록 ec2 접속
로그 확인
cloudwatch → ES 구독
- ES필터생성
- 사용할 ES 및 lambda role 설정
- 해당 role 설정
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:*" ] }, { "Effect": "Allow", "Action": "es:ESHttpPost", "Resource": "arn:aws:es:*:*:*" } ] }
- 생성
→ 자동 생성 확인
이를 통해서 ES cluster로 전송된다.
kibana 접속
참조 : cognito 관련 https://cherrypick.co.kr/using-the-aws-elasticsearch-service-kibana-with-aws-cognito/
- 접속 화면
- cognito에서 생성된 ID 및 임시비번 입력
→ 이후 변경 암호 설정
- 에러 페이지 확인
cognito 인증 과정에서의 에러 발생이므로 ES에서 액세스 정책을 수정한다.
- 참조 블로그를 통해서 cognito 자격증명 풀생성시 iam정책에 생성된다.
→ 이렇게 생성된 role을 이용해서 액세스 정책을 수정해야한다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::186086016278:role/<cognito 자격증명풀role>" }, "Action": "es:ESHttp*", "Resource": "arn:aws:es:ap-northeast-2:186086016278:domain/sssdf/*" } ] }
- ES 활성화후 → kibana 접속
- 인덱스 패턴 및 나타낼 항목들 확인
- 확인
'aws' 카테고리의 다른 글
s3 - presigned url (0) | 2021.03.29 |
---|---|
RDS → s3 백업 (0) | 2021.03.29 |
CloudWatch / SSM Agent (0) | 2021.03.29 |
lb -acm 인증서를 이용한 접속 (0) | 2021.02.09 |
route 53 도메인 연결 (0) | 2021.02.09 |
Uploaded by Notion2Tistory v1.1.0