13. 노드 역할과 개요

  • 노드는 일반적으로 조각을 저장하지만 항상 그런 것은 아니다. 그 이유로 각 노드가 하나의 긴 역할을 가질 수 있기 때문에 그 노드가 무엇에 사용되는지를 정의하기 때문이다.

마스터 노드 역할

node.master : true | false
  • 노드가 클러스터의 마스터 노드 역할이 될 수 있도록 하는 “마스터” 노드 역할이 있다.
  • 기본적인 마스터 노드의 담당 역할
    • 전체 클러스터에서 작업을 수행한다.
    • 주로 인덱스 생성 및 삭제, 노드 추적 및 할당을 한다.
    • 다른 노드가 존재하면 이 역할을 노드에 부여해도 자동으로 마스터 노드가 되지 않는다.
      • 클러스터의 마스터 노드가 투표 프로세스에 따라 선출되기 때문.
      • 같은 역할을 맡은 노드가 여러 개일 경우 둘 중 하나가 마스터 노드로 선출된다.
  • 대규모 클러스터에선 마스터 노드를 관리하는게 유리하다.
    • 안정적인 마스터 노드를 갖는 것이 클러스터를 안정시키는데 중요하기 때문
    • 검색하고 수정하려면 하드웨어 리소스 측면에서 비용이 큰데, 마스터 노드에서 높은 CPU 메모리와 IO 사용량을 본다면 전용 마스터 노드를 추가해야할 수 있다.

데이터의 역할

node.data : true | false
  • 노드를 활성화하고 클러스터 데이터의 일부를 노드에 저장할 수 있게 한다.
  • 쿼리 수행
    • 검색 쿼리 및 데이터 수정 과 같은 과정
  • 데이터 저장소는 저장된 데이터와 관련된 쿼리와 관련이 있다.
    • 노드는 중소규모의 클러스터에 대해서 위와 같은 역할을 지닌다.
    • 역할이 비활성화 되면 노드는 조각을 저장하지 않는다.
  • 규모가 클수록 하드웨어적 성능 사용량이 많아지면 클러스터에 전용 마스터노드를 도입하는게 좋더.
    • 마스터 노드를 위해 데이터의 역할을 비활성화 한다. 그러면 마스터 역할이 아닌 데이터 역할을 가진 노드를 가지게 된다.
    • 전용 데이터 노드를 갖는 주요 목적은 마스터와 데이터 노드를 분리하는 것이다.

Ingest(섭취) 파이프라인

node.ingest : true | false
  • 노드 실행을 수집하는 파이프라인 기능
  • 인제스트 파이프라인을 섭취하는 일련의 과정은 엘라스틱 서치로 실행되야 한다.
    • 인제스트란 인덱스에 문서를 색인하는것이다.
    • 프로세스 단계로 인덱스에 추가되기 전에 문서를 조작할 수 있다. 주로 필드 추가, 및 제거 또는 값 변경과 같은것을 수행한다.
    • 데이터 수집은 상당히 리소스 측면에서 비싸다. 그래서 Filebeat를 이용해서 로그를 수집하면 엘라스틱 서치의 인덱스에 저장되기 전에 액세스 파이프라인을 통해 실행된다.

머신 런닝 방법

node.ml : true | false
xpack.ml.enabled : true | false
  • 첫 번째 방법으로 “식별 확인 노드”가 true로 설정된 것은 기계 학습 노드로 사용한다.
  • 두 번째 방법은 Xpack이다. Xpack의 ml기능을 활성화하거나 비활성화 하는것이다.

기계 학습을 사용하는 경우 이 두 가지 설정을 통해 노드를 실행할 수 있다. 백그라운드에서 기계 학습 작업을 원하지 않는 경우 유용하다.

Coordination (조정 노드)

node.master : false
node.data : false
node.ingest : false
node.ml : false
xpack.ml.enabled : false
  • 조정, 조율 노드란 질문을 분배하는 방식이다.
    • 엘라스틱 서치가 내부적으로 쿼리를 전달하는 방법
    • 조정 노드란 어떤 요청을 처리하고 그 프로세스에 필요한 처리를 담당하는 노드다.
    • 이러한 노드는 데이터를 검색하지 않고 데이터 노드에게 위임한다.
  • 노드가 조정 역할만 하는 경우 단일 노드는 단일 설정에서는 불가능하다.
    • 단일 에서는 구성을 수행할 수 있는 역할이 없기 때문이다.
    • 대신 다른 노드의 역할을 제거하여 수행한다.
  • 조화에서 전용 노드를 갖는 건 대규모 클러스터에만 유용하다.
    • 부하 분산 장치로 사용되기 때문이다.
    • 로드 밸러너로 사용할 수 있다.

Voting-only (투표만 가능)

node.voting_only : true | false
  • 이 역할은 노드가 새로운 마스터 노드를 선출할 때 투표 과정에 참여하는 것이며, 마스터 노드로 선출될 순 없다.
  • 새로운 마스터 노드이지만 마스터 노드 자체로 선택할 순 없다.
  • 해당 역할은 거의 사용할일이 없다.
# 생성된 노드 개수
GET /_cat/nodes?v

# 노드 검색 결과
ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
127.0.0.1            5          99  23    1.67                  cdfhilmrstw *      local
127.0.0.1            3          99  19    1.67                  cdfhilmrstw -      second-node
  • node.role ( 노드 역할 )
    • dim의 권한은 data, ingest, master의 줄임말이다.
    • 전체적인 권한을 보면 3개의 노드 모두 마스터 노드로 선출될 자격이 있다.
  • master ( 마스터 권한 )
    • *로 표기된게 현재 마스터 권한인 상태이다.
    • 마스터 노드가 된 이유는 처음에 시작할 때 생성된 첫번째 노드이고 그 시점에 다른 노드가 없었기 때문에 자동으로 마스터 노드가 됐다.
  • 일반적으로 역할을 바꾸지 않는게 가장 좋다. 자기가 지금 현재 하는 일에 대해 잘 모르거나 타당한 이유가 존재하지 않는다면 그대로 쓰는게 제일 좋다.
  • 이 작업은 나중에 할 수 있는 작업으로 정당한 이유로 바꿔야할 사항이 없다면 항상 기본롤을 고수해야 한다.
LIST