본문 바로가기

Elasticsearch

Elasticsearch shard와 node

◎ 샤드 : 클러스터를 구성하는 서버간 이동가능

◎ Shard = 루신색인

◎ Cluster에서 Shard 분산하기

   ① horizontal scaling(수평적 확장)

       -> Cluster에 node를 추가하는 방법의 확장

       -> node를 더 추가함으로써 요청이 분산되어, 모든 node가 공유

   ② vertical scaling(수직적 확장)

       -> Elasticsearch node에 더 많은 자원을 추가

           ex) RAM, HDD, CPU 증설

      -> 성능에 도움이 되나 비용 효율적이지 않음

◎ 분산색인(index 생성)

    ① 색인 요청을 받은 Elasticsearch node는 우선 document를 색인할 shard를 선택

        -> 기본값으로 document는 shard에 골고루 분산

    ② 각 document에 대해 shard는 그 document의 ID 문자열을 해싱해서 결정

        -> 각 shard는 동등하게 새로운 document를 받을 기회와 함께 동등한 해시 범위를 갖음

    ③ 대상 shard가 결정되면 현재 node는 shard를 소유한 node로 document를 전달

    ④ 색인 작업은 shard의 모든 복제 때문에 다시 수행

        -> 색인 명령은 모든 replica가 document를 색인한 후 성공적으로 반환

◎ 검색요청

    ① 검색 요청을 받은 Elasticsearch node는 모든 데이터를 포함한 shard에 요청을 전달

    ② round-robin을 사용하여, elasticsearch는 이용가능한 prmary 혹은 replica shard를 선택하고 검색 요청

        ※ round-robin : 다중처리(일부분만 순차적 실행) 

           ->  studies0(1/2 실행) -> studies1(1/2 실행) -> studies0(1/2 실행) -> studies1(1/2 실행) 

    ③ elasticsearch는 shard들로 부터 결과를 모아서, 하나의 응답으로 집계 후에 client application에 응답을 전달

        -> cluster의 모든 node가 같은 H/W와 같은 S/W 설정을 가지고 같은 성능을 제공한다면

            기본 값으로 primary와 replica shard가 round-robin으로 검색 요청을 받음

'Elasticsearch' 카테고리의 다른 글

Elasticsearch Head설치  (0) 2020.01.27
Elasticsearch 데이터 구조  (0) 2020.01.26
Elaticsearch 설치  (0) 2020.01.24