1. 개념

💡
Elasticsearch란? 완전관리형 서비스인 Amazon Elasticsearch Service는 Elasticsearch 클러스터 설정, 배포, 구성, 패치 및 모니터링을 관리하므로 클러스터를 관리하는 시간을 줄여 애플리케이션 구축에 더 많은 시간을 할애할 수 있습니다. Amazon Elasticsearch Service는 오픈 소스 Elasticsearch API, 관리형 Kibana, Logstash와의 통합, 기타 AWS 서비스 및 SQL 쿼리를 제공하므로 기존 도구 및 코드를 계속 사용할 수 있습니다.
  • 정리
    • Elasticsearch는 검색을 위해 단독으로 사용되기도 하며, ELK(Elasticsearch / Logstatsh / Kibana) 스택으로도사용된다.
    • Logstash

      다양한 소스(DB, csv파일) 의 로그 또는 트랜잭션 데이터를 수집, 집계, 파싱하여 Elasticsearch로 전달

    • Elasticsearch

      Logstash로 부터 받은 데이터를 검색 및 집계를 하여 필요한 관심 정보 획득

    • Kibana

      Elasicsearch의 빠른 검색을 통해 데이터를 시각화 및 모니터링

    • 용어
      1. cluster
        • Elastisearch 에서 가장 큰 시스템 단위를 의미
        • 최소 하나 이상의 노드의 집합
        • 서로 다른 클러스터는 데이터 접근,교환을 할수없는 독립적 시스템
        • 여러 대의 서버가 하나의 클러스터를 구성할 수 있고, 한 서버에 여러개의 클러스터 존재 가능
      1. 노드
        • Elasticsearch 를 구성하는 하나의 단위 프로세스를 의미
        • 역할에 따라 Master-eligible,Data,Tribe 노드로 구분
        • node 종류
          1. master-eligible node 링크 )

            클러스터를 제어하는 마스터로 선택할 수 있는 노드를 말합니다.

            여기서 master 노드가 하는 역할은 다음과 같습니다.

            • 인덱스 생성, 삭제
            • 클러스더 노드들의 추적, 관리
            • 데이터 입력 시 어느 샤드에 할당할 것인지
          1. Data node 링크 )

            데이터와 관련된 CRUD 작업과 관련있는 노드입니다.

            노드는 CPU, 메모리 등 자원을 많이 소모하므로 모니터링이 필요하며, master 노드와 분리되는 것이 좋습니다.

          1. Ingest node 링크 )

            데이터를 변환하는 등 사전 처리 파이프라인을 실행하는 역할을 합니다.

          1. Coordination only node 링크 )

            data node와 master-eligible node의 일을 대신하는 이 노드는 대규모 클러스터에서 큰 이점이 있습니다.

            즉 로드밸런서와 비슷한 역할을 한다고 보시면 됩니다.

      1. 인덱스(index) / 샤드(shard) / 복제 (Replica)
        1. 인덱스
          • Elasticsearch에서 index는 RDBMS에서 database와 대응하는 개념입니다.
          • 또한 shard와 replica는 Elasticsearch에만 존재하는 개념이 아니라, 분산 데이터베이스 시스템에도 존재하는 개념입니다.
        1. 샤딩( sharding )
          •  데이터를 분산해서 저장하는 방법을 의미합니다.

            즉, Elasticsearch에서 스케일 아웃을 위해 index를 여러 shard로 쪼갠 것입니다.

            기본적으로 1개가 존재하며, 검색 성능 향상을 위해 클러스터의 샤드 갯수를 조정하는 튜닝을 하기도 합니다.

        1. replica
          • 또 다른 형태의 shard라고 할 수 있습니다.

            노드를 손실했을 경우 데이터의 신뢰성을 위해 샤드들을 복제하는 것이죠.

          따라서 replica는 서로 다른 노드에 존재할 것을 권장합니다.

      1. 특징
        1. Scale-oute
          • 샤드를 통해 규모가 수평적 확장
        1. 고가용성
          • Replica를 통해 데이터의 안정성 보장
        1. Schema Free
          • json 문서를 통해 데이터 검색을 수행하므로 스키마 개념 x
        1. Restful
          • 데이터 CURD 작업은 HTTP Restful API를 통해 수정하며, 각기 다음과같다

            Restful

            Data CRUDElasticsearch Restful
            SELECTGET
            INSERTPUT
            UPDATEPOST
            DELETEDELETE

2. 실습

  • 아키텍처

  • 실습
    • vpc flow
      1. vpc flow log 생섯
      1. cloudwatch

    • ElasticSearch
      1. 사용자 지정 생성

        → 테스트 목적

    • flowlog 남도록 ec2 접속
      • 로그 확인

    • cloudwatch → ES 구독
      1. ES필터생성
      1. 사용할 ES 및 lambda role 설정
      1. 해당 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:*:*:*"
            }
          ]
        }
      1. 생성

        → 자동 생성 확인

        • 이를 통해서 ES cluster로 전송된다.

    • kibana 접속

      참조 : cognito 관련 https://cherrypick.co.kr/using-the-aws-elasticsearch-service-kibana-with-aws-cognito/

      1. 접속 화면
      1. cognito에서 생성된 ID 및 임시비번 입력

        → 이후 변경 암호 설정

      1. 에러 페이지 확인
        • cognito 인증 과정에서의 에러 발생이므로 ES에서 액세스 정책을 수정한다.
      1. 참조 블로그를 통해서 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/*"
            }
          ]
        }
      1. ES 활성화후 → kibana 접속
      1. 인덱스 패턴 및 나타낼 항목들 확인
      1. 확인

'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

+ Recent posts