brunch

You can make anything
by writing

C.S.Lewis

by 무명 Jun 09. 2021

[ES] 클러스터, 노드, 샤드, 레플리카, 속도향상

엘라스틱서치 인덱스 샤드 레플리카 설정

https://www.elastic.co/guide/kr/elasticsearch/reference/current/gs-basic-concepts.html

클러스터

클러스터는 하나 이상의 노드(서버)가 모인 것이며, 이를 통해 전체 데이터를 저장하고 모든 노드를 포괄하는 통합 색인화 및 검색 기능을 제공합니다. 클러스터는 고유한 이름으로 식별되는데, 기본 이름은 "elasticsearch"입니다. 이 이름은 중요한데, 어떤 노드가 어느 클러스터에 포함되기 위해서는 이름에 의해 클러스터의 구성원이 되도록 설정되기 때문입니다.

동일한 클러스터 이름을 서로 다른 환경에서 재사용하지 마십시오. 노드가 잘못된 클러스터에 포함될 위험이 있습니다. 예를 들어 개발, 스테이징, 프로덕션 클러스터에 

logging-dev, logging-stage, `logging-prod`라는 이름을 사용할 수 있습니다.

클러스터에 하나의 노드만 있는 것은 유효하며 문제가 없습니다. 또한 각자 고유한 클러스터 이름을 가진 독립적인 클러스터를 여러 개 둘 수도 있습니다.


노드

노드는 클러스터에 포함된 단일 서버로서 데이터를 저장하고 클러스터의 색인화 및 검색 기능에 참여합니다. 노드는 클러스터처럼 이름으로 식별되는데, 기본 이름은 시작 시 노드에 지정되는 임의 UUID(Universally Unique IDentifier)입니다. 원한다면 기본 이름 대신 어떤 노드 이름도 정의할 수 있습니다. 이 이름은 관리의 목적에서 중요합니다. 네트워크의 어떤 서버가 Elasticsearch 클러스터의 어떤 노드에 해당하는지 식별해야 하기 때문입니다.

노드는 클러스터 이름을 통해 어떤 클러스터의 일부로 구성될 수 있습니다. 기본적으로 각 노드는 `elasticsearch`라는 이름의 클러스터에 포함되도록 설정됩니다. 즉 네트워크에서 다수의 노드를 시작할 경우 (각각을 검색할 수 있다고 가정하면) 이 노드가 모두 자동으로 `elasticsearch`라는 단일 클러스터를 형성하고 이 클러스터의 일부가 됩니다.

하나의 클러스터에서 원하는 개수의 노드를 포함할 수 있습니다. 뿐만 아니라 현재 다른 어떤 Elasticsearch 노드도 네트워크에서 실행되고 있지 않은 상태에서 단일 노드를 시작하면 기본적으로 `elasticsearch`라는 이름의 새로운 단일 노드 클러스터가 생깁니다.


https://brownbears.tistory.com/4


샤드 할당 방식 

https://dol9.tistory.com/276


쿼리튜닝

https://www.elastic.co/kr/blog/advanced-tuning-finding-and-fixing-slow-elasticsearch-queries


인덱스와 샤드 분할 팁

https://danawalab.github.io/elastic/2020/07/21/Elasticsearch-Index-Shard-How.html

맨날 보던거

https://www.elastic.co/kr/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster


https://towardsdatascience.com/speeding-up-bert-search-in-elasticsearch-750f1f34f455

레플리카

매거진의 이전글 [ES] 대용량 reindex 및 task모니터링
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari