-
Elasticsearch : 시스템 구조 (1/2)Elasticsearch 2021. 4. 13. 15:38728x90
Elasticsearch 핵심 개념
- 클러스터
- 1개 이상의 노드로 구성된 것
- 하나 이상의 노드(=서버)가 모인 것
- 클러스터를 통해, 데이터를 저장하고, 색인 및 검색 기능을 제공한다.
- 노드
- 클러스터에 포함되는 단일 서버
- 데이터를 저장하고 클러스터의 색인, 검색 기능에 참여한다.
- 인덱스(색인, index)
- 인덱스 = 데이터 저장 공간
- 1개 노드에 여러 개 인덱스 가능
- 1개 인덱스는 여러 개 노드에 분산 저장되어 관리
- 1개 인덱스는 1개 타입 가능
- elasticsearch의 index 생성 시 기본 구조 : 5개의 primary shard + 1개의 replica shard
- 타입(유형)
- 하나의 색인에서 하나 이상의 타입을 정의할 수 있다.
- DB의 table과 대응된다.
- 도큐먼트
- 색인화 할 수 있는 기본 정보 단위이다.
- 예를 들어 어떠한 단일 제품, 단일 고객, 단일 주문에 대한 도큐먼트가 각각 존재할 수 있다.
- 이 문서는 JSON 형식이다.
- Shard and Replica (샤드와 리플레카)
- 색인은 방대한 양의 데이터를 저장할 수 있다.
- 때문에, 이러한 데이터가 단일 노드의 하드웨어 한도를 초과할 수도 있다. (수용하지 못하거나 느려지는 등의 문제 발생)
- Elasticsearch에서는 이러한 문제를 해결하기 위해, 샤드(Shard)라는 조각으로 색인을 분할하는 기능을 제공한다.
Node (노드)
- 1개 클러스터는 여러 개의 노드로 구성된다.
- elasticsearch는 분산 처리를 위해, 여러 개의 노드를 클러스터로 묶어 관리한다.
- 노드 종류
- 마스터 노드 : 클러스터 관리, 노드의 추가 및 제거 등의 전반적 관리 담당
- 데이터 노드 : 실제 데이터의 저장이 이뤄지는 공간
- 코디네이팅 노드 : user의 요청에 대한 처리를 하는 노드
- 인제스트 노드 : document의 전처리를 담당
Shard (샤드)
- 대용량의 색인을 샤드라는 단위로 분할하여 관리한다.
- 샤드 그 자체가 온전한 기능을 하는 독립적인 색인이다.
- 어떠한 노드에서도 호스팅이 가능하다.
- 샤드의 장점
- 콘텐츠 볼륨의 수평, 분할, 확장이 가능해진다.
- 작업의 병렬화로 성능, 처리량을 늘릴 수 있다.
- 언제든 발생할 수 있는 '오류'의 상황을 대비하여 Fail-Over 매커니즘을 마련하는 것은 매우 유익하다.
- 때문에, Elasticsearch에서는 샤드에 대해 하나 이상의 '복사본 샤드'를 만들 수 있고, 이를 리플리카라고한다.
Replica (리플리카)
- 목적
- 샤드에 오류가 발생되더라도 고가용성을 제공한다. 때문에, 리플리카는 원본 샤드와 동일한 노드에 배정되지 않는다.
- 모든 리플리카 역시 병렬 방식으로 검색을 실행할 수 있으므로, 처리량을 확장할 수 있다.
- 기본적으로 Elasticsearch는 기본 샤드 5개, 리플리카 1개를 가진다.
- 만약 1개 클러스터에 2개의 노드가 있다면, 색인은 샤드 5개, 리플리카 5개 총 10개의 샤드가 존재한다.
클러스터와 노드의 관계
[Example]
클러스터 A
노드 A, 노드 B
인덱스 A, 인덱스 B
클러스터 A에는 노드 A, 노드 B가 존재한다.
노드 A에는 인덱스A, 인덱스 B가 존재한다.
노드 B에는 인덱스A, 인덱스 B가 존재한다.
노드 A의 인덱스 A에는 샤드1, 샤드 2가 존재한다.
노드 A의 인덱스 B에는 샤드3이 존재한다.
노드 B의 인덱스 A에는 샤드3, 샤드4가 존재한다.
노드 B의 인덱스 B에는 샤드1, 샤드2가 존재한다.- 인덱스 A의 여러 개의 샤드가 노드 A와 노드 B에 분산 저장되어 있다.
- elasticsearch의 클러스터는, 인덱스의 document를 조회할 때 마스터 노드를 통해 2개의 노드를 모두 조회하여, 각 데이터를 취합한 뒤 하나의 결과로 합쳐 user에게 제공한다.
728x90'Elasticsearch' 카테고리의 다른 글
Elasticsearch : 데이터 색인과 텍스트 분석 (0) 2021.04.13 Elasticsearch : 검색 (0) 2021.04.13 Elasticsearch : 데이터 처리 (0) 2021.04.13 Elasticsearch : 시스템 구조 (2/2) (0) 2021.04.13 Elasticsearch : 시작하기 (0) 2021.04.02 - 클러스터