마스터 노드와 데이터 노드를 분리해야 하는 이유

김민규·2023년 7월 14일
0

elasticsearch

목록 보기
5/7
post-thumbnail

싱글 노드

  • 클러스터는 하나 이상의 엘라스틱서치 노드로 구성돼 있고 각 노드는 설정에 따라 특수항 Role을 부여받아 동작한다.
  • 노드들은 별도의 설정이 없다면 Single Node 모드로 동작한다.
    • 싱글 노드는 엘라스틱서치의 모든 기능을 사용하는 노드다.
  • 클러스터의 모든 노드가 싱글 노드로 설정돼 있으면 모든 노드들이 동일한 역할을 수행한다.
    • 소규모 클러스터에 적합하다.

데이터의 크기가 작거나 노드의 수가 3대 이하일 경우에는 싱글 노드만으로 클러스터를 구성하는 것도 괜찮은 선택이다.

전용 마스터 노드 구축

  • 마스터 노드의 Role과 데이터 노드의 Role이 하나의 노드에서 동시에 수행될 경우
    • 무거운 쿼리가 요청되어 데이터 노드의 부하로 인해 시스템에 행(Hang)이 걸리거나 노드가 다운되는 경우도 발생할 수 있다.
    • 당연히 마스터 노드의 역할도 정상적으로 수행되기 어려울 것이다.
      • 마스터 노드의 역할이 정상적으로 동작하지 못하는 상황에서는 레플리카에 의해 쉽게 복구할 수 있는 단순 장애도 복구되지 못한다.
      • 장애 복구의 책임은 마스터 노드에게 있다.
  • 마스터 노드는 많은 리소스가 필요 없다.
    • 역할 분리에 따른 비용 절감 효과도 있다.

안정적인 클러스터 운영을 위해서는 마스터 노드와 데이터 노드를 물리적으로 분리해서 각각 별도의 장비에서 동작할 수 있게 구성하는 것이 좋다.

전용 Coordination 노드 구축

  • 서비스가 성장할수록 다양한 지표에 대한 요구사항도 늘어날 것이다.
  • 엘라스틱서치는 애그리게이션(Aggregation)이라는 강력한 집계 연산을 제공한다.
  • 대량의 데이터를 처리해야 하는 집계 연산이 많은 경우에는 반드시 전용 Coordination 노드로만 요청을 받아야 한다.
    • 집계 연산은 메모리를 많이 사용한다.
    • 하나의 물리적인 서버에서 데이터 노드의 역할과 Coordination 노드의 역할이 동시에 수행될 경우 장애가 발생할 가능성이 커진다.
  • 일정 규모 이상의 클러스터를 운영한다면 노드를 별도로 분리해서 구축하는 것이 좋은 전략이다.
    • 검색 용도의 Coordination 노드
    • 색인 용도의 Coordination 노드
    • 집계 용도의 Coordination 노드

마스터 노드가 클러스터에 존재하는 모든 노드를 관리하기 때문에 Coordination 노드의 개수가 많아지면 관리에 부담이 생긴다.

profile
Backend Engineer, Vim User

0개의 댓글