elasticsearch.yml 파일 구조
elasticsearch.yml 파일은 YAML (YAML Ain't Markup Language) 형식으로 작성되어 있으며, 키-값 쌍으로 구성되어 있습니다. 주석은 # 기호를 사용하여 추가할 수 있습니다. 여러 설정을 구분하기 위해 빈 줄을 사용할 수 있습니다.
# 예시
cluster.name: my_cluster
node.name: my_node
1. 클러스터 및 노드 관련 설정
cluster.name: 클러스터의 이름을 설정합니다. 노드가 속한 클러스터를 식별하는 데 사용됩니다.
node.name: 노드의 이름을 설정합니다. 클러스터 내에서 노드를 식별하는 데 사용됩니다.
node.master: 노드가 마스터 후보로 동작할지 여부를 설정합니다. true 또는 false 값을 가집니다.
node.data: 노드가 데이터를 저장하고 검색 작업을 수행할지 여부를 설정합니다. true 또는 false 값을 가집니다.
node.ingest: 노드가 Ingest 파이프라인을 처리할지 여부를 설정합니다. true 또는 false 값을 가집니다.
2. 네트워크 및 통신 관련 설정
network.host: 노드의 네트워크 인터페이스를 설정합니다. IP 주소, 호스트 이름 또는 특수 값 (예: _local_, _site_, _global_)을 사용할 수 있습니다.
http.port: HTTP API의 포트를 설정합니다.
transport.tcp.port: 노드 간 통신을 위한 TCP 포트를 설정합니다.
★ network.host의 _local_ 은 보통 단일 노드로 테스트할 때 사용됨
★ network.host의 _site_는 통신해야 할 node들이 사설망 구간에 있을 때 사용됨
★ network.host의 _global_은 통신해야할 node가 지리적으로 떨어져 있을 경우 사용됨
★ network.host에 host 이름 또는 ip를 사용할 경우 입력한 값으로 다른 node들과 통신하게 됨
★ 클라이언트는 http.port 로 요청을 보내고, 이 포트로 수신한 서버가 코디네이팅 노드의 역할을 수행함.
3. 디스커버리 및 클러스터 형성 관련 설정
discovery.seed_hosts: 클러스터 형성에 참여하는 초기 노드 목록을 설정합니다. IP 주소나 호스트 이름을 사용할 수 있습니다.
cluster.initial_master_nodes: 초기 마스터 노드 목록을 설정합니다. 노드 이름을 사용하여 지정합니다.
★ discovery.seed_hosts 는 최초 클러스터 구성 시 node의 ip만 작성하면 됨. (이후 확장되는 ip들은 작성할 필요 없음)
★ cluster.initial_master_nodes 설정에는 master 후보군으로 사용할 node의 hostname을 모두 작성해야 함.
★★ Elasticsearch 7.0 이상에서는 cluster.initial_master_nodes 설정을 하지 않더라도 node.master가 true 인 항목 중에 master를 선출하도록 변경됨 (그래도 명시적으로 작성해 주는 것이 좋을 듯)
★ cluster.initial_master_nodes 설정은 클러스터가 최초로 형성되거나 마스터 노드를 잃어버린 상태에서 새로운 마스터 노드를 선정하는 과정에서 사용됨.
4. 로깅 관련 설정
path.logs: 로그 파일이 저장될 디렉토리를 지정합니다. 로그 파일은 Elasticsearch의 작동 정보, 오류 메시지 등을 포함합니다.
5. 데이터 저장 관련 설정
path.data: 데이터가 저장될 디렉토리를 지정합니다. 이 디렉토리에는 인덱스, 샤드, 문서 데이터 등이 저장됩니다.
6. 스레드 풀 관련 설정
thread_pool.bulk.size: 벌크 작업을 처리하기 위한 스레드 풀 크기를 설정합니다.
thread_pool.bulk.queue_size: 벌크 작업 대기열의 최대 크기를 설정합니다.
thread_pool.search.size: 검색 작업을 처리하기 위한 스레드 풀 크기를 설정합니다.
thread_pool.search.queue_size: 검색 작업 대기열의 최대 크기를 설정합니다.
★ thread_pool.bulk.size, thread_pool.bulk.queue_size는 데이터 노드에서 사용됨.
★ thread_pool.search.size, thread_pool.search.queue_size는 데이터 노드와 코디네이션 노드에서 사용됨.
7. 슬로우 로그 관련 설정
index.search.slowlog.threshold.query.warn: 검색 쿼리의 경고 로그를 기록할 임계값을 설정합니다. 이 시간보다 오래 걸리는 쿼리는 경고 로그에 기록됩니다.
index.search.slowlog.threshold.query.info: 검색 쿼리의 정보 로그를 기록할 임계값을 설정합니다. 이 시간보다 오래 걸리는 쿼리는 정보 로그에 기록됩니다.
예시
# 1. 클러스터 및 노드 관련 설정
cluster.name: my_cluster
node.name: my_node
node.master: true
node.data: true
node.ingest: true
# 2. 네트워크 및 통신 관련 설정
network.host: _local_
http.port: 9200
transport.tcp.port: 9300
# 3. 디스커버리 및 클러스터 형성 관련 설정
discovery.seed_hosts: ["host1", "host2"]
cluster.initial_master_nodes: ["node1", "node2"]
# 4. 로깅 관련 설정
path.logs: /var/log/elasticsearch
# 5. 데이터 저장 관련 설정
path.data: /var/data/elasticsearch
# 6. 스레드 풀 관련 설정
thread_pool.bulk.size: 4
thread_pool.bulk.queue_size: 1000
thread_pool.search.size: 4
thread_pool.search.queue_size: 1000
# 7. 슬로우 로그 관련 설정
index.search.slowlog.threshold.query.warn: 10s
index.search.slowlog.threshold.query.info: 5s
설정 변경 및 적용
Elasticsearch의 환경 설정 파일인 elasticsearch.yml은 클러스터와 노드의 구성, 네트워크 설정, 로깅 및 데이터 저장 설정 등 다양한 옵션을 제공합니다. 이러한 설정을 사용하여 Elasticsearch 클러스터의 성능과 안정성을 최적화할 수 있습니다. 설정을 변경한 후에는 반드시 Elasticsearch를 재시작하여 변경 사항이 적용되도록 해야 합니다.
그 외 다양한 설정 파일
jvm.options:
Elasticsearch 프로세스의 JVM 옵션을 설정합니다. 메모리 크기, Garbage Collection 방식, 로깅 등 JVM 관련 설정을 지정할 수 있습니다.
log4j2.properties:
Elasticsearch 로그 설정 파일입니다. Elasticsearch 서버에서 발생하는 로그 레벨, 로그 파일 위치, 파일의 최대 크기, 백업 파일 관리 등을 지정할 수 있습니다.
role_mapping.yml
Elasticsearch의 Role Based Access Control(RBAC) 설정 파일입니다. 사용자와 롤 간의 매핑 정보를 지정할 수 있습니다.
users:
Elasticsearch 사용자 정보를 저장하는 파일입니다. Elasticsearch의 네이티브 사용자 인증 기능을 사용하거나 외부 인증 시스템과 연동하는 경우 사용자 정보를 등록합니다.
certs:
Elasticsearch에서 사용하는 TLS/SSL 인증서 및 개인키 파일이 저장되는 디렉토리입니다.
scripts:
Elasticsearch에서 사용하는 스크립트 파일들이 저장되는 디렉토리입니다. 스크립트 파일은 검색 쿼리, 색인 파이프라인 등에서 사용됩니다.
★ 클러스터 구성 시 설정 팁
cluster.name, network.host, discovery.seed_hosts, cluster.initial_master_nodes 설정은 모두 동일하게 맞출 것
'BigData > ElasticSearch' 카테고리의 다른 글
Elasticsearch 코디네이팅 노드 동작 테스트 (0) | 2023.03.25 |
---|---|
Elasticsearch 노드의 종류와 역할 (feat 동작 흐름) (0) | 2023.03.22 |
Elasticsearch에서 사용되는 주요 용어 10가지 (0) | 2023.03.21 |
Keyword Field를 활용하는 다양한 쿼리 예제 (0) | 2023.03.20 |
초보자를 위한 Elasticsearch 시작하기: CRUD (0) | 2023.03.19 |