GW LABS

기초부터 다지는 ElasticSearch 운영 노하우 (5) - 클러스터 운영하기 본문

Book-Review/Programing

기초부터 다지는 ElasticSearch 운영 노하우 (5) - 클러스터 운영하기

GeonWoo Kim 2022. 8. 27. 08:27

6.1 버전 업그레이드

  • Full Cluster Restart: 모든 노드를 동시에 재시작하는 방식이며, 다운 타임이 발생하지만 빠르게 버전을 업그레이드 할 수 있다.
  • Rolling Restart: 노드를 순차적으로 한 대씩 재시작하는 방식이며, 다운 타임은 없지만 노드 개수에 따라서 업그레이드에 소요되는 시간이 길어질 수 있다.
  • 수동외의 다른방법으로 업그레이드 할 수 있는 방법이 있는지 리서치 필요

 

6.2 샤드 배치 방식 변경

  • 장애로 인해 unassigned 샤드들에 대한 재할당이 필요한데 지속적으로 실패한다면 강제 배치가 필요
  • reroute: 샤드 하나하나를 특정 노드에 배치할 때 사용
  • allocation: 클러스터 전체에 해당하는 샤드 배치 방식을 변경할 때 사용
    • all: 프라이머리 샤드와 레플리카 샤드 전부 배치 허용
    • primaries: 프라이머리 샤드만 배치 허용
    • new_primaries: 새롭게 생성되는 인덱스에 한해 프라이머리 샤드만 배치 허용
    • none: 모든 샤드의 배치 작업을 비활성화
    • null: 클러스터 설정에서 해당 설정 삭제, default 값인 all로 설정됨
  • rebalance: 클러스터 전체에 해당하는 샤드 재분배 방식을 변경할 때 사용
  • filtering: 특정 조건에 해당하는 샤드들을 특정 노드에 배치할 때 사용

 

6.3 클러스터와 인덱스의 설정 변경

  • Cluster 설정종류
    • transient: 운영 중에만 적용되는 설정(재시작한다면 초기화)
      • 샤드 할당/비할당 같은 자주 변경되는 옵션들을 설정
    • persistent: 영구히 적용
      • 노드 디스크 사용률 등의 임계치 설정 옵션들을 설정
    • transient > persistent > elasticsearch.yml
  • unassigned 샤드 발생원인 조회
    • /_cluster/allocation/explain

 

6.4 인덱스 API

  • open/close: 인덱스를 open/close
  • aliases: 인덱스에 별칭을 부여하는 API
  • rollover: 인덱스를 새로운 인덱스로 분기시키는 API
  • refresh: 문서를 세그먼트로 내리는 주기를 설정하는 API
  • forcemerge: 샤드 내의 세그먼트를 병합시키는 API
  • reindex: 인덱스를 복제하는 API

 

6.4.1 open/close API

  • open: 색인/검색이 가능한 상태
  • close: 색인/검색이 불가능한 상태

 

6.4.2 aliases API

  • 인덱스에 별칭을 부여
  • 여러 개의 인덱스에 걸쳐 alias를 설정하면 색인이 되지 않는다.
  • 여러 개의 인덱스에 걸쳐 alias를 생성하고 close API로 인덱스가 하나라도 생성되었다면 alias를 통한 검색 요청이 불가능하다.

 

6.4.3 rollover API

  • 특정 조건을 설정하여 해당 조건을 만족하면 인덱스를 새로 만들고, 새롭게 생성된 인덱스로 요청받는 API
  • 특정 인덱스가 추가되어야 한다면 aliases API를 통해 기존과 새로 생성된 인덱스를 묶어 색인/검색한다.

 

6.4.4 refresh API

  • 메모리 버퍼 캐시에 있는 문서들을 바로 세그먼트로 저장해주는 API
  • refresh_interval 주기를 기다리지 않는다.

 

6.4.5 forcemerge API

  • 세그먼트를 강제로 병합하는 API, 인덱스에 속한 모든 샤드를 대상으로 병합을 수행한다.
  • 과거 로그 데이터와 같은 인덱스에 적용하는 것이 좋음
  • 세그먼트 수가 줄어 검색 성능이 향상되고 디스크 용량도 절약할 수 있음

 

6.4.6 reindex API

  • 인덱스의 analyzer를 변경할 때, 클러스터간 데이터 마이그레이션 시 주로 사용한다.
    • 클러스터 간 데이터 마이그레이션 시에는 elasticsearch.yml whitelist 설정이 필요
    • 데이터 마이그레이션 타겟 클러스터에 whitelist 설정

 

6.5 템플릿 활용하기

  • 인덱스가 생성될 때마다 특정 패턴의 이름을 가진 인덱스에 설정이 자동 반영되도록 하는 기능
  • settings: 인덱스의 설정값
  • mappings: 인덱스의 매핑 정보
  • aliases: 인덱스의 alias 정보
Comments