Elasticsearch 7.4.2를 Ubuntu Server 18.04에 설치할 일이 생겨서 정리해본다.
블로그 설명이 정확하지 않다면 설치 방법은 공식사이트(https://www.elastic.co/guide/en/elasticsearch/reference/current/deb.html)를 보면 된다.
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
최근 버전부터 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를 실무에 적용시키디 위해서는 다른 저장소에 비해 어떤 장점이 있는지, 인프라를 어떻게 구성해서 사용해야 하는지, 쿼리는 어느정도 지원하는지, 설정파파일의 값들은 어떤 의미를 가지는지 등에 대해 더 학습이 필요해 보인다.
'Elastic Stack' 카테고리의 다른 글
Elasticsearch, Cluster는 어떻게 구성돼 있을까? (0) | 2019.12.27 |
---|---|
Elasticsearch, 효율적인 index 보관을 위해 Hot-Warm architecture 도입 (0) | 2019.12.20 |
Elasticsearch-7.5.0, data backup, snapshot, restore (0) | 2019.12.16 |
Elasticsearch-7.4.2, Docker container로 띄우기 (0) | 2019.11.28 |