1. 클러스터 구성 개요

Elasticsearch 클러스터는 확장성과 안정성을 고려하여 여러 개의 노드로 구성된다. 처음에는 단순히 노드를 종류별로 나열하는 방식으로 운영을 했지만, 마스터 노드의 경우 1개만 있을 경우 다운될 경우 엘라스틱 서치가 마비될 것을 대비하여 2개를 두었지만, 서로 마스터 노드 투표를 자신에게 해버려서 마스터 노드가 선출이 안되는 오류가 발생했다. 데이터 노드의 경우 대용량 데이터 처리가 되면서 단순히 모든 데이터를 동일한 방식으로 저장하는 것은 효율이 떨어졌고 중요도에 따른 카테고리화를 진행할 필요성이 생기기 시작했다. 데이터 노드 수가 증가됨에 따라 AWS의 ELB와 동일하게 로드벨런싱을 담당하는 요소의 필요성 또한 부각되기 시작하였다.

 

(1) 클러스터 노드 구성 및 이유

노드 유형 개수 역할 선정 이유
마스터 노드 3개 클러스터 상태 관리, 노드 헬스 체크, 샤드 배치 조정 홀수 개(3개)로 유지하여 선출 과정에서 네트워크 분할(Partition) 문제 방지, 고가용성 확보
코디네이터 노드 1개 클라이언트 요청 처리, 검색 및 집계 부하 분산 검색 부하가 높은 환경에서 별도의 코디네이터 노드가 있으면 부하 분산이 용이함
Hot 데이터 노드 3개 최신 데이터 저장, 빠른 검색 처리 최신 데이터를 빠르게 검색할 수 있도록 성능이 높은 노드에서 운영
Warm 데이터 노드 3개 중간 단계 데이터 저장, 검색 성능 중간 장기적으로 검색 빈도가 줄어드는 데이터를 따로 저장하여 리소스를 효율적으로 활용
Cold 데이터 노드 3개 오래된 데이터 저장, 저비용 스토리지 활용 자주 조회되지 않는 데이터를 비용이 낮은 스토리지에 저장하여 클러스터 운영 비용 절감

 

(2) 주요 설계 원칙

  • 마스터 노드는 데이터 노드 역할을 하지 않도록 분리하여 성능 저하 방지
  • 홀수 개(3개, 5개 등)로 운영하여 선출 과정에서 네트워크 분할(Partition) 문제 예방
  • Hot-Warm-Cold 구조를 활용하여 데이터 저장 비용 최적화
  • 코디네이터 노드를 통해 검색 부하를 분산하여 성능을 향상

2. 클러스터 운영 전략

클러스터 운영 시 고려해야 할 주요 요소는 노드 배치, 샤드 할당, 부하 분산이다. 각 요소를 적절히 관리하면 성능 저하와 장애를 방지할 수 있다.

 

(1) 마스터 노드의 역할 및 구성 이유

 

마스터 노드는 클러스터의 전반적인 상태를 관리하며, 노드 간의 통신과 샤드 배치를 조정한다. 3개의 마스터 노드를 운영하면 **선출 과정(Election Process)**에서 안정성을 확보할 수 있다.

  • 마스터 노드를 3개로 설정한 이유
    • Elasticsearch의 Split Brain 문제 방지
    • 홀수 개(3, 5 등)로 유지하면 선출 과정에서 안정성 증가
    • 장애 발생 시 빠른 마스터 선출 가능

 

(2) 데이터 노드(HWC 구조) 운영 및 구성 이유

 

데이터 노드는 Hot-Warm-Cold 구조로 분리하여 관리할 수 있다.

데이터 노드 유형 역할 및 특징 선정 이유
Hot 노드 최신 데이터 저장, 빠른 검색 수행 SSD 사용, 높은 CPU 성능 요구, 빠른 응답 속도 필요
Warm 노드 일정 시간이 지난 데이터 저장, 성능과 비용 균형 유지 검색 빈도가 낮아지므로 비용 절감을 위해 일반 HDD 사용 가능
Cold 노드 오래된 데이터 저장, 저비용 스토리지 활용 거의 조회되지 않는 데이터 보관을 위한 비용 최적화 목적

왜 HWC 구조를 사용했는가?

  • 검색 성능 최적화: 최근 데이터를 Hot 노드에 저장하여 빠르게 검색 가능
  • 비용 절감: 오래된 데이터는 저비용 스토리지로 이동하여 유지 비용 최소화
  • 확장성 확보: 데이터가 증가해도 클러스터가 원활하게 운영될 수 있도록 계층화하여 관리

3. 장애 대응 및 복구 전략

클러스터 장애는 다양한 원인으로 발생할 수 있으며, 미리 대비하는 것이 중요하다.

 

(1) 장애 유형 및 해결책

장애 유형 원인 해결책
마스터 노드 장애 네트워크 단절, 하드웨어 오류 3개 이상의 마스터 노드 유지, 빠른 리더 선출 설정
데이터 노드 과부하 대량의 검색 요청, 샤드 불균형 코디네이터 노드 추가, 샤드 리밸런싱 수행
디스크 공간 부족 과도한 데이터 저장 ILM(인덱스 수명 주기) 적용, 오래된 데이터 Cold 노드로 이동

4. 결론

  • 마스터 노드는 홀수 개(3개)로 설정하여 안정적인 클러스터 운영을 보장
  • Hot-Warm-Cold 구조를 도입하여 검색 성능과 비용을 최적화
  • 코디네이터 노드를 활용하여 검색 부하를 효과적으로 분산
  • 장애 대응 전략을 구축하여 클러스터 운영의 안정성을 유지

 

+ Recent posts