elasticsearch_basic_concept.pptx
클러스터 (Cluster)
- 클러스터는 하나 또는 여러 노드들의 집합
- 클러스터 이름을 기준으로 노드들이 묶임 (기본값 : elasticsearch)
- 데이터를 노드들이 나눠 갖으며 노드들끼리 연합하여 인덱싱과 검색 작업 수행
- 단일 서버이며 클러스터의 구성원
- 데이터를 저장하고 클러스터의 인덱싱과 검색 작업에 참여함
- 클러스터처럼 노드도 이름으로 식별 (기본값 : 랜덤 문자열)
- 클러스터 이름을 지정하여 해당 클러스터에 노드 추가 가능 (기본값 : 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개가 생성됨