마스터 노드 - 메타 데이터, 샤드의 위치와 같은 클러스터 상태 정보를 관리
노드와 샤드들의 개수가 많아지게 되면 모든 노드들이 마스터 노드의 정보를 계속 공유하는 것은 부담될 수 있으므로
마스터 후보 노드들만 따로 선출 가능하다
이 때 노드설정을 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: [ ]
'Elasticsearch (ELK) > Elasticsearch' 카테고리의 다른 글
6. 쿼리 (0) | 2020.05.27 |
---|---|
5. Elasticsearch 데이터 처리 - REST API (0) | 2020.05.26 |
3-2. Elasticsearch 시스템 구조 - 인덱스와 샤드 (0) | 2020.05.26 |
3-1. Elasticsearch 시스템 구조 - 클러스터 구성 (0) | 2020.05.26 |
2. Elasticsearch 환경 설정 (0) | 2020.05.25 |