Elastic search

Node의 종류와 역할

라우브 2021. 5. 13. 00:07

Master node

  • 인덱스(데이터베이스)의 메타 데이터, 샤드의 위치와 같은 클러스터의 상태 정보를 관리
  • 노드 추가 및 제거와 같은 클러스터의 전반적인 관리 담당
  • 클러스터 중 하나의 node가 해당 역할을 수행
  • Master node 가 다운되거나 네트워크 연결이 종료되면 다른 마스터 후보 노드 중 하나가 마스터 노드로 승격
  • 클러스터중 마스터 노드 역할을 할 수 있는 노드가 없을 경우 클러스터 작동 정지

 

Data node

  • 실질적으로 데이터를 저장하는 노드
  • 검색과 통계 같은 데이터 관련 작업 수행
  • 색인 작업은 CPU, 메모리, 스토리지 같은 컴퓨팅 리소스를 많이 소모하기 때문에 리소스 모니터링 필요

 

Coordinating node

  • 사용자의 요청만 받아서 처리
  • 클러스터 관련 요청은 마스터 노드에, 데이터 관련 요청은 데이터 노드에 전달
  • 실질적으로 로드밸런싱 역할 담당
  • Aggregation과 같은 작업은 많은 자원을 필요로 한다. 이를 각 데이터 노드에게 맡기는 것은 데이터 노드에 부담이 크기 때문에, Coordinating node가 Aggregation 작업을 담당하고 data node에는 단순 search 쿼리만 보내어 데이터 노드의 부담을 줄일 수 있다.

 

Ingest node

  • 데이터의 전처리 작업을 담당
  • logstash나 Filebeats등으로부터 데이터를 받은 뒤 elasticsearch에 저장하기 전 원하는 형태로 변형하는 업무를 담당.
  • 전처리해야 하는 데이터 양이 많다면 Ingest node를 추가하는 것이 성능향상에 도움이 된다고 한다.

 

 

마스터 후보 노드 수는 어떻게 설정해야 할까?

마스터 후보 노드가 하나일 경우 해당 노드가 다운되면 클러스터가 종료됨으로 굉장히 위험한 상황이다.

마스터 후보 노드는 적어도 3개 이상의 홀수로 설정하는 것을 권장한다.

 

만약 네트워크 단절로 node1과 node2가 분리되면, 각자가 서로 다른 클러스터로 구성되어 동작할 수 있다.

이럴 경우 데이터의 정합성을 보장할 수 없고, 데이터 무결성을 유지할 수 없다. 이런 문제를 Split Brain이라  한다.

 

Split Brain 현상을 방지하기 위해, minimun_master_nodes 값을 (전체 마스터 후보 노드 / 2) + 1로 설정하여, 해당 값 보다 마스터 후보가 적을 경우 클러스터를 종료시켜야 한다.(데이터 정합성을 위해. 차라리 복구 후 저장하는 것이 나음)

 

7.0 이후에는 node.master: true인 노드가 추가되면 클러스터가 스스로 minimum_master_nodes값을 변경하도록 수정됨

Reference Document

 

'Elastic search' 카테고리의 다른 글

Elastic search Configurations  (0) 2021.05.13
Elastic search란?  (0) 2021.05.12