[ElasticSearch] Elastic Search 개념, 아키텍처/용어 정리

EUN JY·2022년 2월 15일
2

ELK

목록 보기
1/2
post-thumbnail

1. Elastic Search

  • Apache Lucene(아파치 루씬) 기반의 Java 오픈소스 분산 검색 엔진
  • Elasticsearch를 통해 루씬 라이브러리를 단독으로 사용할 수 있게 됨
  • 방대한 양의 데이터를 신속하게, 거의 실시간( NRT, Near Real Time )으로 저장, 검색, 분석할 수 있음
  • 검색을 위해 단독으로 사용되기도 하며, ELK( Elasticsearch / Logstatsh / Kibana )스택으로 사용되기도 함
  • 출처 https://victorydntmd.tistory.com/308

1-1. 관계형 DB 비교

  • 관계형 DB는 Elasticsearch에서 각각 다음과 같이 대응시킬 수 있음

1-2. 아키텍처/용어 정리

  • 클러스터(cluseter), 노드(node)

1-2-1. 클러스터(cluseter)

  • 가장 큰 시스템 단위로, 최소 하나 이상의 노드로 이루어진 노드들의 집합
  • 서로 다른 클러스터는 데이터의 접근, 교환을 할 수 없는 독립적인 시스템으로 유지됨
  • 여러 대의 서버가 하나의 클러스터를 구성할 수 있고, 한 서버에 여러 개의 클러스터가 존재할 수도 있음

1-2-2. 노드(node)

  • Elasticsearch를 구성하는 하나의 단위 프로세스
  • 역할에 따라 Master-eligible, Data, Ingest, Tribe 노드로 구분
  • master-eligible node(링크) : 클러스터를 제어하는 마스터로 선택할 수 있는 노드
  • master-eligible node 역할 : 인덱스 생성, 삭제 / 클러스터 노드들의 추적, 관리 / 데이터 입력 시 어느 샤드에 할당할 것인지 결정
  • Data node(링크) : 데이터와 관련된 CRUD 작업과 관련있는 노드 / CPU, 메모리 등 자원을 많이 소모하므로 모니터링이 필요 / master 노드와 분리되는 것이 좋음
  • Ingest node(링크) : 데이터를 변환하는 등 사전 처리 파이프라인을 실행하는 역할
  • Coordination only node(링크) : data node와 master-eligible node의 일을 대신하는 노드 / 대규모 클러스터에서 큰 이점이 있음 / 로드밸런서와 비슷한 역할

1-2-3. 인덱스(Index)

  • RDBMS에서 database와 대응하는 개념
  • shard와 replica는 Elasticsearch에만 존재하는 개념이 아니라, 분산 데이터베이스 시스템에도 존재하는 개념

1-2-4. 샤드(Shard)

  • 데이터를 분산해서 저장하는 방법
  • Elasticsearch에서 스케일 아웃을 위해 index를 여러 shard로 쪼갠 것
  • 기본적으로 1개가 존재하며, 검색 성능 향상을 위해 클러스터의 샤드 갯수를 조정하는 튜닝을 하기도 함

1-2-5. 복제(Replica)

  • 또 다른 형태의 shard라고 할 수 있음
  • 노드를 손실했을 경우 데이터의 신뢰성을 위해 샤드들을 복제하는 것
  • 따라서 replica는 서로 다른 노드에 존재할 것을 권장
  • 아래 사진에서 보는 바와 같이 Replica1은 Node2에 존재하는 것을 확인할 수 있음

1-3. 사용 예제

profile
개린이

0개의 댓글