본문 바로가기

Elasticsearch (ELK)/Elasticsearch

4. 마스터 노드와 데이터 노드

마스터 노드 - 메타 데이터, 샤드의 위치와 같은 클러스터 상태 정보를 관리

 

노드와 샤드들의 개수가 많아지게 되면 모든 노드들이 마스터 노드의 정보를 계속 공유하는 것은 부담될 수 있으므로

마스터 후보 노드들만 따로 선출 가능하다 

 

이 때 노드설정을 node.master: false로 설정해주면 되겠다.

 

데이터 노드 - 실제 색인된 데이터를 저장하고 있는 노드

만약 특정 노드를 마스터후보로 설정하되 데이터 저장을 하고싶지 않다면 node.data: false로 설정하면 되겠다.

 

예제

실제 운영 환경에서는 위 예제처럼 마스터 후보를 노드는 1개만 설정하면 안 되고 최소 3개 이상의 홀수개로 설정해야 합니다. 이유는 다음의 Split Brain 문제에서 설명합니다.

 

Split Brain

 

 

위와 같이 네트워크 단절로 마스터 후보 노드인 node-1 과 node-2 가 분리되면 각자가 서로 다른 클러스터로 구성되어 계속 동작하는 경우가 있을 수 있다. 이 상태에서 각자의 클러스터에 데이터가 추가되거나 변경되고 나면 나중에 네트워크가 복구 되고 하나의 클러스터로 다시 합쳐졌을 때 데이터 정합성에 문제가 생기고 데이터 무결성이 유지될 수 없게 된다. 이런 문제를 Split Brain 이라고 한다.

 

Split Brain을 방지하기 위해선

  • minimum_master_node를 아래와 같이 설정
    • 1~2개 : 1
    • 3개이상 : (전체 마스터 후보 노드 / 2) + 1
  • 만약 네트워크 단절로 인해 클러스터가 나뉘어진다면 minimum_master_node 이상인 클러스터만 살아 있고 나머지 클러스터는 동작음 멈추게 된다

관련 설정

discovery.zen.minimum_master_nodes을 사용해야되는 6.0버전과 달리 

7.0버전 부터는 해당 설정이 사라지고 node.master: true 노드가 추가되면 자동으로 설정이 바뀐다.

그러므로 최초 마스터 후보로 선출할 값만 설정하면 됩니다.

cluster.initial_master_nodes: [ ]