Elastic Search의 어느버전부터 인지는 정확하지 않지만,

초기설정은 외부에서 접근이 불가능 하고, 로컬에서만 접속 가능 하도록 설정 되어있다.

보안때문이지 않을까 싶다.


ElasticSearch는 기본적으로 9200/tcp 포트를 사용하도록 되어 있으나,

본인은 포트를 39200/tcp 으로 변경하여 사용한다.


그래서, netstat 를 쳐보면 아래와 같이 로컬IP만 LISTEN 하고 있다.

netstat -na -t | grep 39200

tcp        0      0 ::ffff:127.0.0.1:39200      :::*                        LISTEN      

tcp        0      0 ::1:39200                   :::*                        LISTEN       


위와 같이 되면 로컬에서만 접속가능 하기 때문에 공극적으로는

[root@DEV-SCOWAS01 ~]# netstat -na -t | grep 39200

tcp        0      0 :::39200                    :::*                        LISTEN      

[root@DEV-SCOWAS01 ~]#  


":::39200" 이나 "0.0.0.0:39200" 으로 LISTEN을 하고 있어야

외부에서 접근 할 수 있다.


1. 환경설정 파일 수정 (config/elasticsearch.yml )

항목 

값 

비고 

 cluster.name

 okayjava_seach

 cluster는 향후 설명하겠지만, 여러대의 서버로 클러스터링 할때 사용된다.

그래서, 프로젝트명이나 회사명등을 입력 하면된다. 

본인은 okayjava_search 로 하였다.

 node.name

 WAS01

 클러스터링(여러대의 서버에서 분산처리) 할때  각 노드의 identify 가 된다. cluster.name을 갖고있는 ES내에서 유니크하면된다.

동일서버에 여러인스턴스를 생성하지 않는 경우 HOST명으로 한는것이 문안 할것 같다.

 network.host

 0.0.0.0

 호스트에 여러개의 NIC가 설치된 경우 특정 NIC로 들어오는것만 허용할 수도 있다.

"0.0.0.0" 은 any nic 라고 할 수 있다.

공식홈페지의 레퍼런스에서는 아래표와 같이 설명하고 있다.

 http.port

 39200

 기본은 9200이지만 바꿨다. 


 항목

값 

_[networkInterface]_

Addresses of a network interface, for example _en0_.

_local_

Any loopback addresses on the system, for example 127.0.0.1.

_site_

Any site-local addresses on the system, for example 192.168.0.1.

_global_

Any globally-scoped addresses on the system, for example 8.8.8.8.

위와 같이 하거나, NIC에 할당된 IP를 적어도 무관한다.



2. 커널파라메터 변경(http://okky.kr/article/364924 참고)

하나 하나가 정확히 뭘 의미 하는지 설명하려면 오래 걸리니 적당히 구글링을 해보면 나올것 같다.

운영하면서 적절히 조정하면서 사용하여야 한다.


vi /etc/security/limits.conf

아래부분을 추가 입력하고 저장한다.

was hard nofile 65536

was soft nofile 65536

was hard nproc 65536

was soft nproc 65536


was는 ES를 구동시키는 계정으로 변경



echo 1048575 > /proc/sys/vm/max_map_count

sysctl -w fs.file-max=65536

echo 65536 > /proc/sys/fs/file-max


reboot



위와 같이 설정후 리부팅하고, ES를 재구동 시키면 된다.


이상.

끝.




'linux' 카테고리의 다른 글

ElasticSearch 5.1.1 설치  (0) 2017.03.22
ElasticSearch 5.1.1 한글형태소(kr_analize) 지원(동전한닢)  (0) 2017.02.28
Apache + PHP + Oracle  (0) 2015.02.28
CentOS NFS 설정  (0) 2015.02.27
Linux shell(1분동안 계속 반복 수행)  (0) 2015.02.27



Elastic Search(이하 ES)는 설치는 아주 간단하다.

소스를 받아서 풀고, 실행만 시켜주면된다. 굳이 root권한도 필요 없었다.


소스를 다운 받는 방법은 아래를 참고하여 다운 받도록한다.

2017/02/28 - [linux] - ElasticSearch 5.1.1 한글형태소(kr_analize) 지원(동전한닢)


만일 한글형태소검색이 필요업다면, ES 버전에 제한없이 홈페이지에서 다운 받아도 무관한다.

(ES 홈페이지 : https://www.elastic.co/kr/)


다운받아서 tar 푸는 방법은 다 알것이기 때문에 추가 설명은 필요 없을 것이고.

만일 이 정도의 리눅스 상식이 없는 분이라면 ES 사용/운영은 어려울 것이다.

리눅스를 좀 더 공부하고, 재접근 하거나 주면지인의 도움을 받도록 하는것이 좋을것 같다.


나는 /app/local/ 밑에 풀었음.

가상환경이라 LVM을 사용하기 때문에 /usr/local 이런식으로 하지는 않앗고..

가상환경 예기는 나중에 기회가 되면 그때 보는걸로..


[was@DEV-SCOWAS01 elasticsearch-5.1.1]$ pwd

/app/local/elasticsearch-5.1.1

[was@DEV-SCOWAS01 elasticsearch-5.1.1]$ ll

합계 56

-rw-r--r--  1 was was 11358 2016-12-06 21:34 LICENSE.txt

-rw-r--r--  1 was was   150 2016-12-06 21:34 NOTICE.txt

-rw-r--r--  1 was was  9108 2016-12-06 21:34 README.textile

drwxr-xr-x  2 was was  4096 2017-03-22 14:03 bin

drwxr-xr-x  3 was was  4096 2017-03-22 14:03 config

drwxrwxr-x  3 was was  4096 2017-03-22 14:03 data

drwxr-xr-x  2 was was  4096 2016-12-06 21:39 lib

drwxr-xr-x  2 was was  4096 2017-03-22 14:03 logs

drwxr-xr-x 12 was was  4096 2016-12-06 21:39 modules

drwxr-xr-x  2 was was  4096 2016-12-06 21:39 plugins

[was@DEV-SCOWAS01 elasticsearch-5.1.1]$  



실행방법
데몬 형태(-d)로 띄워 주면된다.

bin/elasticsearch -d 

이후에 logs 폴더내에서 로그 파일을 보면서 디버깅을 하면된다.

아주 간단하다.


간혹 아래와 같이 오류 나는 경우가 있다.

Warning: Ignoring JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8

Please pass JVM parameters via ES_JAVA_OPTS instead

[was@DEV-SCOWAS01 bin]$ Exception in thread "main" java.lang.UnsupportedClassVersionError: org/elasticsearch/bootstrap/Elasticsearch : Unsupported major.minor version   .0

        at java.lang.ClassLoader.defineClass1(Native Method)

        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)

.... 


이런 경우는 JAVA의 버전이 맞지 않기 때문이다.

1. ES는 JRE 1.8.x가 필요한데 1.7이나 1.6일 경우

2. $JAVA_HOME 의 경로와 $PATH에서의 경로가 다른 경우


이런 경우 시스템에서 하위버전(1.8 미만)을 사용하고 있기 때문에 JAVA_HOME을 함부로 변경 하기가 쉽지 않다.

ES를 구동할때만 JAVA 1.8을 사용하도록 수정 하자.

따라서,  bin/elasticsearch 파일을 열어서 JAVA_HOME 위치를 변경 하도록 한 줄을 추가 해주면 된다.


[was@DEV-SCOWAS01 elasticsearch-5.1.1]$ vi bin/elasticsearch

#!/bin/bash

.... 중략 ...

# Check to see if you are trying to run this without building it first. Gradle

# will replace the project.name with _something_.


JAVA_HOME=/app/local/jdk1.8.0_91


if echo 'distribution' | grep project.name > /dev/null ; then 


오늘은 여기까지 끝.






+ Recent posts