샤드 및 레플리카 개수 세팅

안녕하세요.
엘라스틱서치로 클러스터를 구성했는데요.
샤드와 레플리카 개수를 몇 개로 지정해야 할 지 잘 모르겠습니다.
몇 개가 적당한지 개수와 이유를 알 수 있을까요?

현재 클러스터 환경은 서버는 2대이고 노드는 4개(마스터노드 1개, 데이터노드 3개)이며, 각 노드의 용량은 8G 입니다.

이론적으로는 샤드 1개가 서버 코어 1개에 대응되도록 하는것이 최적입니다. 예를 들어 4코어 머신 3개가 연결되어있다고 치면 샤드, 코어는 총 12개로, 샤드와 레플리카 갯수를 각각 6개로 설정하면 총 12개가 CPU 코어 당 하나씩 돌아가겠지요.

한계치도 있는데, 정확한건 아니지만 제 경험상으로는 샤드 1개당 25GB가 넘게 되면 느려지거나 색인이 되지 않는 것을 경험했습니다. 이건 머신 성능에 따라 다른거라 정확히 딱 떨어지는 값이 어떤것이다 라고 말씀드리긴 어렵겠네요.

1 Like

'각 노드의 용량은 8G입니다' -> Heap size가 8GB라는 것인가요? 혹은 Disk size가 80GB인데 오타인지요?

Shard 개수

Shard 개수를 잘 정하는 것은 참 어려운 문제같습니다. Index를 어떻게 만들지, Data Size는 얼마나 될지라도 대략 알아야 조언이 될 것 같습니다. 명확한 답변을 못드려서 죄송하고요. 참고로 제가 사용하는 곳에서는 Shard Size가 10GB 정도가 되도록 설정하고 있습니다. Use case마다 다를 수 있으므로 참고만 하시고요.

Replica 개수

Shard 개수는 성능에 대한 고려 사항이라면 Replica 개수는 HA(High Availability)에 관련된 주제인데요. Replica를 1개로 설정하면 Node 1대가 죽어도 서비스되는데 문제가 없습니다. 2대가 동시에 죽어도 HA를 보장하도록 하시려면 2로 설정하시면 되고요. 대신 Disk 용량도 그만큼 더 많이 사용하겠죠? 이 정도만 가이드드리면 나머지는 Yungyoung님의 선택에 달려있습니다.

서버 2대가 동시에 죽는 경우는 없어서 대부분 1로 사용합니다.

(ES에서는 Replica Shard도 질의에 포함되기 때문에 어떻게 보면 성능과도 관련이 있긴 한데 (질의 병렬성 증가), 사용 메모리도 복제 개수만큼 증가하게 되서 개인적으론 성능 관점에서 좋은 것이라 이야기하기엔 어렵지 않나... 생각이 들기도 합니다. 그래서 HA 관점이라고 적었습니다.)

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.