ELK/ELK 개발부터 운영까지

클러스터(Cluster)와 노드(Node) 구성

Flambee 2022. 5. 2. 00:00
Split Brain 문제를 피하기 위해서 마스터 후보 노드 개수는 항상 홀수로 하고 가동을 위한 최소 마스터 후보 노드 설정은 (전체 마스터 후보 노드)/2+1로 설정해야한다.해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 7장을 정리하여 쓴 글입니다.

엘라스틱서치의 클러스터

엘라스틱서치에서의 클러스터(Cluster) ? 엘라스틱서치의 클러스터는 노드들로 구성되어 있다. 노드들을 통하여 필요한 작업을 나눠서 수행하는 분산 처리를 지원하여 대량의 데이터를 다룰 수 있다.

컴퓨팅 시스템에서의 클러스터(Cluster) ? 여러 대의 컴퓨터를 병렬로 연결해 하나의 시스템으로 구성한다. 시스템 장애를 대비한 고가용성(high availability)을 높이는 동시에 시스템 성능을 높일 수가 있다.

엘라스틱서치의 노드

노드(Node) ?

  • 엘라스틱서치 클러스터를 구성하는 하나의 인스턴스(instance)이다. 
  • 엘라스틱서치가 설치되는 물리적(실제 물리적 장치) 혹은 논리적(정보를 저장 및 처리) 단위이다. 
  • 일반적으로 하나의 논리적인 서버로 구성되어 데이터를 저장하고 클러스터의 인덱싱과 검색 기능에 참여한다.
  • 물리적인 서버 하나에 노드 하나를 구성하는 방식을 권장한다.

이러한 노드들은 HTTP 모듈 / 전송 모듈로 구성되어 있다.

HTTP 모듈 : REST API를 통해 노드와 외부 클라이언트 통신을 위해 사용한다.

전송 모듈 : 노드와 노드간의 통신에 사용한다.

통신 모듈 특징
전송 모듈 - 클러스터 내부 모듈 간의 통신에 사용함
- 노드 간 데이터를 분산 처리하는 구조에 적합한 방식
- 기본 포트 : 9300 ~ 9399
HTTP 모듈 - 엘라스틱 API에서 제공하는 형태로 외부 클라이언트 앱과 통신 시 사용함
- 기본 포트 : 9200 ~ 9299

노드의 종류

노드의 종류는 마스터 노드, 투표 전용 노드, 데이터 노드, 인제스트 노드, 코디네이터 전용 노드가 있다.

 

마스터 노드

  • 클러스터를 유지하기 위해 없어서는 안되기 때문에 반드시 하나의 마스터 노드를 가져야 한다.
  • 인덱스의 설정, 매핑 정보와 물리적 위치, 클러스터 설정 정보, 인덱스 템플릿 정보 등 모든 상태 정보를 관리한다.
  • 마스터 노드는 사용자가 정할 수 없고 다수의 마스터 후보 노드가 투표를 통해 결정한다.
  • 마스터 노드에 대한 설정이 잘못되면 Split Brain 문제가 일어날 수가 있다.

Split Brain 문제를 피하기 위해서는 마스터 후보 노드 개수는 항상 홀수로 하고 가동을 위한 최소 마스터 후보 노드 설정은 (전체 마스터후보 노드) / 2+1로 설정해야 한다.

 

Split Brain ? 네트워크 장애 등으로 클러스터가 분리되었을 때 나누어진 각각의 서브 클러스터가 서로 마스터 노드를 선출하고 독립적인 클러스터로 동작하는 상태를 의미 한다. 즉, 마스터 노드가 2개가 되는 것을 말한다. 하지만, elasticSearch 7.0 이후 버전부터 마스터 노드 선출 알고리즘 변경으로 minimum_master_node를 직접 지정하지 않기 때문에 스플릿 브레인은 발생하지 않는다.

 

데이터 노드

  • 인덱싱한 도큐먼트를 샤드 형태로 저장하여 데이터의 CRUD 작업과 검색, 집계 작업을 한다.
  • 노드 중 가장 많은 부하를 받는다.
  • 컴퓨터 리소스(I/O, CPU, 메모리 등) 사용량에 민감하기 떄문에 모니터링하면서 부하 상태를 체크하고 상황에 맞춰 명시적으로 샤드를 재분배하거나 데이터 노드를 추가/변경하는 작업을 해야 한다.

 

마스터 노드는 클러스터의 상태만 관리하고, 데이터 노드는 데이터 처리만 하는 것이 좋다.

 

인제스트 노드

도큐먼트의 가공과 정제를 위한 인제스트 파이프라인이 실행되는 노드. 로그스태시의 필터와 기능적으로 유사하다.

 

코드네이터 노드

REST API 요청을 처리하는 역할, 기본적으로 모든 노드가 코디네이터 노드 역할을 수행할 수 있다. 사용자 요청 작업을 받아서 각 노드들에 전달하고 취합해 결과를 제공하는 역할을 한다.

 

전용 노드

노드별로 하나의 역할을 수행하는 전용 노드로 클러스터를 구성하면 시스템의 성능과 안전성, 비용 면에서 좀 더 효율적으로 활용할 수 있다.

전용 노드 권장 하드웨어 사양은 아래와 같다.

  CPU 메모리 저장장치
마스터 후보 전용 노드 저사양 저사양 저사양
데이터 전용 노드 고사양 고사양 고사양
인제스트 전용 노드 고사양  중간 사양 저사양
코디네이터 전용 노드 저사양 중간 사양 저사양

 

'ELK > ELK 개발부터 운영까지' 카테고리의 다른 글

비트(beat)  (0) 2022.03.28
Logstash config directory 위치(brew 설치 시)  (0) 2022.03.22
로그스태시(LogStash)  (0) 2022.03.21
살려줘!! HyperLogLog  (2) 2022.03.18
엘라스틱서치(elasticsearch) 집계  (0) 2022.03.09