Elasticservice를 OS에서 서비스로 실행하기 위해서, reboot / upgrade하는 동안 제공되는 패키지를 통해서 elasticsearch를 쉽게 시작하고 종료할 수 있다.
Linux
현재 우리 빌드 시스템은 자동으로 데비안 패키지와 RPM을 생성한다. 다운로드 페이지를 통해서 이용할 수 있다. 패키지는 특별히 의존관계를 갖지는 않는다. 하지만, JDK가 설치되었는지 확인이 필요하다.
각각의 패키지는 다음 파라미터들로 설정 파일을 설정할 수 있다.
ES_USER : 실행 사용자. 기본 : elasticsearch
ES_GROUP : 실행 그룹. 기본 : elasticsearch
ES_HEAP_SIZE : 시작할 때의 Heap 메모리 크기
ES_HEAP_NEWSIZE : 새로 생성하는 Heap 메모리 크기
ES_DIRECT_SIZE : Maximum Direct Memory
MAX_OPEN_FILES : Open file 최대값. 기본 : 65535
MAX_LOCKED_MEMORY : 최대 lock 메모리 크기. bootstrap.mlockall 옵션을 elasticsearch.yml에 사용하려면 "unlimited"로 설정하라. 또한 ES_HEAP_SIZE를 설정해야 한다.
MAX_MAP_COUNT : 하나의
Process가 가질 수 있는 최대 memory map area 수. Mmapfs를 index store type으로 사용한다면 이 값을 높은 값으로 설정하라. 더 자세한 정보를 위해서는 max_map_count에 대한 linux kernel
documentation (https://github.com/torvalds/linux/blob/master/Documentation/sysctl/vm.txt) 를 확인하라. Elasticsearch를 시작하기 전에 sysctl을 통해서 설정할 수 있다. Default값은 65535이다.
LOG_DIR : 로그 디렉토리. Default는
/var/log/elasticsearch이다.
DATA_DIR : 데이터 디렉토리. Default는 /var/lib/elasticsearch이다.
WORK_DIR : Work 디렉토리. Default는 /tmp/elasticsearch이다.
CONF_DIR : 설정 파일 위치 디렉토리. (elasticsearch.yml과 logging.yml 파일이 있는 위치). Default는 /etc/elasticsearch이다.
CONF_FILE : 설정 파일 경로. Default는 /etc/elasticsearch/elasticsearch.yml이다.
ES_JAVA_OPTS : 추가적인 java options. Node.name property를 추가하려고 한다면 아주 유용하게 사용할 수 있다. 하지만, puppet이나 chef와 같은 provisioning system을 통해서 배포되기 때문에 그 외에는 elasticsearch.yml 파일의 내용을 변경하지 말라. 예를 들어 다음과 같이 사용할 수 있다. ES_JAVA_OPTS="-Des.node.name=search-01"
RESTART_ON_UPGRADE : restart나 package upgrade에 대한 설정. Default는 false이다. Package를 설치한 이후, elasticsearch instance를 수동으로 restart해야 한다. Cluster에서 upgrade 기능은 네트워크 트래픽을 증가시키고, cluster 전체적으로 response time을 안 좋게 하기 때문이다.
Debian/Ubuntu
데비안 패키지에는 표준 데비안 업데이트 툴인 update-rc.d를 실행하면 필요한 모든 것이 포함되어 있다. 실행 스크립트는 /etc/init.d/elasticsearch이다. 설정 파일은 /etc/default/elasticsearch에 있다.
데비안 패키지는 기본적으로 service로 시작하지는 않는다. 적합하게 설정되어 있지 않으면 갑작스럽게 cluster에 참여하지 않도록 하기 위해서이다. dpkg -i로 설치한 이후, 다음 command를 사용하여 system이 부팅할 때, elasticsearch를 시작할 수 있다.
sudo update-rc.d elasticsearch defaults 95 10
sudo /etc/init.d/elasticsearch start
Installing the oracle JDK
일반적으로 추천하는 것은 Oracle JDK 환경에서 elasticsearch를 구동하는 것이다. 그러나 Ubuntu나 Debian에는 라이선스 이슈로 OpenJDK만 탑재되어 있다. 하지만 쉽게 oracle installer를 이용해 설치할 수 있다. 데비안이나 리눅스 환경에서 add-apt-repositry command를 사용하여 Debian Wheezy와 python-software-properties가 설치되어 있는지 확인하라.
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
java -version
마지막 command를 사용하여 Oracle JDK가 성공적으로 설치되었는지 확인할 수 있다. Java 8을 설치하려면 apt-get install oracle-java8-installer 를 통해서 설치할 수 있다.
RPM based distributions
Using chkconfig
Chkconfig를 사용하여 RPM기반 배포파일을 얻을 수 있다. Init script는 /etc/init.d/elasticsearch에 있다. 설정 파일은 /etc/sysconfig/elasticsearch에 있다. 데비안처럼 RPM 패키지는 기본적으로 install이후 실행되지 않는다. 다음 command를 통해서 수동으로 실행해야 한다.
sudo /sbin/chkconfig --add
elasticsearch
sudo service elasticsearch start
Using systemd
SUSE 배포판에서는 서비스 등록을 위해서 chkconfig를 사용할 수 없다. 서비스 실행과 종료를 위해서 systemd와 /bin/systemctl을 사용한다. (가장 최신 버전에서는 chkconfig command를 사용할 수 있다.) 설정 파일은 /etc/sysconfig/elasticsearch에 있다. RPM 설치 후, systemd 설정을 변경하고 elasticsearch를 실행해야 한다.
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl
enable elasticsearch.service
sudo /bin/systemctl
start elasticsearch.service
/etc/sysconfig/elasticsearch에 있는 MAX_MAP_COUNT를 변경하는 것은 아무 효과가 없다. 시작시점에 변경된 값을 반영하려면 /usr/lib/sysctl.d/elasticsearch.conf를 변경해야 한다는 것에 유의하라.
댓글을 달아 주세요
댓글 RSS 주소 : http://www.yongbi.net/rss/comment/709