티스토리 뷰
Elasticsearch config 설정 방법 | 운영에 필요한 elasticsearch.yml 핵심 옵션 정리
PARK_90 2022. 8. 3. 15:24Elasticsearch를 설치한 뒤 실제로 막히는 구간은 실행 자체보다 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 메모리 설정은 어떻게 보는가?
- 운영에서 기억해야 할 추가 옵션은 무엇인가?
Elasticsearch config 설정은 단순히 서버를 켜기 위한 옵션 모음이 아닙니다.
- 어떤 이름의 클러스터로 묶일지
- 어떤 역할의 노드인지
- 어느 IP와 포트로 통신할지
- 메모리를 어떻게 쓸지
- 디스크와 캐시를 어떤 기준으로 관리할지
를 결정하는 운영 기준이라고 보면 됩니다.
즉 elasticsearch.yml은 Elasticsearch의 운영 성격을 정하는 핵심 파일이고, jvm.options는 JVM 메모리 사용 정책을 정하는 파일이라고 이해하면 됩니다.
Elasticsearch 설정은 설치 후 ‘돌아가게 만드는 일’이 아니라, 운영에서 ‘안정적으로 굴러가게 만드는 일’입니다.
기본 흐름은 이렇게 이해하면 됩니다.
설치
↓
JVM 메모리 설정
↓
elasticsearch.yml 설정
↓
OS / systemd 보정
↓
실행 및 상태 확인
예시 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관련 옵션은 운영 중 장애 예방과 성능 보호에 영향을 줍니다.
- Elasticsearch 설정은 단순 실행보다 운영 안정성을 같이 봐야 합니다.
- jvm.options와 elasticsearch.yml은 역할이 다르므로 구분해서 봐야 합니다.
- memory_lock, discovery, path 설정은 실제 운영에서 자주 문제를 만드는 구간입니다.
- 편의성 설정(CORS, 0.0.0.0)은 보안과 함께 판단해야 합니다.
- 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, 인증, 저장소 구조, 시스템 메모리 정책까지 함께 점검해야 합니다.
'IT > ElasticSearch' 카테고리의 다른 글
| ELK Stack이란? Elasticsearch·Logstash·Kibana 역할과 차이 쉽게 정리 (0) | 2022.09.08 |
|---|---|
| Elasticsearch 클러스터 구성 및 확인 방법 | 1대 서버 멀티 노드 예제로 쉽게 정리 (0) | 2022.08.03 |
| Elasticsearch 리눅스 OS 환경 설정 방법 | 운영 전 꼭 봐야 할 시스템 튜닝 정리 (0) | 2022.08.03 |
| Elasticsearch 클러스터란? 노드·샤드·레플리카 구조 한 번에 이해하기 (0) | 2022.08.03 |
