ElasticSearch 설치시 확인할 사항
올초부터 회사에서 요즘 Kafka, Elasticsearch, Ansible, k8s 등등
난생 처음 다뤄보는 것들을 하나하나 엮어서 올리다보니 설치부터 삽질한 경험이 많아서 정리 해 보려고 함...
가장 기본적인 Elasticsearch 의 경우에도 무턱대고 설치를 하려고 하면 여러가지 에러 메시지를 마주치게 됨
아래는 설치시 체크해보아야 할 기본적인 사항들
- Important System Configuration에서 참고하였음
- RPM이나 DEB로 리눅스에 설치할 경우는 신경 쓰지 않아도 됨
- Permission
- ElasticSearch는 root 권한으로 실행을 하지 않을 것을 권장하므로 Elasticsearch용 유저를 따로 만드는 것을 권장함
- 5.0 이하의 버전에서는
-Des.insecure.allow.root=true
실행 파라미터를 주고 루트에서 실행 가능하지만 - 5.0 이상의 버전에는 해당 옵션이 제거되고
don't run elasticsearch as root
에러 발생
- Disable swapping
- Elasticsearch는 JVM상에서 구동되므로 메모리 점유 또한 JVM 옵션으로 컨트롤되므로 swap을 꺼도 무방하다
- 임시로 끄기 위해서는
sudo swapoff -a
- 영구적으로 끄기 위해서는
/etc/fstab
의 swap 이라는 문구가 포함된 파일을 모두 주석 처리
- File Descriptors
- Elasticsearch는 동시에 매우 많은 파일을 엑세스하기 때문에 이 설정이 권장치보다 낮으면 data loss가 발생함
ulimit -Hn
명령어의 값은 65536 이상을 권장ulimit -n 65536
으로 임시로 설정 가능- 영구적인 설정을 위해서는
/etc/security/limits.conf
에 아래와 같은 줄을 추가 (재로그인시 적용)elasticsearch - nofile 65536
(elasticsearch 구동용 계정이 elasticsearch인 경우)
- Number of Threads
- Elasticsearch는 작업간 스레드를 많이 사용하는데 이 스레드의 숫자는 4096 이상을 권장함
ulmit -Hu
명령어의 값은 4096 이상을 권장ulimit -u 4096
으로 임시로 설정 가능- 영구적인 설정을 위해서는
/etc/security/limits.conf
에 아래와 같은 줄을 추가 (재로그인시 적용)elasticsearch - nproc 4096
(elasticsearch 구동용 계정이 elasticsearch인 경우)
- Virtual Memory
- Elasticsearch는 mmapfs를 저장소로 사용하는데, 일반적으로 OS의 기본값이 작게 설정되어 있어 메모리 문제를 일으킬 수 있음
sysctl vm.max_map_count
명령어의 값은 262144 이상을 권장sysctl -w vm.max_map_count=262144
로 임시로 설정 가능- 영구적인 설정을 위해서는
/etc/sysctl.conf
에 아래와 같은 줄을 추가 (재부팅시 적용) vm.max_map_count=262144
- Elasticsearch는 mmapfs를 저장소로 사용하는데, 일반적으로 OS의 기본값이 작게 설정되어 있어 메모리 문제를 일으킬 수 있음
- 위의 사항들이 제대로 되어 있지 않으면 Elasticsearch 구동시 bootstrap check가 실패함
- Elasticsearch가 loopback address에 bind되어 있는 단일노드라면 development mode이므로 관계 없지만
- Elastiscsearch가 non-loopback address에 bind되어 있으며 클러스터에 참가하는 노드라면 production mode이므로 위의 사항을 통과해야지만 구동함
- 클러스터링에 관한 설정은 다음 포스트에...
'dev > Cloud & Infra' 카테고리의 다른 글
ElasticSearch Heap 사이즈 설정 (0) | 2019.02.03 |
---|---|
systemd 서비스 unit파일 작성에서 했던 실수 (3) | 2019.02.02 |
VirtualBox로 설치한 VM에 LINUX 네트워크 설정하기 (0) | 2018.12.02 |
VirtualBOX를 커맨드라인으로 제어하기 (VBoxManage) (0) | 2018.12.01 |
vagrant 에서 Encoding::CompatibilityError 에러가 발생할 경우 (5) | 2018.03.12 |