Dev/ElasticSearch

[ElasticSearch] ElasticSearch 설치 및 config 확인

kyeoneee 2017. 8. 16. 02:01
반응형

참고

Elasticsearch는 JVM 기반으로 자바가 깔려 있어야 한다.

설치하고자 하는 elasticsearch 버전에 맞는 java 버전이 다르므로 확인을 한 후(https://www.elastic.co/support/matrix) 아래의 과정을 진행하길 바란다.

본인의 환경은 java version "1.8.0_144" 와 현재 기준(2017-10-07) 최신 버전인 elasticsearch-5.6.2   kibana-5.6.2 버전을 다운받아 사용하였다.



Elasticsearch 홈페이지에서 본인의 Java 버전과 OS에 맞는 elasticsearch 다운로드 파일을 설치한다.(https://www.elastic.co/kr/downloads/elasticsearch)

압축 파일의 다운로드가 완료되면 압축을 풀어준다.


압축을 풀어주게 되면 아래와 같은 항복들이 폴더에 존재한다. 

이 중에서 config 폴더 내의 세가지 설정 파일들을 확인하려 한다.

먼저 jvm.options 파일의 내용을 확인해보면


위와 같다. 이 파일은 elasticsearch가 실행되는 자바 가상 머신의 환경을 설정해주는 파일이다. 자바 가상 머신의 환경에 따라서 elasticsearch의 성능이 많이 영향을 미치게 되는데 대표적으로 JVM이 필요로 하는 데이터를 올려놓는 메모리 공간의 크기를 나타내는 heap space size가 있다. Elasticsearch에서는 32GB 이하로 minimum 사이즈와 maximum 사이즈를 동일하게 설정하도록 권장한다. (자세한 설명은 https://www.elastic.co/blog/a-heap-of-trouble#fn5)


elasticsearch는 실행 로그를 log4j 2로 남긴다. 실행로그와 관련된 설정을 하기 위한 파일이 log4j2.properties 파일이다.

log4j2.properties 파일 내에서 ${sys:es.logs.base_path} 는 로그파일이 저장되는 경로를 의미하고 ${sys:es.logs.cluster_name} 은 클러스터의 이름이며 로그파일명의 앞부분에 해당되고  ${sys:es.logs.node_name}  은 노드의 이름이다. (https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html#logging)


마지막으로 elasticsearch.yml 파일에 elasticsearch의 주요 환경 설정이 있다.


처음 elasticsearch를 설치하였을 때는 모든 설정이 주석처리가 되어 있다. 

Cluster

- cluster.name은 elasticsearch의 시스템 전체를 구분지어 주는 이름이므로 주석을 지워주고 반드시 바꿔주는 것이 좋다. 이 때 콜론(:) 뒤에는 반드시 공백이 존재해야 한다.

Node

- 실행된 하나의 elasticsearch 프로세스를 한 노드라고 하고 각 노드들이 연결된 전체 시스템을 elasticsearch 클러스터라고 한다. 노드는 엘라스틱서치가 실행될 때 임의로 설정이 되는데 특정 이름으로 설정하고 싶으면 주석을 지워주고 콜론(")안에 설정하고자 하는 이름을 넣어주면 된다.

Paths

- 데이터의 저장 경로와 로그파일의 저장 경로를 설정해줄 수 있다. 위의 log4j2.properties 파일에서 사용되는 저장경로에 대한 설정이 가능하다.

Memory 

- bootstrap.memory_lock의 주석을 지우고 true로 사용하게 되면 JVM에서 elasticsearch가 점유하는 메모리를 고정시키게 된다. 앞의 jvm.options 파일에서 힙사이즈의 최대 최소를 동일하게 설정해주고 true 옵션 설정을 통해 elasticsearch에서 메모리가 부족하지 않도록 방지할 수 있으므로 이 옵션은 true로 설정되도록 추천된다. Elasticsearch가 설치된 시스템의 너무 많은 메모리를 차지하지 않도록 전체 시스템 메모리의 50%가 넘지 않도록 설정하는 것이 안정적이다.

Network

- Network 호스트를 지정해주지 않으면 기본적으로 localhost로 지정이 된다. Node가 localhost로 실행이 되면 개발자 모드로 실행이 되어 bootstrap을 확인하지 않고 실행이 빠르게 된다. Network 호스트를 설정을 해주게 되면 클러스터링 준비를 하여 시작단계에서 다양한 체크를 하게 되어 실행이 더 느려진다. Elasticsearch는 기본적으로 REST API를 사용하기 위해 9200~9299 범위의 HTTP 통신 포트를 사용하게 되고 같은 서버에서 새로운 엘라스틱 서치 노드를 실행하면 이전 노드의 포트번호에 1이 더해진 포트번호가 설정된다. 하나의 elasticserach 노드가 다른 노드와 바인딩 되어 데이터를 교환할 때는 9300~9399 범위의 HTTP 통신 포트를 사용한다.


Elasticsearch의 설치 및 환경 설정이 끝나면 Elasticsearch 파일을 설치한 폴더에서 bin/elasticsearch 명령어를 통해 Elasticsearch를 실행할 수 있다.


반응형

'Dev > ElasticSearch' 카테고리의 다른 글

[ElasticSearch] Swap off 설정  (0) 2020.05.12