IT/ElasticSearch

Elasticsearch config 설정 방법 | 운영에 필요한 elasticsearch.yml 핵심 옵션 정리

PARK_90 2022. 8. 3. 15:24
300x250

Elasticsearch를 설치한 뒤 실제로 막히는 구간은 실행 자체보다 config를 어떻게 잡아야 하는지입니다. elasticsearch.yml, jvm.options, 메모리 잠금, discovery 설정, data/log 경로처럼 운영에 바로 영향을 주는 옵션이 많기 때문입니다.

특히 초보자는 cluster.name, node.name, network.host 같은 기본 설정은 이해해도, bootstrap.memory_lock, discovery.seed_hosts, 디스크 워터마크, fielddata 관련 옵션처럼 운영성에 연결되는 항목은 의미를 놓치기 쉽습니다.

이번 글은 단순 설치 가이드가 아니라, 운영에서 실제로 자주 만지는 Elasticsearch 설정 항목을 한 번에 정리하는 글로 구성합니다. 즉 “어떤 파일을 수정하는지”, “기본 설정은 무엇인지”, “운영에서 기억해둘 옵션은 무엇인지”를 중심으로 정리합니다.

  • Elasticsearch 설정은 어떤 파일에서 하는가?
  • elasticsearch.yml에 어떤 항목을 넣어야 하는가?
  • JVM 메모리 설정은 어떻게 보는가?
  • 운영에서 기억해야 할 추가 옵션은 무엇인가?
핵심 요약
jvm.options는 Elasticsearch의 JVM 메모리 사용량을 조절하는 파일입니다.
elasticsearch.yml은 클러스터, 노드, 네트워크, discovery 같은 핵심 운영 설정 파일입니다.
memory lock, disk watermark, fielddata 설정은 운영 안정성과 성능에 직접 연결됩니다.
즉 Elasticsearch 설정은 ‘실행만 되게 하는 수준’보다 운영 안정성을 같이 보는 시각이 중요합니다.
쉬운 정의
Elasticsearch config는 클러스터가 어떻게 동작할지 정하는 운영 설정입니다.

Elasticsearch config 설정은 단순히 서버를 켜기 위한 옵션 모음이 아닙니다.

  • 어떤 이름의 클러스터로 묶일지
  • 어떤 역할의 노드인지
  • 어느 IP와 포트로 통신할지
  • 메모리를 어떻게 쓸지
  • 디스크와 캐시를 어떤 기준으로 관리할지

를 결정하는 운영 기준이라고 보면 됩니다.

elasticsearch.yml은 Elasticsearch의 운영 성격을 정하는 핵심 파일이고, jvm.options는 JVM 메모리 사용 정책을 정하는 파일이라고 이해하면 됩니다.

Elasticsearch 설정은 설치 후 ‘돌아가게 만드는 일’이 아니라, 운영에서 ‘안정적으로 굴러가게 만드는 일’입니다.
728x90
비교/구조
먼저 어떤 파일을 왜 수정하는지부터 정리하면 이해가 쉬워집니다.
파일/영역 주 역할 대표 항목
jvm.options JVM 메모리 설정 Xms, Xmx
elasticsearch.yml 클러스터/노드/네트워크/디스커버리 설정 cluster.name, node.name, network.host, discovery.seed_hosts 등
OS / systemd 설정 메모리 잠금, 리소스 제한 보정 memlock, systemd LimitMEMLOCK

기본 흐름은 이렇게 이해하면 됩니다.

설치
 ↓
JVM 메모리 설정
 ↓
elasticsearch.yml 설정
 ↓
OS / systemd 보정
 ↓
실행 및 상태 확인
한 줄 포인트
Elasticsearch config는 JVM 메모리 → elasticsearch.yml → OS 보정 이 세 묶음으로 보면 정리가 잘 됩니다.
예시
기본 설정과 운영용 추가 옵션을 나눠서 보면 더 실용적입니다.

예시 1. JVM 메모리 설정

JVM 사용 메모리는 jvm.options에서 조정합니다.

vi /etc/elasticsearch/jvm.options

예를 들어,

-Xms8g
-Xmx8g

처럼 설정할 수 있습니다.

여기서 중요한 건 최소 힙(Xms)과 최대 힙(Xmx)을 동일하게 맞추는 것입니다. 그리고 운영 서버 메모리 상황에 맞춰 조절해야 합니다.

예시 2. elasticsearch.yml 기본 설정

핵심 설정은 아래처럼 볼 수 있습니다.

cluster.name: es-cluster
node.name: node1
node.master: true
node.data: true
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
http.cors.allow-origin: "*"
http.cors.enabled: true
transport.tcp.port: 9300
transport.tcp.compress: true
cluster.initial_master_nodes: ["node1", "node2", "node3"]
discovery.seed_hosts: ["ip1:9300", "ip2:9300", "ip3:9300"]
action.disable_delete_all_indices: true

이 설정들을 아주 간단히 풀면,

  • cluster.name: 어떤 클러스터에 묶일지
  • node.name: 이 노드의 이름이 무엇인지
  • node.master, node.data: 어떤 역할을 가질지
  • bootstrap.memory_lock: swap 방지용 메모리 잠금
  • network.host: 외부 바인딩 주소
  • http.port: REST API 포트
  • transport.tcp.port: 노드 간 통신 포트
  • cluster.initial_master_nodes: 초기 마스터 후보
  • discovery.seed_hosts: 서로 찾을 seed 노드 정보
  • action.disable_delete_all_indices: _all 삭제 방지

를 의미합니다.

예시 3. 운영에서 기억할 추가 옵션

기본 구성 외에도 실제 운영에서는 아래 같은 설정이 자주 언급됩니다.

node.max_local_storage.nodes: 1
path.data: /mnt/elasticsearch/data
path.logs: /mnt/elasticsearch/log
indices.fielddata.cache.size: 70%
indices.breaker.fielddata.limit: 75%
cluster.routing.allocation.disk.watermark.low: 85%
cluster.routing.allocation.disk.watermark.high: 90%
cluster.routing.allocation.balance.index: 0.8
cluster.routing.allocation.balance.shard: 0.2
index.translog.flush_threshold_size: 1GB

이 설정들은 설치 직후 무조건 다 넣어야 하는 것은 아니지만, 운영 안정성, 메모리, 디스크, 샤드 밸런스, flush 정책을 다룰 때 자주 등장합니다.

실무 포인트
이번 글은 운영 메모 성격이 강하니, 자주 보는 항목을 짧게 정리합니다.
  • bootstrap.memory_lock: true를 쓰려면 OS 설정도 같이 바꿔야 실제로 동작합니다.
  • network.host: 0.0.0.0은 편하지만, 보안 관점에서는 노출 범위를 같이 점검해야 합니다.
  • http.cors.allow-origin: "*"는 개발 편의에는 좋지만 운영에선 신중해야 합니다.
  • discovery.seed_hosts, cluster.initial_master_nodes는 클러스터 구성에 매우 중요합니다.
  • path.data, path.logs는 운영 저장소 설계와 직결됩니다.
  • disk watermark, fielddata, breaker 관련 옵션은 운영 중 장애 예방과 성능 보호에 영향을 줍니다.
1. memory_lock는 OS 설정까지 함께 봐야 한다
`bootstrap.memory_lock: true`만 넣는다고 끝나지 않습니다. limits.conf, systemd, sysconfig까지 함께 맞춰야 실제로 swap 방지 효과를 볼 수 있습니다.
2. discovery와 master 설정은 클러스터 합류 핵심이다
노드가 제대로 묶이지 않는 문제는 discovery 설정이나 초기 마스터 노드 설정에서 자주 발생합니다. 운영에서 가장 먼저 점검해야 할 영역입니다.
3. 캐시·디스크·flush 옵션은 성능과 안정성에 직접 연결된다
fielddata, breaker, disk watermark, translog flush는 장애 예방과 운영 효율에 영향을 주는 항목이라, 대용량 운영일수록 의미가 커집니다.

초보자가 꼭 체크할 포인트
  • Elasticsearch 설정은 단순 실행보다 운영 안정성을 같이 봐야 합니다.
  • jvm.options와 elasticsearch.yml은 역할이 다르므로 구분해서 봐야 합니다.
  • memory_lock, discovery, path 설정은 실제 운영에서 자주 문제를 만드는 구간입니다.
  • 편의성 설정(CORS, 0.0.0.0)은 보안과 함께 판단해야 합니다.
FAQ
  • Q. JVM 메모리는 무조건 크게 주면 좋은가요?
    → 아닙니다. 서버 메모리 상황과 운영 구조를 같이 봐야 하며, Xms와 Xmx를 동일하게 맞추는 기본 원칙이 중요합니다.
  • Q. `bootstrap.memory_lock: true`만 넣으면 끝인가요?
    → 아닙니다. OS와 systemd 설정까지 같이 변경해야 실제로 동작합니다.
  • Q. `discovery.seed_hosts`와 `cluster.initial_master_nodes`는 왜 중요한가요?
    → 노드들이 서로를 찾고, 초기 클러스터를 정상 구성하는 데 핵심 역할을 하기 때문입니다.
결론
설정은 설치 이후의 ‘운영 품질’을 결정합니다.

Elasticsearch config 설정은 단순히 문법 몇 줄을 외우는 일이 아닙니다.

  • JVM 메모리를 어떻게 잡을지
  • 클러스터와 노드 역할을 어떻게 구분할지
  • 네트워크와 discovery를 어떻게 연결할지
  • 메모리 잠금, 디스크, 캐시 정책을 어떻게 볼지

같은 운영 판단이 함께 들어갑니다.

즉 Elasticsearch 설정은 “실행 여부”보다 안정성, 확장성, 운영성을 결정하는 기준이라고 보는 편이 맞습니다.

Elasticsearch config는 서버를 켜기 위한 옵션 모음이 아니라, 클러스터를 안정적으로 운영하기 위한 기준값 모음입니다.

※ 이 글은 Elasticsearch 설정 항목을 쉽게 정리한 운영 입문 가이드입니다. 실제 운영 환경에서는 버전별 설정 차이, 보안 설정, TLS, 인증, 저장소 구조, 시스템 메모리 정책까지 함께 점검해야 합니다.

728x90