본문 바로가기
ELK Stack

[Elasticsearch] Elasticsearch 7.9 설치 (Ubuntu Linux 18.04 Elasticsearch 7.9.x 설치)

by 임채훈 2020. 10. 6.

Linux 환경에서 Elasticsearch 7.9 설치 (Ubuntu 18.04)

 

Getting started with Elasticsearch | Elasticsearch Reference [7.9] | Elastic

Ready to take Elasticsearch for a test drive and see for yourself how you can use the REST APIs to store, search, and analyze data? Step through this getting started tutorial to: Get an Elasticsearch cluster up and running Index some sample documents Searc

www.elastic.co

 

Step

  1. 사용자 및 사용자 그룹 생성
  2. Elasticsearch 다운로드
  3. 서비스 등록 (systemctl)
  4. 기본 옵션 및 필수 속성 설정
  5. 실행

 

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

댓글