카테고리 없음

ElasticSearch 기본 용어

behonestar 2015. 9. 7. 19:53



elasticsearch_basic_concept.pptx




러스터 (Cluster)

  • 클러스터는 하나 또는 여러 노드들의 집합
  • 클러스터 이름을 기준으로 노드들이 묶임 (기본값 : elasticsearch)
  • 데이터를 노드들이 나눠 갖으며 노드들끼리 연합하여 인덱싱과 검색 작업 수행


노드 (Node)

  • 단일 서버이며 클러스터의 구성원
  • 데이터를 저장하고 클러스터의 인덱싱과 검색 작업에 참여함
  • 클러스터처럼 노드도 이름으로 식별 (기본값 : 랜덤 문자열)
  • 클러스터 이름을 지정하여 해당 클러스터에 노드 추가 가능 (기본값 : elasticsearch)
  • 클러스터에 노드가 추가되면 샤드 재분배 수행됨
  • shard reallocation 동적으로 끄기

    curl -XPUT localhost:9200/_cluster/settings -d '{
            "transient" : {
                "cluster.routing.allocation.enable" : "none"
            }
    }'

  • Data 노드와 Non-Data 노드로 구분하여 고급 구성 가능
  • Data 노드
    • node.data : true
    • node.master : false
    • http.enabled : false
    • 데이터가 저장되는 노드
    • 인덱싱 및 검색 작업 수행
    • transport 모듈로 통신하기 때문에 http 모듈은 비활성화

  • Non-Data 노드
    • 마스터 전용 노드 (dedicated master node)
      • node.data : false
      • node.master : true
      • http.enabled : false
      • 클러스터 - 노드 - 샤드의 맵핑 정보를 담고있는 노드
      • 클러스터 관리 명령 수행하는 노드 (가벼움)
      • 런타임 시 클러스터 멤버 중 마스터 노드로 적합한 노드 자동 선출
      • 한 노드가 데이터 노드와 마스터 노드 역할을 모두 수행하면 클러스터 불안정성 증가
      • 중요한 클러스터라면 마스터 전용 노드가 3개는 존재하도록 설정하는 것을 권장
        • discovery.zen.minimum_master_nodes : (「node.master: true」인 노드 개수 / 2 ) + 1
      • 마스터 전용 노드에게는 인덱싱 및 검색 요청을 보내지 않음으로써 클러스터 불안정성 감소

    • 클라이언트 노드 (client node)
      • 노드들의 앞단에서 로드 밸런서 역할
      • HTTP 쿼리 파싱, 검색 요청에 대한 scatter/gatther, 네트워크 부하 담당
      • 데이터 저장, 클러스터 관리 명령은 수행하지 않음
      • data node는 인덱싱 및 검색 작업에만 집중 가능
      • 설정값
        • node.data : false
        • node.master : false
        • http.enabled : true


인덱스 (Index)

  • 유사한 특징을 갖는 도큐멘트들의 집합
  • 인덱스는 인덱스 이름으로 식별됨
  • 인덱스 이름은 인덱싱, 검색, 갱신, 삭제 명령 시 참조됨
  • DATABASE


타입 (Type)

  • 하나의 인덱스 내에 여러개의 타입을 지정 가능
  • 타입은 인덱스에 대한 논리적인 카테고리/파티션
  • TABLE


도큐멘트 (Document)

  • 인덱스 가능한 정보의 기본 단위
  • 도큐멘트는 JSON으로 표현됨
  • ROW


샤드 (Shards)

  • 하나의 인덱스는 단일 노드의 용량을 초과할만큼 대량의 데이터 저장 가능
  • 인덱스를 관리하면 단일 노드로 용량 및 검색 속도의 한계 존재
  • 인덱스를 여러 조각(샤드)으로 나눠서 한계를 극복
  • 샤딩을 통해 볼륨을 분할/확장 가능
  • 샤딩을 통해 샤드끼리 분산/병렬 처리 가능 → 성능 향상
  • 샤드의 개수는 인덱스를 생성할 때 지정 가능
  • 인덱스를 생성할 때 샤드 개수 지정. 이후로는 변경 불가. (기본값 : 5)


리플리카 (Replica)

  • 리플리카 샤드, 줄여서 리플리카라고 부르기도 함
  • 샤드 또는 노드가 장애를 일으키는 경우를 대비하여 하나 이상의 복사본(리플리카 샤드)을 생성
  • 높은 가용성 제공을 위해 리플리카는 원본(프라이머리 샤드)과 다른 노드에 존재
  • 검색은 모든 리플리카에서 병렬로 실행가능 → 검색 성능 수평 확장(scale out) 가능
  • 인덱스를 생성할 때 리플리카 개수 지정. 이후로도 동적으로 변경 가능 (기본값 : 1)
  • 리플리카를 2로 설정하면 샤드가 5개일 때 리플리카 샤드는 총 10개가 생성됨