ETC/Elasticsearch

[elasticsearch] 클러스터

seokhyun2 2024. 11. 10. 22:21

엘라스틱서치는 클러스터로 운영을 하는 구조입니다.

엘라스틱서치는 노드를 여러 대 띄우고, 노드들을 연결하여 클러스터로 구성할 수 있습니다.

노드들은 역할도 나눌 수 있도록 되어 있습니다.

노드 종류는 아래의 총 11가지로 나뉘어집니다.

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html#node-roles

  • master
  • data
  • data_content
  • data_hot
  • data_warm
  • data_cold
  • data_frozen
  • ingest
  • ml
  • remote_cluster_client
  • transform

노드 설정은 elasticsearch.yaml에서 아래와 같이 node.roles 설정을 추가하면 노드의 역할을 지정할 수 있습니다.

node.roles: [master]

리스트로 설정하는 이유는, 하나의 노드가 여러가지 역할을 할 수도 있기 때문입니다.

 

클러스터로 구성을 할 땐, master노드는 필수로 있어야 합니다.

또, data 노드 혹은 data_content + data_hot 2가지의 노드가 같이 꼭 존재해야 클러스터가 동작을 할 수 있습니다.

 

노드의 역할에 대해서 알아보면, 먼저 master노드는 cluster 전체를 관장하는 역할을 맡기 때문에 꼭 필요합니다.

각 노드들을 tracking하고 index의 생성 및 삭제, 샤드 할당 등의 역할을 수행합니다.

data 군의 노드들은 data를 실제로 갖고 있는 노드들입니다.

hot부터 frozen 까지는 얼마나 자주 사용하느냐의 빈도에 따라서 사용하면 됩니다.

data_hot은 가장 자주 사용하는 데이터를 저장하고 그렇기에 SSD와 같은 빠른 storage를 연동하여 운영하고 data_frozen은 거의 검색이 되지 않는 데이터를 저장하여 조금 느리더라도 가장 비용이 싼 storage를 연동하여 운영하는 방식입니다.

data_content는 빈도와 상관없이 CRUD가 계속 일어나는 문서들을 저장하는 용도로 사용합니다.

위의 모든 data 군을 합쳐서 운영하기 위해서는 data로만 설정하면 됩니다.

ingest 노드는 색인 시에 전처리 작업을 담당합니다.

lowercase나 filter, tokenizing 등의 작업들이 포함되는데, 전처리 작업이 많이 필요하다면 cluster 구성 시 ingest 노드를 따로 구성하고 그렇지 않으면 ingest 노드를 사용하지 않아도 괜찮습니다.

ml 노드는 최근에 머신러닝이 핫해짐에 따라서, 엘라스틱서치에서도 머신러닝 기능들을 제공하고 있는데요.

머신러닝 기능만 처리하는 노드를 별도로 구성할 수 있게 ml 노드가 추가되었습니다.

transform 노드는 엘라스틱서치에서 제공하는 통계와 같은 기능을 사용하기 위한 노드입니다.

transform 기능을 사용하면 인덱스를 분석하고 통계를 낼 수 있습니다.

 

오늘은 노드들의 종류와 역할에 대해서 알아보았습니다.

다음부터는 엘라스틱서치 사용법에 대해서 알아보도록 하겠습니다.

 

 

'ETC > Elasticsearch' 카테고리의 다른 글

[elasticsearch] 데이터 저장  (1) 2024.10.27
[elasticsearch] why elasticsearch?  (0) 2024.10.13