Lined Notebook

Elasticsearch Node

by HeshAlgo

Elasticsearch Node?

엘라스틱서치 클러스터를 운영하기 위해 다수의 물리 서버에 엘라스틱서치를 설치하고 실행하게 되는데, 이때 실행된 엘라스틱서치 인스턴스를 노드라고 한다. 즉, 물리적으로 실행된 런타임 상태를 나타낸다.

엘라스틱서치의 경우에는 다수의 서버로 분산해서 처리하는 것이 가능하기 때문에 대용량 데이터를 처리할 수 있다.

 

분산 처리를 위해서는 다양한 형태의 노드들을 조합해서 클러스터를 구성해야 한다.

엘라스틱서치는 각 설정에 따라 4가지 유형의 노드를 제공한다. 

노드의 상태를 원하는 상태로 변경하고 싶다면 엘라스틱 서치 서버의 config 폴더 안의 elasicsearch.yml 파일을 열어 설정할 수 있다.

설정 방법은 각 노드의 종류를 설명하면서 작성해보겠습니다.

 

1. 마스터 노드(Master Node)

  • 인덱스를 생성, 삭제하는 등 클러스터와 관련된 전반적인 작업을 담당한다.
  • 클러스터마다 하나의 노드만이 마스터 노드로 선출되어 동작한다. 만약 마스터 노드가 없는 경우 해당 클러스터는 동작이 중지됩니다.

// elasticsearch.yml

node.master: true

node.data: false

node.ingest: false

search.remote.connect: false

 

2. 데이터 노드 (Data Node)

  • 문서(Document)가 실제로 저장되는 노드. 즉, 데아터가 실제로 분산 저장되는 물리적 공간인 샤드가 배치되는 노드
  • 색인할 문서가 적으면 마스터 노드와 함께 구성해도 괜찮지만 그렇지 않은 경우 마스터 노드와 분리해서 구성하는게 좋다.

// elasticsearch.yml

node.master: false

node.data: true

node.ingest: false

search.remote.connect: false

 

3. 인제스트 노드 (Ingest Node)

  • 색인에 앞서 데이터를 전처리하기 위한 노드
  • 데이터의 포맷을 변경하기위해 스크립트로 전처리 파이프라인을 구성하고 실행할 수 있다.

// elasticsearch.yml

node.master: false

node.data: false

node.ingest: true

search.remote.connect: false

 

4. 코디네이팅 노드 (Coordinating Node)

  • 데이터 노드, 마스터 노드, 인제스트 노드의 역할을 하지 않고, 들어온 요청을 단순히 라운드로빈 방식으로 분산시켜주는 노드
  • 검색이나 집계 시 분산 처리만을 목적

// elasticsearch.yml

node.master: false

node.data: false

node.ingest: false

search.remote.connect: false

 

블로그의 정보

꾸준히 공부하는 개발 노트

HeshAlgo

활동하기