Linux 환경에서 Elasticsearch 7.9 설치 (Ubuntu 18.04)
- Version : 7.9.1
- Documentation : https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html
Step
- 사용자 및 사용자 그룹 생성
- Elasticsearch 다운로드
- 서비스 등록 (systemctl)
- 기본 옵션 및 필수 속성 설정
- 실행
1. 사용자 및 사용자 그룹 생성
- 사용자명 elastic, 그룹명 elastic으로 생성
adduser elastic
Elasticsearch는 root 계정 (Super User) 으로는 실행할 수 없게 설정되어있음.
따라서 임의의 사용자를 생성하여 실행할 수 있도록 함
2. Elasticsearch 다운로드
1. 디렉토리 이동 /usr/local
cd /usr/local
2. elasticsearch tar.gz 압축버전 다운로드
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.1-linux-x86_64.tar.gz
3. 압축파일 압축 해제
tar -xvzf elasticsearch-7.9.1-linux-x86_64.tar.gz
4. Symbolic Link 생성 (바로가기)
ln -s elasticsearch-7.9.1-linux-x86_64 elasticsearch
5. 디렉토리 관리 사용자 및 그룹 설정
chown -R elastic:elastic /usr/local/elasticsearch-7.9.1-linux-x86_64
6. 디렉토리 파일 목록 조회
ls -alh /usr/local/elasticsearch
drwxr-xr-x 2 elastic elastic 4.0K Oct 29 2019 bin
drwxr-xr-x 2 elastic elastic 4.0K Sep 1 14:23 config
-rw-r--r-- 1 elastic elastic 135 Jan 10 2020 instance.yml
drwxr-xr-x 9 elastic elastic 4.0K Oct 29 2019 jdk
drwxr-xr-x 3 elastic elastic 4.0K Oct 29 2019 lib
-rw-r--r-- 1 elastic elastic 14K Oct 29 2019 LICENSE.txt
drwxr-xr-x 2 elastic elastic 44K Sep 30 16:20 logs
drwxr-xr-x 37 elastic elastic 4.0K Oct 29 2019 modules
-rw-r--r-- 1 elastic elastic 511K Oct 29 2019 NOTICE.txt
drwxr-xr-x 2 elastic elastic 4.0K Oct 29 2019 plugins
-rw-r--r-- 1 elastic elastic 8.4K Oct 29 2019 README.textile
3. 서비스 등록 (systemctl)
- /lib/systemd/system/elasticsearch.service 편집
vi /lib/systemd/system/elasticsearch.service
[Unit]
Description=Elasticsearch Cluster
Documentation=https://www.elastic.co/kr/products/elasticsearch
Wants=network-online.target
After=network-online.target
[Service]
RuntimeDirectory=elasticsearch-7.9.1
WorkingDirectory=/usr/local/elasticsearch
LimitMEMLOCK=infinity
LimitNOFILE=65535
LimitNPROC=4096
ExecStart=/usr/local/elasticsearch/bin/elasticsearch
ExecReload=/usr/local/elasticsearch/bin/elasticsearch
RestartSec=3
User=elastic
Group=elastic
1. service 파일 수정사항 적용
systemctl daemon-reload
2. 부팅 시 elasticsearch 자동 실행 활성화
systemctl enable elasticsearch
4. 기본 옵션 및 필수 속성 설정
- /usr/local/elasticsearch/config/elasticsearch.yml 편집
vi /usr/local/elasticsearch/config/elasticsearch.yml
# ---------------------------------- Cluster -----------------------------------
#
cluster.name: Cluster1
cluster.initial_master_nodes:
- node_master
#
# ------------------------------------ Node ------------------------------------
#
node.name: node_master
#
# ----------------------------------- Paths ------------------------------------
#
path.data: /usr/local/elasticsearch/data
path.logs: /usr/local/elasticsearch/logs
#
# ----------------------------------- Memory -----------------------------------
#
bootstrap.memory_lock: true
#
# ---------------------------------- Network -----------------------------------
#
network.host: 192.168.0.10
http.port: 9200
#
# --------------------------------- Discovery ----------------------------------
각 속성에 대해 간단하게 설명하자면
# cluster.initial_master_nodes - Master 후보가 될 노드 목록
기본적으로 분산 스토리지 시스템의 경우 노드/클러스터 등의 단위로 시스템을 분산하여 각 분산구성된 노드/클러스터들이 특정한 역할 및 포지션을 갖고 실행된다.
대표적으로 Elasticsearch의 경우 master, ingest, data 등의 명칭을 갖고 각 노드들이 존재하고
또 다른 대표적인 Hadoop의 HDFS(Hadoop Distributed File System)의 경우 Master(Name), Slave(Data) 등의 명칭을 가진 노드들이 존재한다.
그런 가운데 Master 역할을 할 수 있는 노드는 물리적인 1개의 Cluster에서 하나만 존재하게 되므로 여러개의 노드로 분산하여 시스템을 구성할 시에 Master 역할을 할 노드를 선출하는 과정을 거친다.
그래서 Elasticsearch Cluster 설정중에서는 해당 cluster.initial_master_nodes의 옵션을 통해 Master 노드의 역할을 할 수 있는 노드들을 지정해준다.
현재는 설치 과정이므로 싱글노드로 구성하게되어 자신의 명칭인 node_master 만을 넣어주었다.
Elasticsearch의 Master 노드 선출(Master Elections)에 대해서는 추후에 분산 노드 환경 구성과정과 더불어 별도의 게시글로 조금 더 상세하게 다루도록 할 예정입니다.
# path.data - 실제 Elasticsearch의 데이터로 관리될 파일의 경로를 지정 ( Default : $ES_HOME/data )
# path.logs - Elasticsearch에서 발생하는 로그 파일들이 저장될 경로 지정 ( Default : $ES_HOME/logs )
# bootstrap.memory_lock - Elasticsearch가 시스템 메모리 스와핑되는것을 방지
시스템에서 메모리가 부족할 경우 디스크의 일부를 메모리처럼 사용하는데 Elasticsearch 성능에 문제가 발생하기 때문에 비활성처리
# network.host - Elasticsearch Listen Host
해당 옵션은 추가로 Elasticsearch는 개발(Development)모드와 운영(Production)모드를 구분하는데에 network.host 속성의 값이 localhost인지 아닌지의 여부로 구분하게됨.
5. 실행
systemctl start elasticsearch
댓글