이리프리엘 2020. 5. 17. 21:28

Cluster = 물리적인 Node Insatnce들의 모임 = 모든 노드의 검색과 색인 작업을 관장하는 '논리적인' 개념

 

RDBMS에서는 모든 요청을 Server 한 대에서 처리하고 결과를 제공하지만,

Elasticsearch에서는 다수의 서버로 분산처리 후 결과를 제공할 수 있음

 

 

 

Node의 종류

 -> 각 노드는 한 가지 유형으로 동작할 수도, 여러 개의 유형으로 동작할 수도 있음

 

1. Master Node

 = Cluster 관리

 = 노드 추가, 제거 등 Cluster 전반적인 부분 관리

 

2. Data Node

 = 실질적인 데이터 제공

 = 검색, 통계 등 데이터 관련 작업 수행

 

3. Coordinating Node

 = 사용자의 요청만 받아서 처리

 = ?? 무슨소리?

 = if Cluster 관련 요청 -> Master Node에 전달;

    else if Data 관련 요청 -> Data Node에 전달;

 = 일종의 로드밸런싱 역할 수행?

 

4. Ingest Node

 = 문서의 전처리 작업 담당

 = 인덱스 생성 전 문서의 형식을 다양하게 변경 가능

 = 사용해보지 않아서 좀 더 공부 필요

 

 

Master Node

다수의 노드를 마스터 노드로 설정하여도 결과적으로 하나의 노드만이 마스터 노드로 선출, 동작함

 

elasticsearch.yml

node.master: true
node.data: false
node.ingest: false
search.remote.connect: false

 

Data Node

문서(= Document)가 실제로 저장되는 노드 = 데이터가 실제로 분산 저장되는 물리적공간인 샤드가 배치되는 노드

색인 작업에는 CPU, Memory, Storage 등 Computing Resource를 많이 소모하기 때문에 Resource 모니터링이 필요

 

데이터 노드는 가능하면 마스터 노드와 분리해서 구성하는게 좋음

설정 방법은 node.data를 true로 지정

 

 

 

Coordinating Node

Data Node, Master Node, Ingest Node의 역할을 수행하지 않고, 들어온 요청을 RR 방식으로 분산시켜주는 노드

(Round Robin : https://jwprogramming.tistory.com/17)

 

elasticsearch.yml

node.master:false
node.data: false
node.ingest: false
search.remote.connect: false

(모든 역할 off)

 

Ingest Node

색인 전 데이터를 전처리하기 위한 노드

데이터 포맷을 변경하기 위해 스크립트로 전처리 pipeline을 구성/실행 할 수 있음