GW LABS

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

Book-Review/Programing

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

GeonWoo Kim 2022. 8. 25. 12:09

5.1 elasticsearch.yml 설정파일

  • ElasticSearch를 구성하기 위해 기본이 되는 환경 설정 파일
    • docker image에서는 환경설정값을 주입해서 사용하는 것도 가능

 

5.1.1 Cluster 영역

 

5.1.2 Node 영역

  • node.name: 노드 이름
    • 변경하려면 노드를 재시작 해야한다.
  • node.attr.rack: r1
    • 사용자 정의된 rack 값을 통해 HA 구성과 같이 샤드를 분배할 수 있는 기능

 

5.1.3 Path 영역

  • path.data: /var/lib/elasticsearch
    • 노드가 가지고 있을 문서들을 저장할 경로 설정 (세그먼트 파일위치)
    • 여러 개의 경로를 설정할 수 있음
  • path.logs: /var/log/elasticsearch
    • 로그 저장 경로

 

5.1.4 Memory 영역

  • bootstrap.memory_lock: true
    • 시스템의 스왑 메모리 여영ㄱ을 사용하지 않도록 하는 설정
    • 스왑 영역을 사용하지 않으면 성능 보장이 가능하지만, 메모리 부족시 OOM
    • 이 설정을 사용하기 위해서는 /etc/security/limits.conf도 수정해야함
      • elasticsearch(계정이름) soft memlock unlimited 설정이 필요
    • systemd로 프로세스 시작을 했다면 /etc/systemd/system/elasticsearch.service.d를 수정해야 함
      • LmitMEMLOCK=infinity

 

5.1.5 Network 영역

  • network.host: 192.168.0.1
    • ElasticSearch가 사용하게 될 IP 주소설정
  • http.port: 9200
    • 포트 설정
  • network.bind_host
    • 클라이언트 요청 처리 IP
    • 0.0.0.0으로 설정하여 요청을 받을 수 있게 한다.
  • network.publish_host
    • 클러스터 내부의 노드 간 통신 IP
    • 노드 자산의 IP로 설정해야 한다.

 

5.1.6 Discovery 영역

  • 노드 간의 클러스터링을 위해 필요한 설정
  • discovery.zen.ping.unicast.hosts: [”host1”, “host2”]
    • 클러스터링을 위한 다른 노드들의 정보
  • discovery.zen.minimum_master_nodes:
    • 클러스터를 구축하기 위해 필요한 최소한의 마스터 노드 대수를 설정
    • Split brain 현상을 막을 수 있다.
      • 노드 간 통신 장애로 인해 서로 다른 마스터 노드를 가진 두 개의 클러스터가 생성되는 현상
    • 공식: total number of master-eligible nodes / 2 + 1

 

5.1.7 Gateway 영역

  • gateway.recover_after_nodes: 3
    • 클러스터 내의 노드를 전부 재시작 할 때 최소 몇 개의 노드가 정상적인 상태일 대 복구를 시작할 것인가 설정

 

5.1.8 Various 영역

  • action.destructive_requires_name: ture
    • 클러스터의 인덱스를 _all이나 wildcard 표현식으로 삭제할 수 없도록 막는 설정

 

5.1.9 노드의 역할 정의

  • node.master
    • 마스터 노드로 사용하려면 data,ingest 등은 false로 해둔다.
  • node.data
  • node.ingest
  • 코디네이트 노드의 경우 master, data, ingest를 모두 false로 한다.
    • 클라이언트 노드라고도 함

 

5.2 jvm.options 설정 파일

  • Xms, Xmx
    • JVM에서 사용하게 될 힙 메모리의 크기 설정
    • 두 값을 동일하게 설정하여 메모리 추가할당이 없게 하는게 성능에 더 좋다
    • 가능한 32GB를 넘지 않도록 설정
  • GC configuration
    • -XX:+UseConcMarkSweepGC
      • ElasticSearch에서 기본적으로 사용하는 GC 방식
    • -XX:CMSInitiatingOccupancyFraction=75
      • Old GC를 수행하기 위한 힙 메모리 사용량 (75%)
    • -XX:+UseCMSInitiatingOccupancyOnly
      • GC 통계 데이터를 근거로 하지 않고 위의 설정만으로만 GC 수행
  • G1GC Configuration
    • G1GC의 경우 사용사례가 많지 않은 것 같음
Comments