기본적으로 shard 를 한번 생성하고 나면 추후 변경이 안된다.
데이터는 계속 쌓이고 쌓이는 양에 대해서 가늠하기도 애매할 텐데 거기다가 변경(scale out) 도 안된다니.
이렇다보니 최초 인덱스 생성시 shard 설정을 어떻게 해야 할까 고민이 되는 건 당연지사.
이리저리 뒤져 보면 여러가지 얘기들이 있다. 그 중 한 두개 꼽아 보자면
* 샤드는 무조건 많다고 좋은건 아니다.
당연한 얘기겠지만 분산되어 있는 서버, 시스템, 플랫폼 등등 그 양이 많아지면 관리하기는 점점힘들어 지고 그에 따른 관리도 쉽지가 않다.
간략한 예로 샤드자체가 리소스들(memory, file 등)을 사용하고, 검색 요청 / 연산시 나눠져 있는 각 샤드를 다 확인해 봐야 하기 때문이다.
* 최초 노드의 3배 정도 설정해라.
이건 왜 그런건지 잘 모르겠다. ELK 스택을 호스팅해주는 업체에서 작성한 포스트 중에 본 내용인데.. 영문을 제대로 이해 못한건지...
이 외에는 아무리 찾아봐도 뾰족하게 쓸만한 내용은 없는거 같다..
그렇다면 어떻게 해야 하나? 내가 생각하는 바를 말하기 전에 간략하게 엘라스틱서치의 개념적인 구성을 보면
* 클러스터(cluster) : "노드"들의 모음이라고 볼 수 있음
* 노드(node) : 엘라스틱서치의 실제 인스턴스
* 인덱스(index) : 문서(Document라고 하나 그냥 데이터라고 표현하자.)들의 집합
* 샤드(shard) : 인덱스의 문서(데이터)들의 정보를 나눠서 가지고 있음
위와 같다.
위 내용을 가지고 정리를 해 보자면
* 실제 데이터는 인덱스라는 논리적인 개념으로 묵임
* 인덱스에 묵인 실제 데이터들은 샤드에 나눠져서 저장 됨
* 노드당 다수의 샤드가 할당 될 수 있음
* 노드는 머신당 하나 이상 있을 수 있다.
그런데 실제로 구성을 하다보니 나의 경우에는 하나의 인덱스에 모든 데이터를 계속 집어 넣는게 아니라 인덱스를 날짜별로 생성을 하는 방식으로 하게 되면 샤드의 갯수에 크게 종속적이지 않아도 될 듯 하다.
(샤드를 늘릴 필요가 있을 경우 앞으로 생길 인덱스에 적용 될 수 있도록 설정을 하게 되면 되니까)
'elasticsearch' 카테고리의 다른 글
elasticsearch module (엘라스틱서치 모듈에 대해서) (0) | 2016.05.29 |
---|---|
엘라스틱서치 ( elasticsearch ) 순차 재시작 (0) | 2016.05.27 |
엘라스틱서치 ( elasticsearch ) 메모리 관련 (공식 홈피 번역) (2) | 2016.05.26 |
엘라스틱서치 ( elasticsearch ) 릴리즈를 위한 하드웨어 고려 (공식 가이드 번역) (0) | 2016.05.26 |
왓처 ( watcher ) 문서 내용 요약 - 1 (0) | 2016.05.24 |