Elastic Stack

Elasticsearch-7.4.2, Ubuntu Server-18.04에 설치하기

iKay 2019. 11. 27. 01:29
반응형

 

Elasticsearch 7.4.2를 Ubuntu Server 18.04에 설치할 일이 생겨서 정리해본다.

블로그 설명이 정확하지 않다면 설치 방법은 공식사이트(https://www.elastic.co/guide/en/elasticsearch/reference/current/deb.html)를 보면 된다.

 

Elasticsearch

 

1. 설치파일 다운로드

 

우선 설치파일을 다운로드(https://www.elastic.co/kr/downloads/elasticsearch) 받는다.

 

Elasticsearch 설치파일은 OS에 따라 다른데, 이 포스팅은 Ubuntu Server 18.04에 설치할 것이라서 Debian packag를 받아야 한다. Linux package도 있는데 이것을 받아서 설치하지 않도록 주의하자. 

 

또 한 가지 주의할 점은 OS와 호환되는 버전을 확인하는 것이다. 아래 링크의 Elastic Support Matrix를 보고 적합한 환경에 알맞는 버전의 Elasticsearch를 설치하도록 하자.

https://www.elastic.co/kr/support/matrix

 

Elastic Support Matrix | Elasticsearch

The tables below display platform and software configurations that are eligible for support under our subscription offerings. Learn more about our Support Policy and product End of Life policy. Don't see your favorite platform, JVM, or browser? Contact us.

www.elastic.co

 

최근 버전부터 Elasticsearch는 OpenJDK를 포함하고 있다고 한다. 그래서 따로 OpenJDK를 설치하지 않아도 된다. 따라서 OpenJDK를 설치하는 과정은 생략한다. 

 

본론으로 돌아와서, 웹 페이지로부터 패키지를 직접 다운받고, checksum을 한 후 패키지를 설치한다. 

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.2-amd64.deb // 패키지(.deb)를 받는다
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.2-amd64.deb.sha512 // checksum 파일을 받는다
$ shasum -a 512 -c elasticsearch-7.4.2-amd64.deb.sha512 // checksum한다. 'elasticsearch-7.4.2-amd64.deb: OK' 라고 출력되면 정상
$ sudo dpkg -i elasticsearch-7.4.2-amd64.deb // 다운받은 패키지를 설치한다.

 

2. 설정파일 수정

설정파일을 간단히 살펴보자.

$ sudo vi /etc/elasticsearch/elasticsearch.yml

 

파일을 열어보면 아래와 같다. 주의할 점은 반드시 `xpack.ml.enable: false`를 해주자. 기본값이 true인 것 같은데 이것 때문에 실행이 되지 않을 수도 있다.

# /etc/elasticsearch/elasticsearch.yml

...

#network.host: 192.168.0.1 #network host 주소를 설정하지 않으면 localhost에서만 접속가능

...

#http.port: 9200 # http port를 설정하지 않으면 9200이 기본값

...

xpack.ml.enabled: false # machine learning 기능을 사용하지 않음. plugin을 설치하지 않아서인지 이것을 추가하지 않으면 에러가 발생 

Elasticsearch를 더 정교하기 다루기 위해 설정파일을 더 만져야 하고 이에 대해서는 더 학습이 필요하다. 다음번에 따로 정리할 필요하 있을 것 같다.  

3. 실행

아래와 같이 입력하면 Elasticsearch가 위에서 설정한 host, port를 bind해서 실행한다. Elasticsearch는 http REST API로 통신하기 때문에 host, port가 필요한 것이다. 

$ sudo -i service elasticsearch start

 

Elasticsearch가 실행된 것을 확인하기 위해 아래와 같이 상태를 출력했을 때, Loaded가 정상적으로 loaded가 나와야 한다.

$ sudo -i service elasticsearch status


   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-11-26 12:01:02 UTC; 4h 14min ago
     Docs: http://www.elastic.co
 Main PID: 32625 (java)
    Tasks: 50 (limit: 2272)
   CGroup: /system.slice/elasticsearch.service
           └─32625 /usr/share/elasticsearch/jdk/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Des.networkaddress.cache.ttl=60 -De

Nov 26 11:59:52 kay systemd[1]: Starting Elasticsearch...
Nov 26 11:59:55 kay elasticsearch[32625]: OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
Nov 26 12:01:02 kay systemd[1]: Started Elasticsearch.

 

 

 만약 에러가 난다면 아래와 같이 로그를 확인해보면 디버깅에 도움될 것이다. 아래는 위에서 잠깐 설명한 `xpack.ml.enable: false`에 대한 내용이다.

$cat sudo /var/log/elasticsearch/elasticsearch.log


# 에러 메시지

...

org.elasticsearch.ElasticsearchException: Failure running machine learning native code. This could be due to running on an unsupported OS or distribution, missing OS libraries, or a problem with the temp directory. To bypass this problem by running Elasticsearch without machine learning functionality set [xpack.ml.enabled: false].
	at org.elasticsearch.xpack.ml.MachineLearning.createComponents(MachineLearning.java:524) ~[?:?]
	at org.elasticsearch.node.Node.lambda$new$9(Node.java:450) ~[elasticsearch-7.4.2.jar:7.4.2]
	at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:271) ~[?:?]
    
...

 

4. 실행 확인

아래와 같이 curl로 Elasticsearch를 호출했을 때, 간단한 정보를 출력한다면 정상적으로 설치된 것이다. 

$ curl -XGET "http://localhost:9200"


{
  "name" : "kay",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "ueU-m14pTwmqWfLOHn-jZg",
  "version" : {
    "number" : "7.4.2",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "2f90bbf7b93631e52bafb59b3b049cb44ec25e96",
    "build_date" : "2019-10-28T20:40:44.881551Z",
    "build_snapshot" : false,
    "lucene_version" : "8.2.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

 

5. 결론

Elasticsearch를 Ubuntu Server 18.04를 설치해봤다. 소개한대로 설치방법과 HTTP REST API에 익숙하다면 사용법은 어렵지 않을 것이다.

 

Elasticsearch를 실무에 적용시키디 위해서는 다른 저장소에 비해 어떤 장점이 있는지, 인프라를 어떻게 구성해서 사용해야 하는지, 쿼리는 어느정도 지원하는지, 설정파파일의 값들은 어떤 의미를 가지는지 등에 대해 더 학습이 필요해 보인다.   

 

반응형