12.5.4. Elasticsearch 노드 디스크 High Watermark Reached

Elasticsearch는 높은 워터마크에 도달한 노드에서 shard를 재배치하려고 합니다.

문제 해결

  1. Elasticsearch가 배포된 노드를 식별합니다.

    oc -n openshift-logging get po -o wide
  2. 각 노드의 디스크 공간을 확인합니다.

    for pod in `oc -n openshift-logging get po -l component=elasticsearch -o jsonpath='{.items[*].metadata.name}'`; do echo $pod; oc -n openshift-logging exec -c elasticsearch $pod -- df -h /elasticsearch/persistent; done
  3. 클러스터가 재조정 중인지 확인합니다.

    oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cluster/health?pretty | grep relocating_shards

    명령 출력에 shard 재배치가 표시되면 High QCOWmark가 초과된 것입니다. High QCOWmark의 기본값은 90%입니다.

    shard는 워터마크 임계값 제한을 넘지 않은 디스크 사용량이 낮은 노드로 재배치됩니다.

  4. 특정 노드에 shard를 할당하려면 일부 공간을 확보합니다.
  5. 모든 노드의 디스크 공간을 늘리십시오.
  6. 디스크 공간을 늘릴 수 없는 경우 클러스터에 새 데이터 노드를 추가해 보십시오.
  7. 새 데이터 노드를 추가하는 데 문제가 있는 경우 전체 클러스터 중복 정책을 줄입니다.

    1. 현재 redundancyPolicy를 확인합니다.

      oc -n openshift-logging get es elasticsearch -o jsonpath='{.spec.redundancyPolicy}'
      참고

      ClusterLogging CR을 사용하는 경우 다음을 입력합니다.

      oc -n openshift-logging get cl -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'
    2. 클러스터 redundancyPolicySingleRedundancy 보다 큰 경우 SingleRedundancy로 설정하고 이러한 변경 사항을 저장합니다.
  8. 이전 단계에서 문제가 해결되지 않으면 이전 인덱스를 삭제합니다.

    1. Elasticsearch의 모든 인덱스의 상태를 확인합니다.

      oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- indices
    2. 삭제할 수 있는 이전 인덱스를 확인합니다.
    3. 인덱스를 삭제합니다.

      oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=<elasticsearch_index_name> -X DELETE

추가 리소스