https://www.elastic.co/guide/en/elasticsearch/reference/7.16/modules-cluster.html
클러스터의 어느 노드에도 샤드가 몰려있지 않고 같은 수준의 샤드 개수를 유지하고 있을 때 '균형이 맞는다'고 표현함.
엘라스틱 서치는 균형을 맞추기 위해서 노드 간에 샤드를 이동시키는 '리밸런싱'이라는 작업을 자동으로 실행함.
리밸런싱은 클러스터의 샤드 할당 규칙에 따르기 때문에 완벽할 수 없음.
이런 경우, 가장 완벽한 상태를 만드려고 시도함.
데이터 티어를 사용하는 경우에는 할당 규칙을 필터링하여 각 샤드를 적절한 티어에 배치함.
리밸런싱은 각 노드의 무게를 계산한 후, 무거운 노드에서 가벼운 노드로 샤드를 이동시키며 발생함.
설정한 값 이하로 두 노드 간 차이를 좁힐 수 있는 이동이 더 이상 없을 때 균형을 잡았다고 함.
디스크 기반 샤드 할당은 필요 이상의 샤드 이동을 막고, 모든 노드가 충분한 디스크 공간을 갖도록 함.
목표는 어떤 노드도 높은 워터마크를 갖지 않게 하는 것임.
리밸런싱 중 일시적으로 임계치를 넘어갈 수는 있으나 다른 노드로 다시 샤드를 리밸런싱하면서 해당 문제를 해결함.
일시적으로 높은 워터마크 이상의 디스크를 사용하는 것은 정상이라고 볼 수 있음.
낮은 워터마크
- 샤드의 할당 작업 중단
- 기본 샤드는 새로 생성 가능
높은 워터마크
- 모든 샤드의 할당 작업 중단
allocator는 낮은 워터마크를 초과한 노드에 더이상 샤드가 할당될 수 없도록 하여 높은 워터마크 초과를 방지함.
모든 노드가 높은 워터마크를 초과하면 샤드 할당이 불가능해지므로 일부 노드가 항상 낮은 워터마크보다 디스크를 적게 쓰는지 확인 작업이 필요함.