ILM 정책을 수립을 하는 도중에 hot-warm-cold 세 개로 노드를 나누어서 multi-tier 노드 아키텍처를 설정하려고 한다.
그러기 위해서는 노드의 종류와 각 노드들의 옵션이 무엇인지 알아야 하기 때문에 글을 정리하려고 한다.
ElasticSearch 노드 종류
(1) Master 노드
- node.master를 true로 지정하며 클러스터의 컨트롤을 통해 마스터 노드로 선택될 자격을 가지게 된다.
- 마스터 노드는 클러스터에서 인덱스를 만들고 지우는 행위, 클러스터에서 노드들을 트래킹하고 각각의 노드를 샤드를 할당할건지 결정한다.
- 데이터를 인덱싱하고 찾고 하는 작업은 CPU, Memory, I/O 자원을 많이 사용하기 때문에 큰 규모에서는 data node와 master node를 구별한다.
(2) Data 노드
- node.data가 true로 지정된 노드는 데이터를 가지고 있을 수 있고 CRUD, 검색, aggregation 등의 데이터와 관련된 작업이 가능하다.
- 데이터 노드는 인덱싱 된 Document를 포함하고 있는 샤드를 관리한다.
- 데이터 노드는 데이터를 직접적으로 다루기 때문에 리소스 자원이 많이 필요하다.
(3) ingest 노드
- node.ingest가 true로 지정된 노드가 Document가 인덱싱 되기 전에 변형되고 풍성하게 하기 위해서 Document를 ingest pipeline으로 적용할 수 있다.
- ngetst node는 pre processing 파이프라인을 실행하고 하나 또는 하나 이상의 ingest processor들을 모으는 작업을 한다.
- ingest를 로드하는건 무겁기 때문에 데이터나 마스터 노드에서는 node.ingest를 false로 지정하는 것이 좋다.
- 많은 리소스를 잡아먹기 때문에 ingest node는 별도로 지정하는 것이 좋다.
(4) Machine Learning 노드
- xpack.ml이 true로 지정되어 있고 node.ml이 true로 설정되어 있는 노드는 기본적으로 엘라스틱서치에서 분배하는 행위를 한다.
- 만약 머신러닝 특징을 사용하고 싶으면 적어도 클러스터 내에 하나의 머신러닝 노드가 있어야 한다.
(5) Coordinating 노드
- 검색 요청과 bulk indexing과 같은 요청들은 다른 노드들의 있는 데이터를 많이 다룬다.
- 데이터가 흩어져 있는 경우 데이터가 있는 노드로 향하게 조정해준다. 각각의 데이터 노드는 요청을 자체적으로 처리하고 그것의 값을 Coordinating 노드에 전달해준다. 그럼 Coordinating 노드는 이를 모아서 하나의 데이터 형태로 정제하여 반환한다.
- 또한 데이터를 모으고 조작하고 하는 작업이 많기 때문에 Coordinating 노드는 메모리랑 CPU에 대한 자원이 많아야 한다. 그렇기 때문에 오직 요청을 라우팅하고 검색 구절을 조절하고, bulk indexing 분배작업을 하는 노드로만 사용하는 게 좋다.
'데이터베이스 > ELK' 카테고리의 다른 글
Elastic APM (0) | 2022.11.03 |
---|---|
[ElasticSearch] ILM 기능으로 인덱스 주기 관리 (0) | 2022.08.23 |
[Elasticsearch] (error) vm.max_map_count 값 변경하기 (0) | 2022.08.19 |
[Elasticsearch] 다른 서버에서 클러스터 구성 (노드 연동) with. docker-compose (0) | 2022.08.18 |
[ElasticSearch] 엘라스틱서치의 내부 구조 및 cluster, index, replica, shard (0) | 2022.08.12 |