Category: ElasticSearch

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 의 바이너리를 압축해제함으로써 끝이 난다.

/opt 디렉토리에 압축을 해제한 후에 심볼릭링크를 걸어준다.

ES_BASE 생성

ES_BASE 는 ElasticSearch 에서 공식적으로 지원하는 변수는 아니다. 하지만 Tomcat 의 CATALINA_BASE 처럼 CATALINA_HOME 을 기반으로 구성되는 Instance 의 위치를 나타내고자 내가 사용하는 변수다.

여기서 ES_BASE 는 /home/systemv/masternode1 으로 하도록 하겠다.

이제 ES_BASE 디렉토리를 생성해 준다.

conf 디렉토리만 복사해 온다.

그리고 conf 디렉토리에서 elasticsearch.yml, jvm.options 파일을 편집해준다.

elasticsearch.yml

주요한 설정은 디렉토리 설정이다.

jvm.options

여기서는 gc 로그 디렉토리 위치를 ‘/home/systemv/masternode1/logs’ 로 변경해준다. 그리고 -Djava.io.tmpdir=${ES_TMPDIR} 로 지정해 준다.

ES_BASE 실행

실행은 다음과 같이 환경변수를 지정함으로써 실행시킬 수 있다.

위와같이 하면 ES_BASE 를 기반으로 ElasticSearch 가 동작하게 된다.

ElasticSearch 의 패키지 하나만 가지고 여러개를 동시에 실행시킬 수 있다는 장점이 있다.

 

ElasticSearch 시스템 설정

ElasticSearch 를 실행하기 위해서는 기본적으로 리눅스 시스템의 설정을 변경해줄 필요가 있다. 이는 ElasticSearch 문서에도 아주 잘 나와 있다.

Max Open File

리눅스 시스템은 사용자별로 최대 파일 오픈 개수를 제한 하고 있다. 이를 늘려주기 위해서는 /etc/security/limits.conf 파일에서 늘려줄 수 있다.

맨 앞에 문자열은 시스템 계정이며 맨 뒤에 숫자는 오픈가능한 최대치 값이다. ElasticSearch 에서는 65536 값을 권장하고 있다.

파일에 저장하고 계정을 재로그인하면 바로 적용된다.

Memlock 해제.

Memory Lock 에 대해서 무제한으로 해제를 해줘야 한다.

이것 역시 /etc/security/limits.conf 파일에 다음과 같이 설정하면 된다.

Virtual Memory

ElasticSearch 를 문제 없이 운영하기 위해서는 이를 조정해 줄 필요가 있다. 이는 리눅스 커널 파라메터값으로 재부팅 없이 조정이 가능하다.

시스템이 재부팅 되면 이 값을 다시 설정해줘야 함으로 이를 /etc/sysctl.conf 파일에 저장한다.

이렇게 파일에 저장한 후에 다음과 같이 하면 적용된다.

적용하기 위해서는 root 계정이 있어야 한다.