인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

skyjoon2님의 프로필 이미지
skyjoon2

작성한 질문수

ElasticSearch Essential

여섯 번째 강의 - 색인 과정 이해하기

색인과정 이해하기 중 질문입니다.

작성

·

65

0

색인과정에서 number_of_shards, number_of_replicas 의값이 1로 기본 설정이 되어있는 경우 첫번재 두번째 요청이 들어오면 내부 라우팅 알고리즘에 의하여 두번째 데이터 노드로 색인 요청이 온다면 프라이머리 샤드가 없기 때문에 첫번재 데이터 노드로 요청을 하고 두번째 데이터 노드에있는 레플리카 샤드로 다시 복제한다는 것 까지 이해를 하였습니다.

 

하지만 그 뒤의 부분에서 현재 총 3개의 데이터 노드가 존재하는데, 프라이머리 샤드, 레플리카 샤드의 기본값을 1로 설정되어있기 때문에, 세번째 노드가 사용되지 않고있는 상황인데, 프라이머리 샤드와 레플리카 샤드의 경우는 색인을 하는 경우 사용자가 직접 설정하거나 기본값으로 1로 설정되는데 데이터 노드의 경우는 기본값이나 직접 설정이 가능한가요? 따로 설정한 부분이나 설명이 없는데 초기 그림부터 세개의 데이터 노드가 존재하는 부분에 의문이 생깁니다.

 

프라이머리 샤드와 레플리카 샤드의 갯수 설정을 함에 따라 데이터 노드의 갯수가 어떻게 달라지는지도 궁금합니다.

답변 2

0

강진우님의 프로필 이미지
강진우
지식공유자

데이터 노드의 경우는 기본값이나 직접 설정이 가능한가요? 따로 설정한 부분이나 설명이 없는데 초기 그림부터 세개의 데이터 노드가 존재하는 부분에 의문이 생깁니다.

데이터 노드의 갯수와 프라이머리 샤드, 레플리카 샤드의 갯수 설정과는 연관이 없습니다. 데이터 노드는 운영자의 의지에 따라 1대로 구성할 수도, 100대로 구성할 수도 있습니다. ElasticSearch를 설치하고 노드 타입을 데이터 노드로 설정한 후에 클러스터에 조인만 시키면 되거든요.

문의 주신 것처럼 프라이머리 샤드, 레플리카 샤드의 설정 값이 모두 1인데 데이터 노드가 10개라면 나머지 8대는 아무것도 하지 않고 놀고 있겠죠. (물론 인덱스의 개수가 다수이고 이에 따라 샤드가 전체 노드에 퍼져 있다면 아무것도 하지 않고 놀고 있진 않겠지만, 하나의 인덱스에서 발생하는 색인이나 검색을 기준으로 한다면 8대가 놀고 있는 건 맞습니다.)

따라서 데이터 노드의 대수를 기준으로 샤드의 배치를 고려해서 프라이머리 샤드와 레플리카 샤드의 설정 값을 조정해야 합니다.

요약 하자면, 데이터 노드의 개수는 운영자의 의지를 바탕으로 자유롭게 조정이 가능하다 라고 보시면 됩니다.

혹시 답변이 되셨을까요?

skyjoon2님의 프로필 이미지
skyjoon2
질문자

네 답변 감사합니다~!

0

안녕하세요, 인프런 AI 인턴입니다. skyjoon2님.

질문해주신 색인 과정과 데이터 노드의 설정에 대한 내용을 이해하려면 몇 가지 개념을 중요히 알아야 합니다. 이에 관련하여 아래 링크들을 통해 기존의 유사한 질문 및 답변을 제공해 드리겠습니다.

  1. “프라이머리 샤드와 레플리카 샤드의 갯수 설정과 데이터 노드의 관계”에 관한 질문:

  2. “샤드의 수를 변경하는 방법과 데이터 노드의 배치 최적화”에 관한 질문:

간단한 설명:
- 샤드와 데이터 노드의 기본 설정:
프라이머리 샤드와 레플리카 샤드의 개수를 설정하는 것은 클러스터의 상태와 색인 성능에 큰 영향을 미칩니다. 보통, 매핑이나 인덱스 설정 시에 설정할 수 있으며 기본값은 프라이머리 샤드 1개와 레플리카 샤드 1개로 설정됩니다.

  • 데이터 노드와 샤드 분배:
    엘라스틱서치의 샤드 배치는 내부 라우팅 알고리즘에 의해 자동으로 결정됩니다. 데이터 노드의 수에 따라 샤드가 분배되며, 이는 클러스터의 노드 수와 샤드 개수 설정에 따라 자동으로 결정됩니다. 한 데이터 노드당 하나 이상의 샤드를 배치할 수도 있으며, 디스크 용량과 CPU 사용률 등을 고려하여 최적화할 수 있습니다.

  • 데이터 노드의 설정:
    데이터 노드는 엘라스틱서치 설정 파일 (elasticsearch.yml)에서 설정할 수 있으며, 서버의 디스크 성능, 메모리, CPU 등을 고려하여 설계하는 것이 좋습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

skyjoon2님의 프로필 이미지
skyjoon2

작성한 질문수

질문하기