YML일명, 얌파일은 안드로이드에 대해서 공부할때 주의깊게 본 설정파일인데 여기서 보니 반갑고 한눈에 설정파일임을 알 수 있었다.
각설하고 엘라스틱 서치의 디렉토리구조는 다음과 같다. 참고로 디렉토리 구조를 뽑아내는 명령어는 리눅스의 tree를 이용하였다.
elasticsearch
├── bin
├── config
├── data
├── jdk
├── lib
├── logs
├── modules
└── plugins
bin : 실행스크립트 모음
config : 설정파일 모음
data : 데이터가 저장되는 공간
jdk : Java Development Kit
lib : 라이브러리 모음
logs : 로그 모음
modules : 모듈 모음
plugins : 플러그인 모음
책의 내용을 최대한 놓치지 않도록 면밀히 읽고있는데 config 파일이 7버전과 1버전이 약간 다른것 같다.. 나중에 이슈가 되면 인터넷 리서치가 필요할 듯 보인다. 일단, 책에 나와있는대로 시스템에 영향을 줄 수 있는 설정파일 정보를 정리해 보았다.
특히 설정파일에서 내부IP, 외부IP를 설정하는 내용이 나오는데 해당 설정들을 사용할 경우는 다음과 같은 구조를 가질때 사용한다. 그렇지 않을 경우에는 network.host 설정만 고쳐주면 되니 주의하도록 하자.
[ /config/elasticsearch.yml ]
# JVM위에서 실행중인 ElasticSearch가 점유하는 메모리를 고정시킨다.
# (시스템 전체메모리의 50%가 넘지 않도록 하는것이 안정적이라고 한다.)
bootstrap.mlockall : true
# 내부 IP 주소
network.bind_host: 192.168.0.1
# 공개 IP 주소
network.publish_host: 192.168.0.1
# 내부, 공개 주소가 같을 경우 IP 주소
network.host : 192.168.0.1
# 하나의 Elasticsearch 노드가 다른 노드와 바인딩되어 데이터교환을 위해
# 통신하는 포트는 9300~9399 범위의 http통신포트 사용
trasport.tcp.port:9300
# 기본적으로 REST API를 서비스하기 위해 엘라스틱서치는 9200~9299 범위의 HTTP 통신 포트를 사용.
http.port:9200
# true일 경우 엘라스틱서치가 통신하는 내용의 데이터를 압축하여 전달.
transport.tcp.compress: treu
# 옵션에 설정된 용량을 초과하면 데이터를 전달하지 않는다.
http:.max_content_length: 100mb
# false일 경우 엘라스틱서치 노드는 REST API통신을 하지 않는다.
# 여러개의 엘라스틱서치 노드를 구현시 하나의 노드만 Rest를 허용하게 해준다.
http.enabled: false
# 게이트웨이 : 엘라스틱서치의 전체 클러스터의 상태를 저장하는 저장소.
# 엘라스틱서치의 전체 클러스터가 종료된 후 재실행 될 때 게이트웨이에 저장된
# 상태값을 읽어 들여 노드와 인덱스 등에 대해 새로 설정하는데, 이 과정을 recovery라고 한다.
# 전체 클러스터가 재시작 되고 몇 개의 노드가 활성화 됐을 때 리커버리를 시작할지 설정한다.
gateway.recover_after_nodes: 1
#앞에 지정된 몇 개의 노드가 활성화 되고 다시 얼마시간 동안의 시간을 기다린 후에 리커버리를 실행할지 설정한다.
gateway.recover_after_time: 5m
#엘라스틱서치 클러스터에 몇 개의 노드가 있는지 명시하고 설정된 개수만큼의 노드가 활성화 되면 즉시 리커버리를 실행한다.
gateway,expected_nodes: 2