삽질/개발,엔지니어링

Elasticsearch 설치

maengis 2022. 4. 9. 22:08

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

 

Download Elasticsearch

Download Elasticsearch or the complete Elastic Stack (formerly ELK stack) for free and start searching and analyzing in minutes with Elastic.

www.elastic.co

Linux X84_64 다운로드

 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.1.2-linux-x86_64.tar.gz
 tar -xvf elasticsearch-8.1.2-linux-x86_64.tar.gz
[root@localhost bin]# ./elasticsearch

[2022-04-09T22:07:51,335][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [localhost.localdomain] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[elasticsearch-8.1.2.jar:8.1.2]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:157) ~[elasticsearch-8.1.2.jar:8.1.2]
        at org.elasticsearch.common.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:81) ~[elasticsearch-8.1.2.jar:8.1.2]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112) ~[elasticsearch-cli-8.1.2.jar:8.1.2]
        at org.elasticsearch.cli.Command.main(Command.java:77) ~[elasticsearch-cli-8.1.2.jar:8.1.2]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:122) ~[elasticsearch-8.1.2.jar:8.1.2]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80) ~[elasticsearch-8.1.2.jar:8.1.2]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) ~[elasticsearch-8.1.2.jar:8.1.2]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:183) ~[elasticsearch-8.1.2.jar:8.1.2]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:358) ~[elasticsearch-8.1.2.jar:8.1.2]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:166) ~[elasticsearch-8.1.2.jar:8.1.2]
        ... 6 more
uncaught exception in thread [main]
java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103)
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:183)
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:358)
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:166)
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:157)
        at org.elasticsearch.common.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:81)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112)
        at org.elasticsearch.cli.Command.main(Command.java:77)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:122)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80)
For complete error details, refer to the log at /home/elasticsearch-8.1.2/logs/elasticsearch.log
2022-04-09 13:07:51,699563 UTC [10532] INFO  Main.cc@112 Parent process died - ML controller exiting

냅다 실행 했더니 root로는 실행하면 안 된다고 한다.

소유자 변경하고 변경한 소유자로 실행

useradd es_user
chown -R es_user.es_user /home/elasticsearch

 

[root@localhost bin]# su - es_user
[es_user@localhost ~]$ /home/elasticsearch/bin/elasticsearch -d
netstat-nlp
...
tcp6       0      0 192.168.0.31:9200       :::*                    LISTEN      28308/java
tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      28308/java
tcp6       0      0 ::1:9200                :::*                    LISTEN      28308/java
...

9200 포트에 떠 있는데 curl로 접근해도 원하는 반응이 안 나옴.

[es_user@localhost ~]$ curl -X GET localhost:9200
curl: (52) Empty reply from server

찾아보니 https로 해야 된다고 해서 설정을 바꾸기로 했다.

config/elasticsearch.xml에서 아래 항목이 true로 되어 있어서 false로 변경 했다.

# Enable security features
xpack.security.enabled: false

기존에 실행 했던 걸 kill하고 다시 실행 했는데 접근이 안 되길래 데몬 말고 그냥 실행을 하고 로그를 보니

java.lang.IllegalStateException: failed to obtain node locks, tried [/home/elasticsearch/data]; maybe these locations are not writable or multiple nodes were started on the same data path?

검색을 해보니 elasticsearch가 실행 중인 상태에서 실행을 했을 때 나오는 경우가 있다고 해서 확인을 해보니 실행이... 되어 있음. (???)

[root@localhost home]# curl -X GET localhost:9200
{
  "name" : "localhost.localdomain",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "U44XUz8ySVe7bGCAwmZp7Q",
  "version" : {
    "number" : "8.1.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "31df9689e80bad366ac20176aa7f2371ea5eb4c1",
    "build_date" : "2022-03-29T21:18:59.991429448Z",
    "build_snapshot" : false,
    "lucene_version" : "9.0.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

여튼 잘 되는 거 확인.

팀 주요 업무에 쓰임에도 조회 말곤 다른 건 접할 기회가 많지 않아서 일단 설치부터 해봤다.

반응형