Elastic Search

Ch12. 안정적인 클러스터 운영 노하우 - 클러스터 관리 API

webmaster 2025. 10. 21. 10:24
728x90

런타임에 환경 설정 변경

elasticsearch.yml 파일을 편집하는 것이 가장 편한 방법이지만, 엘라스틱서치 인스턴스를 재설치 해야하는 문제가 있다.

_cluster API를 이용하면 런타임에 클러스터 환경설정이 가능하다.

PUT /_cluster/settings
{
  "persistent": {
    "indices.recovery.max_bytes_per_sec": "50mb"
  }
}

// 일시적인 설정
/*
PUT /_cluster/settings?flat_settings=true
{
  "transient": {
    "indices.recovery.max_bytes_per_sec": "50mb"
  }
}
*/
  • persistent 속성을 사용하면, 영구적으로 엘라스틱서치 설정값을 수정할 수 있다.
  • transient 속성을 주면 일시적으로 적용할 수도 있다.

_cluster_api를 사용하면, persistent, transient 속성 모두 볼 수 있으며, persistent 속성 같은 경우에는 elasticsearch로 설정한 내용보다 우선순가 높다. 따라서 클러스터 공통 설정 같은 경우는 _cluster API를 ElasticSearch 단일 설정 같은 경우에는 elasticsearch.yml 파일을 수정하자.

대기중인 클러스터 변경 명령 조회

GET /_cluster/pending_tasks
  • _cluster/pending_tasks API를 이용하면 아직 실행되지 않고 대기중인 클러스터 변경과 관련된 Task 목록을 실시간으로 모니터링 할 수 있다.
  • (인덱스 생성, 매핑 정보 수정, 샤드 재할당) 클러스터 수준에서 이뤄지는 테스크는 마스터 노드에서 실행되기 때문에 마스터 노드가 부하가 걸리거나 장애 발생 시 처리되지 못하고 큐에 쌓인다.
  • _cluster/pending_tasks AP를 이용하면 큐에 쌓인 테스크 목록을 조회할 수 있다.

사용률이 높은 스레드 조회

GET /_nodes/hot_threads
  • _nodes/hot_threads API를 이용하면 노드별로 사용률이 높은 스레드 정보를 확인할 수 있다.
    • CPU 사용률이 높은 스레드를 보여준다.

노드 간 샤드 이동

POST /_cluster/reroute
{
  "commands": [
    {
      "move": {
        "index": "movie",
        "shard": 0,
        "from_node": "node1",
        "to_node": "node2"
      }
    }
  ]
}
  • _cluster/reroute API를 이용하면 특정 노드의 샤드를 원하는 노드로 이동시킬 수 있다.
    • from_node는 이동할 노드 이름을, to_node는 이동될 노드의 이름을 적는다.
  • 샤드를 이동하는 작업은 물리적인 데이터가 네트워크를 통해 전송되기 때문에 많은 리소스를 소모한다.
    • 샤드의 크기가 클수록 시간도 많이 걸리고 데이터도 크기 때문에 신중하게 해야한다.

실행중인 테스크 조회

GET /_tasks?nodes=T0eKC161SL6QFI3KtBFMog
  • _tasks API를 이용하면 현재 클러스터에서 실행중인 모든 태스크 정보를 검색할 수 있다.
  • 특정 노드에서 진행중인 태스크 정보만 필터링하려면 nodes 파라미터를 이요하면 된다.

관리 API 호출 통계

GET /_nodes/usage
  • _nodes/usage API를 이용하면 관리용 API를 호출한 현황을 조회할 수 있다.
    • 모니터링 API, 상태 조회 API, Health 체크 API 등이 대상이다.
  • 각종 액션이 종류별로 카운트되어 집계되기 때문에 어떤 API가 얼마큼 호출되고 있는지 한눈에 확인 가능하다.
  • 클러스터 운영자는 이정보를 통해 과도한 관리 API 호출이 없는지 주기적 확인이 필요하다.
    • 과도한 관리 APi를 사용하면 클러스터에 부담이 되기 떄문

 

728x90