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 를 부여할 수 있다. 형식은 다음과 같다.
1 |
node.roles: [master, data] |
roles 지정을 하지 않을 경우에 위에 나열한 모든 roles 을 수행할 수 있다.
Single-node
ElasticSearch 는 다중 노드를 필요로 한다. 이것은 강제 사항으로 적어도 2개 이상을 필요하게 된다. 하지만 개발을 위해서라면 하나가지고 할 수 있어야 하는데, 이럴때는 다음과 같이 해준다.
1 |
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 생성해 보자. 디렉토리를 생성한다.
1 2 3 4 5 6 7 8 9 10 11 |
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 을 다음과 같이 편집한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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 의 설정은 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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 스크립트는 다음과 같다.
1 2 3 4 5 6 |
#!/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 스크립트는 다음과 같다.
1 2 3 |
#!/bin/sh export PID_DIR=/home/elastic/es-master-1/var/run /usr/bin/pkill -F ${PID_DIR}/es-master-1.pid |
위 스크립트를 각 인스턴스 bin 디렉토리에 넣고 경로를 수정해서 실행하면 된다.