해결된 질문
작성
·
329
0
안녕하세요 강의를 들으면서 궁금한 점이 생겨서 질문드립니다.
실제 운영중인 엘라스틱서치에서 샤드 최적화를 어떻게 이루어야할지 입니다.
샤드 최적화를 진행할 때 처음부터 완벽한 샤드 배치를 세울 수 없어서 성능를 확인 하며 샤드의 수를 늘리거나 데이터 노드를 스케일 아웃/업 하면서 최적의 수치를 찾아가라고 하셨습니다.
한번 인덱스를 생성할 때 설정된 샤드의 개수는 절대 변경이 불가능한데 그런 방법중 Reindex API를 사용하여 하는 방법으로 진행해야할까요 ?
아니면 또 다른 방법이 있을까요 ?
답변 2
0
0
어떤 데이터를 저장하느냐에 따라서 전략을 다르게 가져갈 수 있습니다.
예를 들어 일 단위로 수집하는 로그 데이터라고 가정한다면 오늘자 수집된 로그 데이터에서 성능 저하가 확인 되었을때 내일부터 수집하는 로그 데이터는 오늘과는 다른 샤드의 수로 생성되도록 인덱스 템플릿을 변경하거나 데이터 노드를 늘려서 대응 해볼 수 있습니다. 뭔가 변화를 주었으니 내일은 오늘보다 더 나은 성능을 보여줄 것이라고 기대할 수 있게 됩니다. 그리고 오늘자 데이터는 Reindex API를 이용해서 재색인을 하거나 그냥 둘 수 있을 겁니다. 실제로 제가 운영하는 클러스터의 경우 인덱스 템플릿만 변경해 두고 오늘자 데이터는 낮은 성능으로 그냥 두는 경우도 있었습니다. 로그 데이터 이기 때문에 약간의 불편은 감수 하되 운영 리소스를 최소화 하기 위한 선택 입니다.
다른 예로 검색 엔진을 위한 데이터라고 가정한다면 실 서비스에 넣기 전에 다양한 테스트를 통해서 인덱스의 샤드 수 혹은 데이터 노드의 변화를 통해 최적의 수치를 찾을 수 있습니다. 그럴 경우 데이터를 새로 색인 하거나 기존에 색인되어 있는 데이터를 Reindex API를 이용해서 재색인 할 수 있습니다. 편한 방법을 사용하면 됩니다. 이 경우는 테스트 후에 실제 서비스에 들어갔을 때도 Reindex API를 이용해서 재색인 하거나 완전히 문서를 새로 색인 하거나 편한 방법을 사용하면 됩니다. 다만 검색 엔진을 위한 데이터의 변경 작업을 다운타임 없이 하는 것은 조금 다른 이야기라서 다른 전략이 필요 합니다.
그래서 저장하는 데이터의 성격에 따라 Reindex API를 이용해서 재색인 할 수도, 그냥 성능이 낮은 채로 두고 새로 저장되는 데이터들의 성능만 향상 시킬 수도 있습니다.
넵. 혹시 더 궁금하신 것들 있으시면 언제든 물어봐 주세요~