ElasticSearch Multi Instance 설치.
ElasticSearch 도 Tomcat 과 같이 Multi Instance 설치를 지원한다. 이는 ES_HOME의 쉘 환경 변수를 지정함으로써 실현된다. Tomcat 의 경우에는 CATALINA_HOME, CATALINA_BASE 였다. 대신 ElasticSearch 에서는 ES_BASE 가 없다.
ENV 변수
ElasticSearch 에서 사용하는 환경변수는 다음과 같다.
- ES_HOME: elasticsearch 바이너리 설치 위치.
- ES_PATH_CONF: elasticsearch 설정파일이 있는 디렉토리 위치.
- ES_TMPDIR: elasticsearch 임시 디렉토리
위 두 변수를 가지고 MultiInstance 구성을 할 수있다.
ES_HOME 설치
ES_HOME 설치는 elasticsearch 의 바이너리를 압축해제함으로써 끝이 난다.
1 2 |
]# tar xvzf elasticsearch-6.4.2.tar.gz -C /opt ]# ln -s elasticsearch-6.4.2 elasticsearch |
/opt 디렉토리에 압축을 해제한 후에 심볼릭링크를 걸어준다.
ES_BASE 생성
ES_BASE 는 ElasticSearch 에서 공식적으로 지원하는 변수는 아니다. 하지만 Tomcat 의 CATALINA_BASE 처럼 CATALINA_HOME 을 기반으로 구성되는 Instance 의 위치를 나타내고자 내가 사용하는 변수다.
여기서 ES_BASE 는 /home/systemv/masternode1 으로 하도록 하겠다.
이제 ES_BASE 디렉토리를 생성해 준다.
1 2 |
]$ mkdir -p masternode1/{data,lib,logs,tmp,var} ]$ cp -a /opt/elasticsearch/config . |
conf 디렉토리만 복사해 온다.
그리고 conf 디렉토리에서 elasticsearch.yml, jvm.options 파일을 편집해준다.
elasticsearch.yml
주요한 설정은 디렉토리 설정이다.
1 2 |
path.data: /home/systemv/masternode1/data path.logs: /home/systemv/masternode1/logs |
jvm.options
여기서는 gc 로그 디렉토리 위치를 ‘/home/systemv/masternode1/logs’ 로 변경해준다. 그리고 -Djava.io.tmpdir=${ES_TMPDIR} 로 지정해 준다.
ES_BASE 실행
실행은 다음과 같이 환경변수를 지정함으로써 실행시킬 수 있다.
1 2 3 4 5 |
]$ export ES_HOME=/opt/elasticsearch ]$ export ES_PATH_CONF=/home/systemv/masternode1/config ]$ export PID_DIR=/home/systemv/masternode1/var/run ]$ export ES_TMPDIR=/home/systemv/masternode1/tmp ]$ /opt/elasticsearch/bin/elasticsearch -p ${PID_DIR}/masternode1.pid |
위와같이 하면 ES_BASE 를 기반으로 ElasticSearch 가 동작하게 된다.
ElasticSearch 의 패키지 하나만 가지고 여러개를 동시에 실행시킬 수 있다는 장점이 있다.