Elasticsearch 클러스터를 운영하면서 개발자나 본인이 index를 생성하려고 할 때 샤드 숫자에 대해서 간단하게 얘기해 보겠습니다.
먼저 샤드에 대해서 모르시는 분이 계시다면 아래의 페이지에서 클러스터링 부분에서 샤드를 먼저 보고 와주세요.
https://anygyuuuu.tistory.com/2
개발 소스나 본인이 직접 키바나 또는 서버에서 인덱스 생성 명령어를 날렸을 때 해당 이슈가 생기는 경우가 종종 있습니다. 결론적으로 해당 이슈는 Elasticsearch 클러스터 세팅 중 shard 숫자가 최대까지 찼을 때 해당 이슈가 발생하여 더이상 인덱스를 만들지 못한다는 뜻입니다.
그렇다면 샤드는 몇개가 적당할까요? 샤드의 최대 개수는 노드(서버) 한대당 1000개가 최대입니다. 또한, shard 하나당 적절한 데이터의 크기는 20gb의 데이터로 구성하는 것이 효율적입니다. 그래서 저런 이슈가 발생했을 때는 키바나 또는 서버에 아래와 같은 명령어를 날려줌으로써 해결할 수 있습니다.
다만 정말로 데이터가 많아서 해당 이슈가 발생하는 부분은 상관 없지만, 불필요하게 샤드의 개수를 차지하는 경우가 있을 수 있습니다. 그러한 경우가 발생하기전 reindex 등 다양한 방법을 통해서 미리 문제를 해결하는 것도 방법입니다.
#서버
curl -XPUT "http://ip:9200/_cluster/settings" -H 'Content-Type: application/json' -d'{ "transient": { "cluster.max_shards_per_node": 2000 }}'
#키바나
PUT /_cluster/settings
{
"transient": {
"cluster.max_shards_per_node": 2000
}
}