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

김민석님의 프로필 이미지

작성한 질문수

ElasticSearch Essential

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

6강 10분 색인 과정에 대해 질문 있습니다.

해결된 질문

작성

·

203

0

10분 00초에 2개의 가정->선택이 존재하는 것으로 파악했어요.

  1. 인덱스 별 (각)샤드의 최대 크기를 10GB로 설정 -> 인덱스 별 프라이머리 샤드의 개수는 10개(이 말이 결국 데이터 노드 개수 10개와 이어지겠죠)

  2. 데이터 노드 개수를 10개로 설정 -> 데이터 노드당 가져야할 디스크의 크기 600GB

여기서 2번은 명확히 이해가 됩니다. 필요한 저장 공간이 6,000GB이므로 이를 데이터 노드 개수(10)만큼 나눈 600GB가 데이터 노드 당 가져야할 디스크 크기겠죠.

다만 1번이 이해 안갑니다. 하나의 인덱스 내 개별 샤드의 최대 크기가 10GB로 설정하는 것과 인덱스 별 프라이머리 샤드의 개수가 10개인 것이 무슨 연관관계가 있는 것이죠?(논리 전개가 잘 이해가 안됩니당)

  • 관점1: 인덱스 별 샤드의 최대 크기가 20GB가 돼야 각 노드의 크기(600GB)를 채울 수 있지 않나요? 매 노드가 프라이머리 샤드1개와 레플리카 샤드를 2개씩 가지니까요.

  • 관점2: 인덱스 별 (각)샤드의 최대 크기가 10GB라면 각 노드별로 샤드가 3개씩 존재할 것(프1 레2)이므로 각 노드의 최소 스펙은 30GB겠죠. 필요한 저장 공간이 6,000GB이므로 노드는 20개를 생성할 수 있으므로 인덱스 별 프라이머리 샤드의 개수는 20개가 되야하지 않나요?

긴 질문 읽어주셔서 감사합니다.

답변 2

2

김민석님의 프로필 이미지
김민석
질문자

이해했습니다 ㅎㅎ 인덱스를 하루 단위로 생성한다고 생각을 못했네요! 감사합니다!

0

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

하루에 100GB의 로그가 쌓이기 때문에 인덱스 별 샤드의 최대 크기를 10GB로 가정했을 때 10개의 프라이머리 샤드가 필요하게 됩니다. 10GB * 10개 = 100GB 이기 때문 입니다.

그리고 그 데이터를 30일간 저장하게 됩니다. 즉, 인덱스가 최대 30대까지 만들어 진다고 생각하시면 됩니다. 그래서 데일리로 쌓이는 로그를 노드 별로 나누는 관점과 30일간의 모든 인덱스가 노드 상에 저장되어야 하는 관점, 두 가지 관점으로 이해 하셔야 합니다.

인덱스 하나가 6,000GB가 아니라, 하루에 100GB 씩 로그가 쌓이는 인덱스가 30개가 생긴다고 이해하셔야 합니다. 만약 지금이 1월 30일이라고 한다면 nginx-access-log-2024.01.01 ~ nginx-access-log-2024.01.30 이렇게 30개의 인덱스가 저장된다고 이해 하시면 됩니다.

혹시 답변이 되었을까요? 추가 질문 있으시면 언제든 말씀하세요.