본문 바로가기
엘라스틱서치

3. 시스템 구조

by N.Damgom 2021. 8. 31.

3. 시스템 구조

  • 엘라스틱서치는 항상 클러스터로 동작한다.
  • 1개의 노드만 있어도 클러스터로 구성된다.

클러스터 구성

  • 9200~9299: 클라이언트와 통신하기 위한 http 포트
  • 9300~9399: 노드 간 데이터를 교환하기 위한 tcp 포트
  • 물리 서버마다 하나의 노드를 실행하는 것을 권장한다.
  • 같은 물리 서버 내라고 해도 cluster.name이 같아야 같은 클라이언트로 인식한다.
  • bin/elasticsearch -Ecluster.name=~ -Enode.name=~ 으로 실행 시 옵션을 지정한다.
  • 엘라스틱서치 실행 후 로그에서 포트 바인딩 정보를 확인할 수 있다.
  • 모든 클러스터에는 반드시 하나의 마스터 노드가 존재한다.

디스커버리

  • 같은 서버, discovery.seed_hosts에 설정된 네트워크 상의 다른 노드들을 찾아 같은 클러스터로 바인딩하는 과정이다.
  • discovery.seed_hosts에서 호스트들을 찾아서 cluster.name이 같으면 바인딩되고, 없으면 새로운 클러스터로 시작한다.
  • 처음 탐색할 노드 3~5개만 설정해도 문제없이 클러스터가 바인딩된다.
  • 처음 탐색 대상 노드는 먼저 가동중이어야 한다.

 

인덱스와 샤드

  • 도큐먼트: 단일 데이터 단위
  • 인덱스: 도큐먼트를 모아놓은 논리적 집합
  • 인덱스는 샤드라는 단위로 분리되어 각 노드에 분산저장된다.
  • 샤드: 인덱스의 도큐먼트를 분산하여 저장하는 저장소
  • 인덱스는 엘라스틱서치 7.0부터 default로 1개의 샤드로 구성되며, 이하 버전은 5개로 구성된다.
  • 저장 뿐만 아니라 검색도 샤드 별로 분산되어 검색된다.
  • 샤드 개수에 비례해서 시스템 자원을 사용하므로 적절한 개수를 유지하는 것이 좋다.
  • 노드가 추가되면 샤드들이 노드들로 분산된다.
  • 프라이머리 샤드: 처음 생성된 샤드이다.
  • 리플리카(복제본) 샤드: 프라이머리 샤드를 복제하여 다른 노드에 저장한다. 단일 노드일 경우 리플리카는 생성되지 않는다
  • 프라이머리 샤드와 리플리카는 같은 데이터를 담고 있으며 반드시 서로 다른 노드에 저장된다.
  • 노드 유실 시 유실된 샤드는 자동으로 복제된다.
  • 프라이머리 샤드가 유실될 경우 리플리카가 프라이머리로 승격되며, 복제본이 새로 생성된다.
  • 샤드 개수는 인덱스 생성 시 결정하며 변경 불가능하다.
  • 인덱스 5개, 복제본 1개 설정 시 10개의 샤드가 생성된다.

마스터 노드와 데이터노드

  • 마스터노드: 인덱스의 메타데이터, 샤드의 위치와 같은 클러스터 상태 정보를 관리한다. 클러스터 내 유일하다.
  • Master Eligible Node: 마스터 노드가 될 수 있는 후보 노드 node.master로 설정하며 default는 true이다.
  • node.master: true
    #node.data: false (해당 노드를 마스터 노드로만 사용할 경우)
  • 마스터 노드는 키바나에서 별 표시로 나타난다.
  • 데이터노드: 마스터가 아닌 노드. 데이터 처리에만 집중한다.
  • node.master: false
    node.data: true
  • Split Brain: 마스터 후보 노드가 짝수일 때 마스터 후보 노드간 연결이 끊어질 경우 각자 다른 클러스터로 동작하는 문제
  • 마스터 후보 노드 개수는 항상 홀수로 지정하자.
  • 전체 마스터 후보 노드 중 과반 이상의 노드가 있는 상태일 때만 동작하도록 설정하자.
  • discovery.zen.minimum_master_nodes: (전체 마스터 후보 노드 개수/2)+1

출처: https://esbook.kimjmin.net

'엘라스틱서치' 카테고리의 다른 글

6. 데이터 색인과 텍스트 분석  (0) 2021.09.06
5. 검색과 쿼리  (0) 2021.09.05
4. 데이터 처리  (0) 2021.08.31
2. 시작하기  (0) 2021.08.31
1. 서문  (0) 2021.08.31