ElasticSearch 7.x 설치 - Linux
2019년 4월 ElasticSearch 7.0 버전이 출시되었다.
2.x / 5.x / 6.x 현재 사용중인 버전에 따라 변경된 부분들이 많이 다르기도 해서
업데이트가 망설여지지만, 처음 ElasticSearch를 설치하고 사용하는 입장에서는 이보다 좋을수는 없을 것 같다.
버전별 변경사항에 대해서는 김종민님의 블로그에 자세히 설명이 되어있다.
http://kimjmin.net/2019/04/2019-04-elastic-stack-7-release/
Elastic Stack 7.0 출시 밎 지금까지의 변경들 - Jongmin's blog
Elasticsearch, Kibana, Logstash, Beats 제품들을 개발하는 Elastic 사 에서는 이 4 제품들을 통틀어 Elastic Stack 이라고 부릅니다. 예전에 Beats가 생기기 전에는 ELK(Elsaticsearch, Logstash, Kibana) 스택으로 더 잘 알려져 있었는데 이 스토리는 https://www.elastic.co/kr/elk-stack 페이지에서 좀 더 자세히 보실 수 있습니다. Elastic Stack은
kimjmin.net
현재 최신버전은 7.5.2 버전이며, 리눅스 CentOS7 환경에서의 설치를 해보려한다.
설치하는 방식은 여러방식이 있는데, 여기서는 압축파일을 다운받아 설치하는 방식을 선택했다.
개인적인 생각이지만 뭔가 가장 마음이 편한방식.....
1. 유저생성
먼저, ElasticSearch는 root권한/sudo권한의 실행을 제한하고 있다.
이를 위해 User부터 생성한다.
adduser -d /search_engine elastic
passwd elastic
생성된 유저로 재로그인을 한다.
2. 다운로드
이제 준비가 끝났으니, 홈디렉토리에 ElasticSearch를 다운로드 받는다.
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.2-linux-x86_64.tar.gz.sha512
3. 압축해제
압축을 풉니다.
shasum -a 512 -c elasticsearch-7.5.2-linux-x86_64.tar.gz.sha512
tar -xzf elasticsearch-7.5.2-linux-x86_64.tar.gz
cd elasticsearch-7.5.2/
혹시 shasum 명령어가 실행되지 않는다면, sha512sum을 사용합니다.
sha512sum -c elasticsearch-7.5.2-linux-x86_64.tar.gz.sha512
tar -xzf elasticsearch-7.5.2-linux-x86_64.tar.gz
cd elasticsearch-7.5.2/
싱겁지만, 설치는 끝났다.
6.2 버전까지는 shasum이 없었지만, 6.3부터 x-pack이 기본설치에 포함되면서 설치방식이 살짝 바뀌었다.
4. 실행 및 에러
이제 실행을 해보자
./bin/elasticsearch
테스트시 필자의 서버에서는 별다른 에러가 없었고, closed 되지 않고 제대로 구동이 되었지만,
과거 경험상 centos6버전대 또는 elasticsearch6.x 버전 설치시
ElasticSearch용으로 서버세팅이 되어있지 않는다면 여러가지 에러가 뜨면서 실행이 중단된다.
하지만 Elastic은 친절하게 무엇을 수정해야할지 로그에 아래와 같이 메시지를 남겨준다.
[1]. ------
[2]. ------
[3]. ------
식으로 적혀져있는 부분을 확인하자.
과거 설치시 아래와 같은 에러가 출력 됬었다.
[1] max virtual memory areas vm.max_map_count [####] is too low, increase to at least [262144]
[2] max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[3] max number of threads [1024] for user [engine] is too low, increase to at least [2048]
해결방법은 구글검색을 통하거나 Elastic 홈페이지에 자세하게 설명이 되어있다.
설정변경은 root권한을 가진 user로 변경할수 있다.
[1] 번항목은, 하나의 프로세스가 가질 수 있는 가상메모리 영역사이즈가 너무 작다는 오류이다. 두가지 방법이 있다.
sysctl 명령어를 사용하여 카운트를 강제로 바꿔주는 방법과 해당 파일을 직접 수정해주는 방법이다.
sysctl -w vm.max_map_count=262144
또는
vi /proc/sys/vm/max_map_count
편집기로 들어가서 수치를 262144 로 바꿔준다.
[2]번, [3]번 항목은 한 user가 시스템 자원을 얼마나 사용할수 있는가를 설정 또는 제어하는 항목에 관련한 것인데, 검색엔진은 엄청난 자원을 소모하므로, 최소한의 권장설정이 요구된다.
limits.conf를 수정하여 user elastic에 대한 설정을 편집한다.
vi /etc/security/limits.conf
편집기를 실행하면, 하단부에 아래내용을 추가한다.
elastic soft memlock unlimited
elastic hard memlock unlimited
elastic hard nofile 65536
elastic soft nofile 65536
elastic hard nproc 65536
elastic soft nproc 65536
설명하자면,
hard와 soft는 셀 최대값과 설정값을 의미하고,
nofile은 한 번접속에 파일을 열어볼수있는 횟수를,
nproc은 프로시저 실행횟수를 의미한다.
이제 기본 리눅스 세팅이 끝났으니, ElasticSearch를 실행시켜보자.
./bin/elasticsearch
closed가 되지않고 잘 살아 있다면, Elastic 구동은 성공적이다.
지금까지 Elasticsearch를 실행시키기 위한 리눅스 세팅을 알아보았으며,
다음편에서는 Elasticsearch 세팅을 알아보도록 하자.
끗.