ELK (ElasticSearch, LogStash, Kibana)

ElasticSearch

JUN0126 2021. 7. 27. 00:54

ElasticSearch란?

 - Elastic Stack에서 가장 중요한 역할을 담당하는 풀텍스트 검색 및 분석 오픈소스

 - 공식 홈페이지에서는 Elasticsearch는 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 무료 검색 및 분석 엔진으로 분산형 및 개방형을 특징을 가진 검색 및 오픈소스라고 정의 되어 있다

 - Apache Lucene( 아파치 루씬 ) 기반의 Java 오픈소스 분산 검색 엔진

 

• Elastic Search 구성 및 용어 정리

1) 클러스터( cluseter )

 - 클러스터란 Elasticsearch에서 가장 큰 시스템 단위를 의미하며, 최소 하나 이상의 노드로 이루어진 노드들의 집합

 - 서로 다른 클러스터는 데이터의 접근, 교환을 할 수 없는 독립적인 시스템으로 유지되며,

여러 대의 서버가 하나의 클러스터를 구성할 수 있고, 한 서버에 여러 개의 클러스터가 존재할수도 있다.

 

2) 노드( node )

 • 하나의 서버를 의미하며 N개의 노드로 클러스터를 구성할 수 있다.

 

 2-1) Master node

 - 클러스터를 제어하는 마스터로 선택할 수 있는 노드

 • master 노드의 역할

   1.  인덱스 생성, 삭제

   2. 클러스더 노드들의 추적, 관리

   3. 데이터 입력 시 어느 샤드에 할당할 것인지 정해줌

 

2-2) Data node 

- 데이터와 관련된 CRUD 작업과 관련있는 노드

- 해당 노드는 자원을 많이 소모하며, 클러스터는 1개의 마스터노드와 N개의 Data node로 구성될 수 있다.

 

 2-3) Ingest node

- 데이터를 변환하는 등 사전 처리 파이프라인을 실행

 

 2-4) Coordination only node 

 - data node와 Masternode의 일을 대신하는 이 노드는 로드밸런서와 비슷한 역할을 해주는 node로 써대규모 클러스터에서 큰 이점이 있습니다.

   

3) 인덱스( index ) / 샤드( Shard ) / 복제본( Replica )

 3-1) 인덱스(index, indices)

  - Elasticsearch에서 index(indices)는 RDBMS에서 database와 대응하는 개념입니다.

  - 인덱스 및 인덱시스라고 불리우며 

 

 3-2) 샤딩 (sharding)  

 - Elasticsearch에서 스케일 아웃을 위해 index를 여러 shard로 쪼개어 데이터를 관리하는 방법

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

 

 3-3) 복제본 (replica)

 - replica는 shard가 생성될 때 shard의 복제본이 같이 생성되어 나온 것

 - 노드를 손실했을 경우 데이터의 신뢰성을 위해 샤드들을 복제하여 데이터의 신뢰성을 보장한다.

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

 

필자가 생각한 Elastic Search 구조

 

참조 : https://victorydntmd.tistory.com/308

'ELK (ElasticSearch, LogStash, Kibana)' 카테고리의 다른 글

Elastic Stack  (1) 2021.07.25