- Heap 메모리 32GB 이하 설정
- heap이 클수록 수집하는데 시간이 오래 걸리고, 클러스터의 불안함을 초래할 수 있음.
- Cluster.routing.allocation.same_shard.host 설정할것
- primary shard와 replica를 동일한 서버에 사용하게 하지 않음.
- https://www.elastic.co/guide/en/elasticsearch/reference/current/shards-allocation.html
-
Master node
- 클러스터의 정보를 가지고 있고, 클러스트 상태를 관리
- 데이터를 가지고 있지 않음.
-
Client nodes
- 클라이언트 노드는 데이터가 어디있는지 알고 있고, 샤드에 직접적으로 쿼리할 수 있고, 노드들로 부터 통합된 결과를 받을 수 있음.
- 방화벽으로부터 데이터 노드 보호(http), 클라이언트 노드는 클라이언트 노드끼리 통신 가능.
-
Data nodes
- 데이터만 저장함.
-
마스터 노드는 3개정도 설정하는게 좋음
- 1개는 실제 마스터 노드 역할, 나머지 노드들(eligible node)은 master node의 장애를 대비하기 위한 용도
-
dedicated master node를 위해서는 작은 heap 사이즈를 설정하도록 한다(1GB 정도면 충분한듯) : garbage collection 중단을 하지 않도록.
- master node에만 해당사항 : 데이터를 저장하지 않기 때문
- 하드웨어가 다룰 수 있도록 샤드는 작은 것이 좋음. 기술적으로 샤드에 갯수에 대한 한계는 없지만, 하드웨어 관점에서 샤드의 크기에 대한 제한은 있음.
- 샤드의 크기가 커지면, 전체 엘라스틱서치 인덱스 전체를 다시 만들어 더 많은 샤드에 분배하는 것도 방법이다. (scale out : 시간 기반, 유저 기반 … 등등등)
- 너무 많은 샤드를 다루면, 데이터를 분배하는 장점이 있지만, 샤드를 관리하는 비용이 발생할 수 있다.