我在运行Ubuntu 16.04 LTS的ARM Odroid XU4上安装了ELasticsearch 6和JDK 1.8.0_161。没有错误。
当我尝试将Elasticsearch作为服务启动时,无法在端口9200上连接到localhost,并且服务状态显示为:
~ $ > sudo service elasticsearch status ● elasticsearch.service - LSB: Starts elasticsearch Loaded: loaded (/etc/init.d/elasticsearch; bad; vendor preset: enabled) Active: active (exited) since Mon 2018-01-22 10:43:18 UTC; 9min ago Docs: man:systemd-sysv-generator(8) Jan 22 10:43:18 lego systemd[1]: Starting LSB: Starts elasticsearch... Jan 22 10:43:18 lego systemd[1]: Started LSB: Starts elasticsearch. Jan 22 10:44:07 lego systemd[1]: Started LSB: Starts elasticsearch.
没有日志。不知道在哪里看。nofile限制在中设置为65536 /etc/security/limits.conf。我不知道在其他地方可以找到诊断信息。
/etc/security/limits.conf
虽然,当我通过手动启动Elasticsearch时sudo /usr/shared/elasticsearch/bin/elasticsearch,它可以按预期工作:
sudo /usr/shared/elasticsearch/bin/elasticsearch
~ $ > sudo /usr/share/elasticsearch/bin/elasticsearch [2018-01-22 10:55:55,944][WARN ][bootstrap ] jvm uses the client vm, make sure to run `java` with the server vm for best performance by adding `-server` to the command line [2018-01-22 10:55:56,073][INFO ][node ] [Ariel] version[1.7.3], pid[1126], build[NA/NA] [2018-01-22 10:55:56,074][INFO ][node ] [Ariel] initializing ... [2018-01-22 10:55:56,521][INFO ][plugins ] [Ariel] loaded [], sites [] [2018-01-22 10:55:56,638][INFO ][env ] [Ariel] using [1] data paths, mounts [[/ (/dev/mmcblk0p2)]], net usable_space [54.4gb], net total_space [57.2gb], types [ext4] [2018-01-22 10:56:01,853][INFO ][node ] [Ariel] initialized [2018-01-22 10:56:01,854][INFO ][node ] [Ariel] starting ... [2018-01-22 10:56:02,080][INFO ][transport ] [Ariel] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/192.168.0.103:9300]} [2018-01-22 10:56:02,125][INFO ][discovery ] [Ariel] elasticsearch/FtFOljAORnevIAOAFabptg [2018-01-22 10:56:05,933][INFO ][cluster.service ] [Ariel] new_master [Ariel][FtFOljAORnevIAOAFabptg][lego] [inet[/192.168.0.103:9300]], reason: zen-disco-join (elected_as_master) [2018-01-22 10:56:05,987][INFO ][http ] [Ariel] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/192.168.0.103:9200]} [2018-01-22 10:56:05,988][INFO ][node ] [Ariel] started [2018-01-22 10:56:06,014][INFO ][gateway ] [Ariel] recovered [0] indices into cluster_state
编辑:我尝试设置START_DAEMON=true中/etc/default/elasticsearch,这确实 很 重要,但是也没有成功。深入研究内部设置的值/etc/default/elasticsearch,我发现了这个问题。有关完整解决方案的完整细分,请参阅我的最终答案。
START_DAEMON=true
/etc/default/elasticsearch
正如@Suaro指出的那样:我们的问题与该问题中所讨论的[问题具有几乎相同的症状,并且该线程在第一个链接中重申了START_DAEMON解决方案。这是一个好的开始,但是对我而言,它没有提供全面的解决方案。我仔细研究了权限,堆大小和所有权,以找到最终解决方案。
这些是按照截至2018年1月的Elasticsearch debian安装说明在Ubuntu 16.04上安装Elasticsearch 6的步骤:
ES_HEAP_SIZE=1g
/usr/share/elasticsearch
root
ES_USER=root
ES_GROUP=root
相反,请检查该elasticsearch用户是否在本地,以及是否存在相同名称的组。
elasticsearch
$ cut -d: -f1 /etc/passwd
$ cut -d: -f1 /etc/group
然后,将所有elasticsearch文件夹和资源的所有权更改为elasticsearch用户和组。
$ ~ $ > ll /usr/share/elasticsearch/
total 8.0K drwxr-xr-x 2 elasticsearch 4.0K Jan 22 10:02 bin/ lrwxrwxrwx 1 elasticsearch 18 Dec 24 2015 config -> /etc/elasticsearch/ lrwxrwxrwx 1 elasticsearch 22 Dec 24 2015 data -> /var/lib/elasticsearch/ lrwxrwxrwx 1 elasticsearch 22 Dec 24 2015 logs -> /var/log/elasticsearch/ drwxr-xr-x 2 elasticsearch 4.0K Dec 24 2015 plugins/
$ sudo chown -R elasticsearch:elasticsearch /usr/share/elasticsearch $ sudo chown -R elasticsearch:elasticsearch /etc/elasticsearch/ $ sudo chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/ $ sudo chown -R elasticsearch:elasticsearch /var/log/elasticsearch/
然后,设置的值ES_USER=elasticsearch,并ES_GROUP=elasticsearch在/etc/default/elasticsearch如果他们没有设置已经这样(如果你的诱惑,得出每#4)。
ES_USER=elasticsearch
ES_GROUP=elasticsearch
再试一次…
~ $ > sudo service elasticsearch status
● elasticsearch.service - LSB: Starts elasticsearch Loaded: loaded (/etc/init.d/elasticsearch; bad; vendor preset: enabled) Active: active (exited) since Mon 2018-01-22 20:51:29 UTC; 2min 25s ago Docs: man:systemd-sysv-generator(8) Process: 3133 ExecStop=/etc/init.d/elasticsearch stop (code=exited, status=0/SUCCESS) Process: 3209 ExecStart=/etc/init.d/elasticsearch start (code=exited, status=0/SUCCESS)
~ $ > sudo systemctl restart elasticsearch.service
~ $ > sudo service elasticsearch status ● elasticsearch.service - LSB: Starts elasticsearch Loaded: loaded (/etc/init.d/elasticsearch; bad; vendor preset: enabled) Active: active (running) since Mon 2018-01-22 20:54:05 UTC; 2s ago Docs: man:systemd-sysv-generator(8) Process: 3306 ExecStop=/etc/init.d/elasticsearch stop (code=exited, status=0/SUCCESS) Process: 3340 ExecStart=/etc/init.d/elasticsearch start (code=exited, status=0/SUCCESS) CGroup: /system.slice/elasticsearch.service └─3391 /usr/lib/jvm/java-8-openjdk-armhf/bin/java -Xms1g -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Delasticsearch -Des.pidfil
Jan 22 20:54:04 lego systemd[1]: Starting LSB: Starts elasticsearch… Jan 22 20:54:05 lego elasticsearch[3340]: * Starting Elasticsearch Server Jan 22 20:54:05 lego elasticsearch[3340]: …done. Jan 22 20:54:05 lego systemd[1]: Started LSB: Starts elasticsearch. Jan 22 20:51:29 lego systemd[1]: Starting LSB: Starts elasticsearch…
维奥拉!
~ $ > curl -XGET 'localhost:9200/?pretty' { "status" : 200, "name" : "Svarog", "cluster_name" : "elasticsearch", "version" : { "number" : "1.7.3", "build_hash" : "NA", "build_timestamp" : "NA", "build_snapshot" : false, "lucene_version" : "4.10.4" }, "tagline" : "You Know, for Search" }