본문 바로가기

Programming/ElasticSearch

[Elasticsearch] 하나의 컴퓨터에 여러 개의 Node 실행시키기

들어가며...

Elasticsearch의 shard와 replica 동작을 확인하기 위해 하나의 컴퓨터에서 여러개의 Node를 실행할 필요가 있을 수 있습니다. 이를 테스트하기 위해서 개발환경에서 여러 개의 Node를 실행하는 방법에 대해서 알아보도록 하겠습니다.

 

  • Table of Contents
    • Node별로 설정값 다르게 하여 Elasicsearch 실행하기
    • Kibana로 확인하기

Node별로 설정값 다르게 하여 Elasticsearch 실행하기

Elasticsearch를 별다른 설정없이 실행하면 default 설정값으로 실행하게 됩니다. 하여 설정값의 변경없이 두 개의 Node를 실행할 경우 충돌이 발생하게 됩니다(포트번호, data 파일, log 파일 등). 따라서 하나의 컴퓨터에서 여러 개의 Node를 실행하고자 할 경우 적절한 설정값들을 지정하여 주어야 합니다. 본 글에서는 동일한 Cluster에 서로다른 Node 두 개를 실행할 것이며 이를 위해 아래의 설정 값들을 지정하여 elasticsearch를 각각 실행할 것입니다.

설정값 설명
cluster.name cluster의 이름 (동일한 값으로 설정하여야 replica의 동작을 확인할 수 있다.)
node.name 서로다른 Node명으로 설정한다. 본글에서는 "node-1", "node-2"로 사용토록 할 것이다.
path.data 해당 Node의 data가 적재되는 경로로 본 글에서는 "ES_HOME(elasticsearch가 설치된 디렉토리)/node1/data"의 형태로 설정할 것이다.
path.logs 해당 Node의 로그가 적재되는 경로로 본 글에서는 "ES_HOME/node1/logs"의 형태로 설정할 것이다.
http.port 기본값은 9200이나 본 글에서는 각각 9201, 9202로 설정할 것이다.

 

위에 설명한 5개의 설정 값을 지정하여 elasticsearch를 실행하면 하나의 컴퓨터에서 여러 개의 Node를 실행할 수 있습니다. 각각의 설정 값들은 겹치지 않는 범위 내에서 알맞은 값으로 설정하시면 됩니다.

elasticsearch 실행 시 configuration값을 지정하는 옵션은 "-E"이며 아래의 명령어로 확인할 수 있습니다.

$ elasticsearch -h

 

 

다음은 위 5개의 설정 값을 지정하여 실행하는 예시입니다.

$ elasticsearch -Ecluster.name=my-application -Enode.name=node-1 -Epath.data=$ES_HOME/node1/data -Epath.logs=$ES_HOME/node1/logs -Ehttp.port=9201

 

path.data와 path.logs의 $ES_HOME에는 본인의 elasticsearch 설치 홈경로를 넣으시면 됩니다. 다음은 두 번째의 Node를 실행합니다.

$ elasticsearch -Ecluster.name=my-application -Enode.name=node-2 -Epath.data=$ES_HOME/node2/data -Epath.logs=$ES_HOME/node2/logs -Ehttp.port=9202

Kibana로 확인하기

kibana로 shard의 상태를 확인하기 전에 kibana실행도 별도의 옵션이 필요합니다. Node의 개수가 두개이므로 kibana 실행 시 해당 Node들의 endpoint들을 설정하여야 합니다.

우선 kibana 사용법을 아래의 명령어로 확인하여 봅니다.

$ kibana -h

 

elasticsearch 실행 시 설정한 port값을 설정하여 kibana를 실행하면 됩니다.

$ kibana -e http://localhost:9201,http://localhost:9202

정상적으로 kibana가 실행되었으면 브라우저에서 localhost:5601로 접속한 후 "Dev Tools" 메뉴로 이동한 후 아래와 같이 "GET /_cat/shards?v" 명령어를 입력한 후 실행시켜 봅니다.

결과화면의 내용은 위 그림의 내용과 다를 수 있습니다. 중요한 것은 Replica shard가 생성되었다는 것입니다. 참고로 kibana에서 생성하는 index들은 "auto_expand_replicas" 설정 값이 "0-1"로 되어 있어 replica shard를 할당할 node가 없을 경우 primary shard만 생성하였다가 replica를 할당할 node가 생겼을 경우 자동으로 replica shard를 생성하게 됩니다.

 

아래의 명령어로 각각의 index에 대한 설정 값을 확인할 수 있습니다.

 


U2ful은 입니다. @U2ful Corp.