사전 요구사항
Elasticsearch를 설치하기 전에 Java가 사전에 설치되어 있어야 합니다. Java 설치 및 설정에 관한 자세한 내용은 관련 문서를 참고하세요.
1. Elasticsearch 5.6.16 다운로드
https://www.elastic.co/cn/downloads/past-releases/elasticsearch-5-6-16
elasticsearch-5.6.16.tar.gz 파일을 다운로드합니다.
2. 파일 전송 및 디렉토리 생성
다운로드한 파일을 Ubuntu 서버의 /apps/es/ 디렉토리로 전송합니다. 해당 디렉토리가 없다면 먼저 생성합니다.
mkdir -p /apps/es
3. 압축 해제
tar zxvf elasticsearch-5.6.16.tar.gz
4. 전용 사용자 및 그룹 생성
Elasticsearch는 root 권한으로 실행할 수 없으므로, 전용 사용자와 그룹을 생성해야 합니다. 다음과 같은 명령어로 설정합니다.
groupadd esgroup
useradd -m esuser -g esgroup
chown -R esuser:esgroup /apps/es/elasticsearch-5.6.16
5. 데이터 및 로그 디렉토리 생성
Elasticsearch가 사용할 데이터와 로그 디렉토리를 생성하고 권한을 설정합니다.
# 데이터 디렉토리 생성
mkdir /data
# 권한 변경
chown -R esuser:esgroup /data/
# esuser 사용자로 전환
su - esuser
# 데이터와 로그 디렉토리 생성
cd /data
mkdir -p es/data
mkdir -p es/logs
# root 사용자로 복귀
su - root
6. Elasticsearch 설정
설정 파일을 편집합니다.
vi /apps/es/elasticsearch-5.6.16/config/elasticsearch.yml
설정 파일에 다음 내용을 추가합니다. 주의: 콜론(:) 뒤에 공백이 필요합니다.
# 클러스터 이름
cluster.name: my-application
# 노드 이름
node.name: node-1
# 데이터 저장 디렉토리 (여러 경로는 쉼표로 구분)
path.data: /data/es/data
# 로그 디렉토리
path.logs: /data/es/logs
# 외부 접근을 위한 네트워크 바인딩 주소
network.host: 192.168.215.10
# 리스닝 포트
http.port: 9200
설정을 저장하고 편집기를 종료합니다.
7. Elasticsearch 실행
생성한 전용 사용자로 전환하여 Elasticsearch를 실행합니다.
cd /apps/es/elasticsearch-5.6.16/bin/
su - esuser -c "./elasticsearch"
백그라운드에서 실행하려면 다음 명령어를 사용합니다.
su - esuser -c "./elasticsearch -d"
8. 서비스 확인
브라우저 또는 curl 명령어로 Elasticsearch 서비스에 접근합니다.
curl http://192.168.215.10:9200/
문제 해결
오류 1: 파일 디스크립터 부족
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
프로세스에서 사용할 수 있는 파일 디스크립터 수가 부족합니다. root 사용자로 /etc/security/limits.conf 파일을 편집합니다.
vi /etc/security/limits.conf
파일 끝에 다음 내용을 추가합니다.
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
오류 2: 가상 메모리 영역 부족
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
시스템의 vm.max_map_count 파라미터 값이 너무 작습니다. root 사용자로 다음 명령어를 실행합니다.
sysctl -w vm.max_map_count=655360
sysctl -a | grep "vm.max_map_count"
설정이 적용되면 esuser로 다시 전환하여 Elasticsearch를 정상적으로 실행할 수 있습니다.