OS/Linux

ElasticSearch 설치

아르비스 2016. 4. 6. 09:13

Linux(Centos)에서 ElasticSearch 설치하기.


1. Download

https://www.elastic.co/downloads/elasticsearch


https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.1/elasticsearch-2.3.1.tar.gz


current version은 2.3.1 임.


tar -zxvf elasticsearch-2.3.1.tar.gz



2. 실행 및 command


1) 기본 실행

 bin/elasticsearch


2) 백그라운드 실행 및 log 확인


 bin/elasticsearch -d

 cat logs/elasticsearch.log 


3) 설치 정보 확인


 curl -XGET http://localhost:9200 


4) 실행중인 ES Process 검색


 ps -ef | grep elasticsearch 


5) Elasticsearch 종료


 kill {PID}


6) -p 옵션으로 Process ID 저장


 bin/elasticsearch -d -p es.pid

 cat es.pid


3. Batch Process


 1) startup.sh


 echo 'bin/elasticsearch -d -p es.pid' >  start.sh


 2) stop.sh


 echo 'kill 'cat es.pid'' > stop.sh 


4. 환경설정

1) Memory

#> vi bin/elasticsearch.in.sh

...

if [ "x$ES_MIN_MEM" = "x" ]; then

    ES_MIN_MEM=256m

fi

if [ "x$ES_MAX_MEM" = "x" ]; then

    ES_MAX_MEM=1g

fi

if [ "x$ES_HEAP_SIZE" != "x" ]; then

    ES_MIN_MEM=$ES_HEAP_SIZE

    ES_MAX_MEM=$ES_HEAP_SIZE

fi

...

memory는 min 512m / max 2g 로 변경가능


2) 클러스터

클러스터 설정확인


 curl -XGET localhost:9200/_cluster/stats?pretty=true 


- 설정

(1) port

vi config/elasticsearch.yml

# ---------------------------------- Network ----------------------------------

#

# Set the bind address to a specific IP (IPv4 or IPv6):

#

# network.host: 192.168.0.1

#

# Set a custom port for HTTP:

#

http.port: 9200



(2) Paths 변경

vi config/elasticsearch.yml

# ----------------------------------- Paths -----------------------------------

#

# Path to directory where to store the data (separate multiple locations by comma):

#

# path.data: /path/to/data

#

# Path to log files:

#

# path.logs: /path/to/logs



4. Plugin 설치


https://www.elastic.co/guide/en/elasticsearch/plugins/2.3/installation.html 참조

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-plugins.html 참조


1) head 설치


 bin/plugin install mobz/elasticsearch-head 


 인터넷이 안되는곳으로 github에서 source 받아서 빌드하거나, 이미 빌드된 file중

 "_site" 폴더를 plugins/ 하위에 넣어주면 된다.


==> 이렇게 하면 에러난다.

ㅠㅠ

그래서 정식으로 설치하되, plugin file을 받아서 install 하는 방법으로..


 bin/plugin install file:/path/to/my-plugin-1.0.0.zip


# ./plugin install file:/home/ioffice/elasticsearch-head-master.zip



5. Multi node on single machine

 두개 이상의 Elastic Search node를 하나의 machine에 올릴 경우의 설정


yml 파일을 수정한경우


$ bin/elasticsearch -Des.config=$ES_HOME/config/elasticsearch.1.yml 

$ bin/elasticsearch -Des.config=$ES_HOME/config/elasticsearch.2.yml

... 


위와같이 별도 config 파일을 실행(loading) 하면된다.

이때 주의사항. (H/W 적으로는 32GB 이상을 권장하네요..)


  • Each yml will point to the same cluster name.
  • It will be helpful to specify meaningful node names
  • Use explicit port numbers for each node so that they are predictable (eg. http.port andtransport.tcp.port).
  • Each node should have its own path.* directories (eg. path.datapath.logpath.work,path.plugins) so the nodes will not end up having conflicting folder locations for data, plugins, logs, etc..



혹은


$ bin/elasticsearch -Des.node.data=false -Des.node.master=true -Des.node.name=NoData
$ bin/elasticsearch -Des.node.data=true -Des.node.master=false -Des.node.name=DataOne
$ bin/elasticsearch -Des.node.data=true -Des.node.master=false -Des.node.name=DataTwo

위처럼 직접 config를 지정할 수 도 있음.


[참조]

https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html 


'

중요한 요점.

꼭 변경해야 할 항목.


[config/elasticsearch.yml]

 - network.host : {host IP}

 - path.data  / path.logs    {log와 data 저장경로}

 - transport.tcp.port : { node communication port}

 - http.port : {listen for http traffic}

 - clustername :  { 같은 cluster 노드이면, 같게,, 다른 cluster 노드이면 다르게설정}

 - node.name : {꼭 다르게 설정}


sample


 cluster.name: cluster_dev

 node.name: node1

 node.master : true

 node.data : true


 path.data: /block/es1/data

 path.logs: /block/es1/logs

 network.host: 127.0.0.1

 transport.tcp.port: 9300  

 http.port: 9200



기타


- Master node  ;  node.master=true, node.data=false

   : Cluster node를 control하는 master node 역할 지정

- Client node : node.master=fasle, node.data=false

   : data를 저장하지 않고, router기능과 search 기능만 담당함.


- data.node : true로 설정시, data를 저장하며, CRUD, search 등의 operation 가능



(node.master/node.data Default TRUE )