Elasticsearch yml Option

JunMyung Lee·2022년 12월 2일
0

Elasticsearch

목록 보기
5/37

Elasticsearch의 기본적인 옵션에 대한 설명이다. 많이 다루어봤어도 실제 구동을 시키기 위한 옵션을 제대로 모르는것 같았다.
설명은 옵션 주석으로 표시한다.

cluster.name: test_elasticsearch    # 클러스터명이 같아야 같은 클러스터로 인식한다(같은 서버여도 클러스터명이 다르면 다른 클러스터로 인식). default 클러스터명은 'elasticsearch'
node.name: test_01                  # 실행중인 elasticsearch 노드들을 구분할 수 있는 이름 (Kibana stack-monitoring에서 노드명 확인 가능)
path.data: /elastic/data            # 색인된 데이터를 저장하는 경로를 지정. default 경로는 es설치 아래, data 배열로도 가능 -> 한서버에 나누어서 저장가능 ["경로1", "경로2"...]
path.logs: /elastic/logs            # 실행 로그를 저장하는 경로를 지정. default 경로는 es설치 아래, 해당 옵션은 배열 불가능



# Hot-Warm architecture란, index의 사용빈도(즉, disk의 I/O 빈도)에 따라 tier를 나눠서 보관하는 방법이다.
# Tier로는 Hot과 Warm 필요하다면 Frozen까지 나눈다. 각 tier 의 memory : storage의 비는 
# - Hot tier  -> 1 : 30
# - Cold tier -> 1 : 160
# 예를들어, data node를 구성할 때 RAM 16 (GB)인 경우 Hot tier의 경우에는 SSD로 480 (GB)를, Warm tier의 경우에는 HDD로 2.56 (TB)를 준비하면 된다. 
# 노드별로 속성을 부여하기 위한 네임스페이스를 지정. node.attr.<key>:"<value>"의 형태
node.attr.data: hot                 # hot 노드로 설정



# 7.10 이후부터는 hot-warm-cold 아키텍처를 통해 구현하는 방식은 더이상 권장되지 않는다고 한다.
# 기존의 구현 방식
# ======================================
# On hot nodes 
# node.attr.node_type: hot
# On warm nodes 
# node.attr.node_type: warm 
# On cold nodes: 
# node.attr.node_type: cold
# Example :: 핫 노드에 할당된 인덱스가 생성
# PUT /myindex 
#{ 
#  "settings": { 
#    "index.routing.allocation.include.node_type": "hot" 
#  } 
#}

# ======================================

# 권장되는 ILM 정책에 대해서는 다음 자료를 참고하거나 다음에 다시 다루자
# Reference : https://www.elastic.co/kr/blog/elasticsearch-data-lifecycle-management-with-data-tiers
# Reference : https://www.elastic.co/kr/blog/implementing-hot-warm-cold-in-elasticsearch-with-index-lifecycle-management
#node.roles: ["master","ingest","data_hot"]


node.master: true                    # Master 노드 설정. 인덱스의 메타 데이터, 샤드의 위치와 같은 클러스터 상태(Cluster Status) 정보를 관리하는 마스터 노드의 역할을 수행합
node.data: true                      # Data 노드 설정. 실제로 색인된 데이터를 저장하고 있는 노드입니다. 클러스터에서 마스터 노드와 데이터 노드를 분리하여 설정 할 때 마스터 후보 노드들은 node.data: false 로 설정하여 마스터 노드 역할만 하고 데이터는 저장하지 않도록 할 수 있습니다
node.ingest: true                    # Injest 노드 설정. 다양한 프로세서(Processors)로 파이프라인(Ingest Pipline)을 구성해서 순차적으로 데이터를 처리한 다음에 엘라스틱서치에 인덱싱하도록 해 줍니다


network.host: 0.0.0.0                # es가 실행되는 서버의 IP주소 default는 localhost, 주석처리가 되어 있거나 localhost면 개발 모드로 실행. IP를 작성하면 운영모드로 들어가서 부트스트랩 체킹 시작
# 클러스터를 구성할 때 설정을 network.host: _site_ 로 해 놓으면 서버의 네트워크 주소가 바뀌어도 설정 파일은 변경하지 않아도 되기 때문에 편리합니다.
# network.bind_host : 내부망
# network.publish_host : 외부망

http.port: 9200                     # 통신 포트, default 9200 이며 이미 사용중인 경우 9200 ~ 9299 사이값을 차례대로 사용
discovery.seed_hosts: ["host_1", "host_2", "host_3"]        # 노드가 처음 실행 될 때, 같은 서버, 또는 해당 옵션에 설정된 네트워크 상의 다른 노드들을 찾아 하나의 클러스터로 바인딩 하는 과정.
# 주소값만 적혀 있는 경우, 디폴트로 9300 ~ 9305 사이의 포트값을 검색하며, tcp 포트가 이 범위 밖에 설정 된 경우 포트번호 까지 적어야한다.
# Step 1. 주소 순서대로 노드가 있는지 여부 확인
# Step 2-1. 노드가 존재 하는 경우 -> cluster.name 확인 -> 같을 경우 같은 클러스터로 바인딩
# Step 2-2. 노드가 존재 하는 경우 -> cluster.name 확인 -> 다를 경우 Step1으로 돌아가서 다음 주소 확인
# Step 2-3. 노드가 존재 하지 않는 경우 -> Step1으로 돌아가서 다음 주소 확인
# Step 3. 모든 Step 종료시 클러스터 구동

cluster.initial_master_nodes: ["data-01","data-02","data-03"]       # 클러스터가 최초 실행 될 때, 명시된 노드들을 대상으로 마스터 노드를 선출.
#action.destructive_requires_name: true                             # 해당 값이 true인 경우, 인덱스를 DELETE API를 통해서 한번에 여러 개 삭제할 수 없다. 와일드 카드나 _all을 통한 인덱스 삭제를 막고, 삭제할 인덱스를 명확히 지정해서 지워야 한다. (즉, 한건씩 지워라)

bootstrap.memory_lock: true                                         # 실행시 자신에게 할당된 메모리를 lock한 채로 실행하여 swap으로 메모리가 빠져나가는것을 방지한다.
bootstrap.system_call_filter: false                                 # 임의 코드 실행 공격에 대한 방어 메커니즘으로 분기와 관련된 시스템 호출을 실행하는 기능을 방지하기 위해 설치. 시스템 호출 필터 검사를 통과하려면 시스템 호출 필터 설치를 방해하는 시스템 구성 오류를 수정

transport.tcp.compress: true                                        # TCP 전송에 대해 데이터 압축을 수행할지 여부를 설정. 기본 설정은 압축없음 false

xpack.security.enabled: true                                        # elastic 슈퍼유저를 기본적으로 제공하며, 이를 사용하여 설정 시작. elastic사용자는 모든 색인 및 데이터를 포함하여 클러스터에 대한 전체 액세스 권한을 가짐
xpack.security.transport.ssl.enabled: true                          # 노드가 서로 통신하는 데 사용하는 전송 네트워킹 계층에서 TLS/SSL을 활성화 또는 비활성화하는 데 사용됩니다. 기본값은 false입니다.
xpack.security.transport.ssl.verification_mode: certificate         # 인증서 확인을 제어합니다. 인증서 확인을 제어합니다. default full
# - full, 제공된 인증서가 신뢰할 수 있는 기관(CA)에 의해 서명되었는지 확인하고 서버의 호스트 이름(또는 IP 주소)이 인증서 내에서 식별된 이름과 일치하는지 확인합니다.
# - certificate, 제공된 인증서가 신뢰할 수 있는 기관(CA)에 의해 서명되었는지 확인하지만 호스트 이름 확인은 수행하지 않습니다
# - none, 서버의 인증서 확인 을 수행 하지 않습니다. 이 모드는 SSL/TLS의 많은 보안 이점을 비활성화하므로 매우 신중하게 고려한 후에만 사용해야 합니다. 주로 TLS 오류 해결을 시도할 때 임시 진단 메커니즘으로 사용됩니다. 프로덕션 클러스터에서의 사용은 강력히 권장되지 않습니다

xpack.security.transport.ssl.keystore.path: elastic-certificates.p12    # 개인 키와 인증서가 포함된 키 저장소 파일의 경로입니다. Java 키 저장소(jks) 또는 PKCS#12 파일이어야 합니다. 이 설정을 과 ssl.key동시에 사용할 수 없습니다
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12  # 신뢰할 인증서가 포함된 키 저장소의 경로입니다. Java 키 저장소(jks) 또는 PKCS#12 파일이어야 합니다. 이 설정을 과 ssl.certificate_authorities동시에 사용할 수 없습니다.

0개의 댓글