기술_Elasticsearch

샤드 밸런싱 휴리스틱 스 설정

구일칠구 2022. 6. 22. 15:14

샤드 밸런싱 휴리스틱 스 설정

밸런싱은 샤드 할당을 기반으로 각 노드 가중치 계산 한 다음 노드간에 샤드를 이동하여 무거운 노드의 가중치를 줄이고 더 가벼운 노드의 가중치를 증가시키는 방식으로 작동합니다. 클러스터는 구성 가능한 임계 값 이상으로 노드의 가중치를 다른 노드의 가중치에 더 가깝게 만들 수있는 샤드 이동이 불가능할 때 균형을 이룹니다. 다음 설정을 사용하여 이러한 계산의 세부 정보를 제어 할 수 있습니다.

cluster.routing.allocation.balance.shard( Dynamic ) 노드 (float)에 할당 된 총 샤드 수에 대한 가중치 요소를 정의합니다. 기본값은 0.45f. 이 값을 높이면 클러스터의 모든 노드에서 샤드 수를 균등화하는 경향이 높아집니다.

cluster.routing.allocation.balance.index( Dynamic ) 특정 노드 (float)에 할당 된 인덱스 당 샤드 수에 대한 가중치 요소를 정의합니다. 기본값은 0.55f. 이를 높이면 클러스터의 모든 노드에서 인덱스 당 샤드 수를 동일하게 만드는 경향이 높아집니다.cluster.routing.allocation.balance.threshold( Dynamic ) 수행해야하는 작업의 최소 최적화 값 (음수 부동 소수점 아님). 기본값은 1.0f. 이 값을 높이면 클러스터가 샤드 균형 최적화에 덜 공격적이됩니다.

균형 알고리즘의 결과에 관계없이 강제 인식 또는 할당 필터링으로 인해 재조정이 허용되지 않을 수 있습니다.

디스크 기반 샤드 할당 설정

디스크 기반 샤드 할당자는 필요한 것보다 더 많은 샤드 이동을 수행하지 않고도 모든 노드에 충분한 디스크 공간이 있는지 확인합니다. 로우 워터 마크 하이 워터 마크로 알려진 임계 값 쌍을 기반으로 샤드를 할당 합니다. 주요 목표는 노드가 최고 워터 마크를 초과하지 않도록하거나 최소한 그러한 초과분은 일시적인 것임을 확인하는 것입니다. 노드가 상위 워터 마크를 초과하는 경우 Elasticsearch는 일부 샤드를 클러스터의 다른 노드로 이동하여이 문제를 해결합니다.

때때로 노드가 일시적으로 상위 워터 마크를 초과하는 것은 정상입니다.

할당자는 또한 하위 워터 마크를 초과하는 노드에 더 많은 샤드 할당을 금지하여 노드를 상위 워터 마크에서 제거하려고합니다. 중요한 것은 모든 노드가 로우 워터 마크를 초과 한 경우 새 샤드를 할당 할 수 없으며 Elasticsearch는 디스크 사용량을 하이 워터 마크 아래로 유지하기 위해 노드간에 샤드를 이동할 수 없습니다. 클러스터에 총 디스크 공간이 충분하고 로우 워터 마크 아래에 항상 일부 노드가 있는지 확인해야합니다.

디스크 기반 샤드 할당 자에 의해 트리거되는 샤드 이동은 할당 필터링 강제 인식 같은 다른 모든 샤드 할당 규칙도 충족해야합니다 . 이러한 규칙이 너무 엄격하면 노드의 디스크 사용량을 제어하는 ​​데 필요한 샤드 이동을 방지 할 수도 있습니다. 데이터 계층 사용 하는 경우 Elasticsearch는 적절한 계층 내에 샤드를 배치하도록 할당 필터링 규칙을 자동으로 구성합니다. 즉, 디스크 기반 샤드 할당자가 각 계층 내에서 독립적으로 작동합니다.

노드가 Elasticsearch가 샤드를 다른 곳으로 옮길 수있는 것보다 빠르게 디스크를 채우면 디스크가 완전히 채워질 위험이 있습니다. 이를 방지하기 위해 마지막 수단으로 디스크 사용량이 플러드 단계 워터 마크에 도달하면 Elasticsearch는 영향을받는 노드의 샤드가있는 인덱스에 대한 쓰기를 차단합니다. 또한 샤드를 클러스터의 다른 노드로 계속 이동합니다.

영향을받는 노드의 디스크 사용량이 최고 워터 마크 아래로 떨어지면 Elasticsearch는 자동으로 쓰기 블록을 제거합니다.