ElasticSearch 7.13 설치

ElasticSearch 7.13 으로 넘어오면서 변화가 있었다. 그중에는 Node Type 이 없어지고 이제는 Node Role 로 바뀌었다. 6.4 에서 다양하게 있었던 Node Type 은 비교적 대거 정리가 된 느낌이다.

Node Role

Node Role 은 ElasticSearch 7.13 의 설정 파일인 elasticsearch.yml 파일에서 정의하도록 되어 있는데, 여기에 정의할 수 있는 목록은 다음과 같다.

  • master
  • data
  • data_content
  • data_hot
  • data_warm
  • data_cold
  • data_frozen
  • ingest
  • ml
  • remote_cluster_client
  • transform

필요한 것이 master, data 정도라고 보면 된다. 하나의 노드에 다양한 Role 를 부여할 수 있다. 형식은 다음과 같다.

node.roles: [master, data]

roles 지정을 하지 않을 경우에 위에 나열한 모든 roles 을 수행할 수 있다.

Single-node

ElasticSearch 는 다중 노드를 필요로 한다. 이것은 강제 사항으로 적어도 2개 이상을 필요하게 된다. 하지만 개발을 위해서라면 하나가지고 할 수 있어야 하는데, 이럴때는 다음과 같이 해준다.

discovery.type: single-node

Node

Master 노드는 CRUD 를 담당 한다. 적어도 2개 이상의 노드를 반드시 필요로 한다.

노드가 여러개 일경우에 이들이 서로 알아볼 수 있도록 통신을 해야 하는데, 다음의 설정으로 포트를 지정할 수 있다.

  • transport.profiles.default.port
  • transport.port

순서대로 체킹을 하게 된다. 별도로 지정하지 않으면 기본 포트를 가지고 서로 찾게 된다. 기본 포트는 9300 이다.

ES_ 환경변수

ElasticSearch 7.13 에서도 ES_ 환경변수는 존재한다. 이를 이용하면 하나의 ElasticSearch 패키지를 가지고 여러개의 ES 를 생성할 수 있다.

설치 계획

설치 계획은 다음과 같다.

  • Master Node: 3 개
  • Data Node: 2 개

Master 설치

설치는 ElasticSearch 멀티 인스턴스를 이용한다. 각각의 인스턴스 디렉토리명은 다음과 같다.

  • es-master-1, es-master-2, es-master-3

먼저 es-master-1 생성해 보자. 디렉토리를 생성한다.

mkdir -p es-master-1/{bin,lib,data,logs,tmp,var}
cp -a elasticsearch-7.13.2/config es-master-1/
ls -lh es-master-1/
total 0
drwxrwxr-x. 2 elastic elastic   6 Jul  6 23:03 bin
drwxr-xr-x. 3 elastic elastic 199 Jul  6 22:57 config
drwxrwxr-x. 2 elastic elastic   6 Jul  6 23:03 data
drwxrwxr-x. 2 elastic elastic   6 Jul  6 23:03 lib
drwxrwxr-x. 2 elastic elastic   6 Jul  6 23:03 logs
drwxrwxr-x. 2 elastic elastic   6 Jul  6 23:03 tmp
drwxrwxr-x. 2 elastic elastic   6 Jul  6 23:03 var

설정은 config 디렉토리에 elasticsearch.yml 을 다음과 같이 편집한다.

cluster.name: es-cluster-1
node.name: es-master-1
node.roles:
  - master
path.data: /home/elastic/es-master-1/data
path.logs: /home/elastic/es-master-1/logs
network.host: 192.168.96.40
http.port: 9201
transport.port: 9301
discovery.seed_hosts:
  - 192.168.96.40:9301
  - 192.168.96.40:9302
  - 192.168.96.40:9303
cluster.initial_master_nodes:
  - es-master-1
  - es-master-2
  - es-master-3

포트를 달리하면서 es-master-2, es-master-3 도 세팅을 해준다.

Data 노드 설치

es-master-1 을 복사해서 es-data-1, es-data-2 두개를 만든다. es-data-1 의 설정은 다음과 같다.

cluster.name: es-cluster-1
node.name: es-data-1
node.roles:
  - data
path.data: /home/elastic/es-data-1/data
path.logs: /home/elastic/es-data-1/logs
network.host: 192.168.96.40
http.port: 9204
transport.port: 9304
discovery.seed_hosts:
  - 192.168.96.40:9301
  - 192.168.96.40:9302
  - 192.168.96.40:9303
cluster.initial_master_nodes:
  - es-master-1
  - es-master-2
  - es-master-3

startup.sh, shutdown.sh 스크립트

startup.sh 스크립트는 다음과 같다.

#!/bin/sh
export ES_HOME=/home/elastic/elasticsearch-7.13.2
export ES_PATH_CONF=/home/elastic/es-master-1/config
export PID_DIR=/home/elastic/es-master-1/var/run
export ES_TMPDIR=/home/elastic/es-master-1/tmp
/home/elastic/elasticsearch-7.13.2/bin/elasticsearch -p ${PID_DIR}/es-master-1.pid -d

shutdown.sh 스크립트는 다음과 같다.

#!/bin/sh
export PID_DIR=/home/elastic/es-master-1/var/run
/usr/bin/pkill -F ${PID_DIR}/es-master-1.pid

위 스크립트를 각 인스턴스 bin 디렉토리에 넣고 경로를 수정해서 실행하면 된다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다