Elsaticsearch Settings

Jiny's 개발 일기·2023년 10월 8일
1

Article

목록 보기
7/9

Intro

  • 모든 Setting은 Static이거나 Dynamic
  • Path, Cluster name, Node name, Network host, Discovery, jvm, Cluster backups등

우선 순위

  1. Transient: 1회성 설정
  2. Persistent: 영구 설정
  3. elasticsearch.yml
    • dynamic setting을 통해서 설정 관리
    • 노드 별 설정이 다르면 문제
  4. Default
    • 코드에 정의된 설정

주요 Setting

Circuit Breaker Settings

  • Parent circuit breaker: 전체 heap size에 대한 total limit
    • indices.breaker.total.use_real_memorys: 힙 전체 사용
    • indices.breaker.total.limit: 위==true => 95% else 70%
  • Feild data circuit breaker: Field data cache를 사용 시 과도한 heap memory 사용 방지 목적
    • inidices.breaker.fielddata.limit: Defulat(40%)
    • indices.breaker.fielddata.overhead: overhead를 통해 미리 차단 Default(1.03)
  • Request circuit breaker: Aggregation과 같은 요청에서 메모리 사용량 초과 방지
    • indices.breaker.request.limit: Default(60%)
    • indices.breaker.total.limit: Default(1)

Cluster-level shard allocation and routing settings

  • 노드에 대해 shard 할당 전략
  • recovery, replica, allocation, rebalancing등 노드 추가/삭제 때 발생
  • Master에서 클러스터를 운영/관리하기 위해 샤드를 어떻게 관리할지 결정
  • ex) 클러스터 재시작 시 shard recovery와 rebalancing 때문에 재시작이 안되고 죽거나 재시작 되는 현상 발생

settings

  • cluster.routing.allocation.exclude_ip: 장애 발생 노드 ip
    • 샤드 할당이 방지됨
  • cluster.max_shards_per_node: 기본 data 노드 당 1000개의 shard 보유 가능
    • 생성 시 지정된 설정이 우선하기 때문에 교차 설정 불가능

Cluster level shard allocation settings

settings

  • cluster.routing.allocation.enable:
    • 노드 재시작 시 local primary shard에 대한 recovery에 영향 X
    • 할당 되지 않은 replica shard에 대한 primary shard를 즉시 recovery
    • all, primaries, new_orimaries, none
  • cluster.routing.allocation.node_concurrent_incomming_recoveries
    • 동시에 recovery가 가능한 node 수
    • incomming과 outcomming이 있음
  • cluster.routing.allocation.node_initial_primaries_recoveries
    • 위 2개(incomming, outcomming)을 한번에 구성
      cluster.rouing.allocation.same_shard.host
    • 하나의 장비에 여러개의 elasticsearch 인스턴스를 구성하면 같은 shard 가 위치 할 수 있도록 설정

Shard rebalancing settings

  • 특정 노드에 인덱스의 샤드가 집중적으로 위치 하지 않도록 하여 균형을 이루게 함

settings

  • cluster.routing.rebalance.enable
    • rebalance를 적용할 대상을 지정
  • cluster.routing.allocation.allow_rebalance
    • rebalance를 허용할 대상을 지정
  • cluster.routing.allocation.cluster_concurrent_rebalance
    • 클러스터 기준으로 동시에 rebalancing할 shard의 수를 설정

Disk based shard allocation settings

  • 노드에 있는 disk의 용량에 따라 shard를 배치

  • cluster.routing.allocation.disk.threshold_enabled: disk allocation decider 사용 여부

  • cluster.routing.allocation.disk.watermark.low

    • disk usage: 85%
    • 85% 되면 더이상 shard 배치 X
    • replica shard에 대해서만 적용
  • cluster.routing.allocation.disk.watermark.high

    • disk usage: 90%
    • 초과 시 노드에 있는 shard 재배치 시도
  • cluster.routing.allocation.disk.watermark.flood_stage

    • disk usage가 설정을 넘는 노드가 있으면 읽기 전용으로 자동 전환되고 떨어지면 자동 해제
  • cluster.info.update.interval

    • 30초 간격으로 disk usage 점검

shard allocation awareness

  • shard 할당시 물리적 하드웨어 구성 적용
  • 같은 rack에 구성하거나 같은 zone에 구성 되도록 지정 가능

settings

  • node.attr.rack_id
    • 실행 시 환경변수로 설정
  • cluster.routings.allocation.awareness.attributes
    • elasticsearch.yml에 rack_id 설정
  • force: 노드가 사용 할 때 까지 replica shard의 할당이 되지 않도록 설정 가능
profile
옛날 블로그 주소 : https://jeongjin984.github.io/

0개의 댓글