为什么elasticsearch不能在Ubuntu 14.04上运行?

时间:2014-12-03 14:18:33

标签: ubuntu elasticsearch

我试图确定弹性搜索实例是否正在运行,但它似乎不是:

ubuntu@ubuntu:~$ sudo service elasticsearch status
 * elasticsearch is not running
ubuntu@ubuntu:~$ sudo service elasticsearch start
 * Starting Elasticsearch Server  [ OK ] 
ubuntu@ubuntu:~$ sudo service elasticsearch status
 * elasticsearch is not running
and

ubuntu@ubuntu:~$ sudo /etc/init.d/elasticsearch status
 * elasticsearch is not running
ubuntu@ubuntu:~$ sudo /etc/init.d/elasticsearch start
 * Starting Elasticsearch Server  [ OK ] 
ubuntu@ubuntu:~$ sudo /etc/init.d/elasticsearch status
 * elasticsearch is not running
ubuntu@ubuntu:/etc/elasticsearch# sudo service elasticsearch restart
 * Stopping Elasticsearch Server  [ OK ] 
 * Starting Elasticsearch Server  [ OK ] 
ubuntu@ubuntu:/etc/elasticsearch# sudo service elasticsearch status
 * elasticsearch is not running

ubuntu@ubuntu:~$ curl -XGET localhost:9200/_nodes/_all/process?pretty
curl: (7) Failed to connect to localhost port 9200: Connection refused

ubuntu@ubuntu:/etc/elasticsearch$ sudo netstat -nlp
tcp6       0      0 :::9300                 :::*                    LISTEN      4413/java       

UPD

我的elasticsearch.log:

[2014-12-03 00:00:02,161][INFO ][cluster.metadata         ] [Zero] [logstash-2014.12.03] creating index, cause [auto(bulk api)], shards [5]/[1], mappings [_default_]
[2014-12-03 00:00:02,617][INFO ][cluster.metadata         ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)
[2014-12-03 00:00:12,737][INFO ][cluster.metadata         ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)
[2014-12-03 00:00:17,587][INFO ][cluster.metadata         ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)
[2014-12-03 00:00:18,842][INFO ][cluster.metadata         ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)
[2014-12-03 01:00:01,430][INFO ][cluster.metadata         ] [Zero] [logstash-2014.11.25] deleting index
[2014-12-03 09:46:57,461][INFO ][cluster.metadata         ] [Zero] [logstash-2014.12.03] update_mapping [logs] (dynamic)

9 个答案:

答案 0 :(得分:78)

Elasticsearch service init脚本在启动失败时不会在控制台或日志文件上打印任何错误信息,而是可笑地显示[OK]

您必须使用与init脚本执行的相同用户和相同参数手动运行elaticsearch以检查出错的地方。错误消息将打印在控制台上。

在安装了elasticsearch-1.4.1.deb的Ubuntu 14.10上,没有更改任何路径,运行elastisearch的命令是:

sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch -d -p /var/run/elasticsearch.pid --default.config=/etc/elasticsearch/elasticsearch.yml --default.path.home=/usr/share/elasticsearch --default.path.logs=/var/log/elasticsearch --default.path.data=/var/lib/elasticsearch --default.path.work=/tmp/elasticsearch --default.path.conf=/etc/elasticsearch

我刚在/etc/init.d/elasticsearch添加一行以打印出上述命令:

# Start Daemon
log_daemon_msg "sudo -u $ES_USER $DAEMON $DAEMON_OPTS"    # <-- Add this line
start-stop-daemon --start -b --user "$ES_USER" -c "$ES_USER" --pidfile "$PID_FILE" --exec $DAEMON -- $DAEMON_OPTS
log_end_msg $?

答案 1 :(得分:26)

elasticsearch用户无法写入PID文件,因为它无权在/ var / run /中创建文件:

FileNotFoundException[/var/run/elasticsearch.pid (Keine Berechtigung)]

修复:创建目录/ var / run / elasticsearch /,将其所有权更改为elasticsearch:elasticsearch,并在init脚本中将PID文件位置更改为此目录。

mkdir -p /var/run/elasticsearch
chown elasticsearch: /var/run/elasticsearch
sed -e 's|^PID_FILE=.*$|PID_FILE=/var/run/$NAME/$NAME.pid|g' -i /etc/init.d/elasticsearch

一旦你走得那么远,你可能会看到下一个错误:

ElasticsearchIllegalStateException[Failed to obtain node lock, is the following location writable?: [/var/lib/elasticsearch/elasticsearch]]

资源再次没有为elasticsearch用户提供正确的权限。

chown -R elasticsearch: /var/lib/elasticsearch

尚未完成。现在你必须编辑/etc/init.d/elasticsearch并删除这一行:

test "$START_DAEMON" == true || exit 0

这条线是完全垃圾,保证会退出。

现在它应该终于开始了。

答案 2 :(得分:11)

  

如果您使用的是Elasticsearch 5.0。

Elasticsearch 5.0的最小/最大堆大小要求现在默认为2gb

检查ls /tmp/hs_err_pid*.log文件,在日志中,您会发现由于内存不足,JVM无法启动ES。

您可以在/etc/elasticsearch/jvm.options中调整堆大小设置。如果您在具有2 GB RAM的盒子上,请分别将行-Xms2g-Xmx2g调整为-Xms1g-Xmx1g。如果您打算使用带有1 GB内存的盒子,我建议您使用-Xms512m-Xmx512m.

Reference

答案 3 :(得分:8)

虽然接受的答案命令对我来说使用Elasticsearch 1.7.3,但在Elasticsearch&gt; 2.0中进行一些更改,运行接受的答案命令会产生

es.default.config is no longer supported. elasticsearch.yml 
must be placed in the config directory and cannot be renamed

Github Issue

上面Github问题中指定的命令现在是:

sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch -d -p /var/run/elasticsearch.pid --path.conf=/etc/elasticsearch --default.path.home=/usr/share/elasticsearch --default.path.logs=/var/log/elasticsearch --default.path.data=/var/lib/elasticsearch --default.path.work=/tmp/elasticsearch --default.path.conf=/etc/elasticsearch

答案 4 :(得分:3)

今天早上我遇到了同样的问题。经过大量挖掘,我们发现它是由Java 8安装失败引起的。 Java 8安装修复后,一切都很好。

答案 5 :(得分:1)

可以在配置文件中设置@aleung引用的命令行参数。默认情况下,参数被注释掉。 在/ etc / default / elasticsearch中设置以下内容 ################################ #Elasticsearch ################################ #Elasticsearch主目录 ES_HOME =的/ usr /共享/ elasticsearch #Elasticsearch配置目录 CONF_DIR =的/ etc / elasticsearch #Elasticsearch数据目录 DATA_DIR =的/ var / lib中/ elasticsearch #Elasticsearch日志目录 LOG_DIR =在/ var /日志/ elasticsearch #Elasticsearch PID目录 PID_DIR = / var / run中/ elasticsearch

答案 6 :(得分:1)

此命令解决了我的问题:

sudo chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/

Referenced from @imsaar github

答案 7 :(得分:1)

对我来说,此问题是由Elasticsearch数据和/或Logs目录的磁盘使用率为100%引起的。运行if (!myVector) { //It is always false, because, it is a reference to a local variable, not a pointer. 以查看您的Elasticsearch进程用于数据和日志的目录是否具有可用空间。

答案 8 :(得分:0)

在我完成apt-get dist-upgrade后,我得到了同样的观点 - JAVA更新为“Java(TM)SE运行时环境(版本1.8.0_91-b14) Java HotSpot(TM)64位服务器VM(版本25.91-b14,混合模式)“版本。

我的ES不想开始。我在这里找到了原因(tail -n100 /var/log/elasticsearch/elasticsearch.log):

java.lang.IllegalArgumentException: Plugin [license] is incompatible with Elasticsearch [2.3.2]. Was designed for version [2.3.1]

我刚刚删除了插件(bin / plugin删除许可证)并成功启动了ES。

我希望这会对别人有所帮助。