본문 바로가기

Elk Stack/Elasticsearch

[Elasticsearch] 기본 용어

마스터 노드(Master-eligible node)

  • 클러스터를 제어하는 노드이며. 인덱스 생성, 삭제, 노드들의 추적, 관리합니다.
  • 어떤 노드가 클러스터에 속하는지 추적하고, 샤드를 어떤 노드에 할당할지 결정하는 작업을 담당합니다.
  • 마스터 후보로 선택된 노드는 마스터 노드가 될 수 있는 자격이 있다.
  • 보통 Split brain 현상을 방지하기 위해서는 홀수개로 있는 것이 중요합니다.

데이터 노드(Data node)

  • CRUD, 검색 및 집계와 같은 데이터 관련 작업을 수행합니다.
  • 가장 중요한 것은 데이터노드와 마스터노드를 분리하는 것이 중요하다.
  • CPU 메모리, I/O 리소스를 많이 사용하기 때문에 data node의 경우는 하드웨어의 리소스가 굉장히 중요하다.
  • 보통 데이터노드에서 하나의 샤드는 20gb~ 30gb를 처리할 수 있다고 나와있습니다.
  • 적절한 샤드 분배는 엘라스틱서치의 성능을 결정하는 중요한 요소라고 생각합니다.

인제스트 노드(Ingest node)

  • 문서를 변환 및 전처리를 담당합니다.
  • 인덱싱 전에 문서를 변환하고 보강하기 위해 INGEST 파이프 라인을 문서에 적용합니다.
  • 키바나에서 데이터 수집을 위해서는 꼭 필요한 노드이다.(이 부분은 제가 키바나를 구축하는데에 있어서 해당 노드가 있어서 구축되서 일단 적었습니다. 아닌경우 댓글남겨주세요) :)
  • 실제 기본적으로 클러스터구축하고 사용하는데 해당노드는 많이 사용을 안했던것 같습니다ㅎㅎ

클라이언트 노드(Coordinating node(Client node))

  • 마스터 직무 제외, 데이터 보유하고 문서처리 기능 제외하면 검색요청 및 indexing 요청하는 기능이 남는다. 쉽게말하면, (로드밸런서로 작동하는 것이 CLIENT 노드입니다.)
  • 검색 쿼리의 집계, 계산이 포함된 경우 데이터 계산 처리에 필요한 리소스를 coordinating only node의 리소스를 사용하게 되어 각 node들의 역할에 집중할 수 있게 해줍니다.
  • 데이터 노드는 클라이언트 노드로부터 요청된 결과값을 1차적으로 보낸 후 두번째 쿼리의 결과값을 보내면 클라이언트노드에서 결과값들을 취합 후 요청 고객에게 전달해줍니다.

현재는 역할이 사라진 노드..(Tribe node)

  • 현재 7.x 버전에서는 사용되지 않는 노드입니다. 7.x 버전 이후부터는 CCR이라는 기술이 적용되어서 사용중입니다.
  • 다양한 클러스터간 연결하는데에 사용되는 특별한 노드입다.
  • 요청에 따라 서로 다른 클러스터에 데이터를 분리해서 보낼 수 있는 기능을 하는 노드입니다.

클러스터 (Cluster)

  • Elasticsearch에서 가장 큰 시스템단위이며, 여러개의 노드들을 네트워크적으로 묶는것 입니다.
  • 대량의 데이터를 관리하고 효율적으로 사용하기 위해서 필수적입니다.

Split brain

  • 주 마스터노드 1대가 있느며, 마스터 후보노드 사이에 네트워크적으로 단절되었을 때 각자의 마스터노들이 "내가 주 마스터 노드야!!!" 라고 하면서 클러스터링 하는 현상입니다.
  • 각각의 마스터 후보 노드들이 독립적으로 마스터들이 되어서 클러스터링이 이루어질 수 없는 현상을 말합니다.
  • 보통 마스터노드가 짝수개일 때 발생하며, 기존 저장되어있는 노드의 정보와 다를경우에 발생하게 됩니다.
  • 해결방법으로는 엘라스틱서치의 데이터 저장경로에서 indices 디렉토리 제외 다 삭제하면 기존 노드에서 가지고 있는 다른 노드들의 정보를 초기화 시켜줌으로써 해결할 수 있습니다.

그림1, https://esbook.kimjmin.net/03-cluster/3.3-master-and-data-nodes