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

 无为南子_274 发布于 2022-12-07 20:25

我正在尝试确定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)

aleung.. 78

Elasticsearch服务初始化脚本在启动失败时不会在控制台或日志文件上打印任何错误信息,而是可笑地显示[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 $?

谢谢!我打开了一个[错误报告](https://bugs.launchpad.net/ubuntu/+source/elasticsearch/+bug/1465374),如果有人想要"我也是"它. (3认同)


小智.. 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

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

现在它应该终于开始了.

4 个回答
  • 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
    

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

    现在它应该终于开始了.

    2022-12-11 02:04 回答
  • Elasticsearch服务初始化脚本在启动失败时不会在控制台或日志文件上打印任何错误信息,而是可笑地显示[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 $?
    

    2022-12-11 02:06 回答
  • 虽然接受的答案命令对我使用Elasticsearch 1.7.3有效,但在Elasticsearch> 2.0中进行一些更改运行接受的答案命令会产生

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

    Github问题

    上面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
    

    2022-12-11 02:06 回答
  • 如果您使用的是Elasticsearch 5.0.

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

    检查ls /tmp/hs_err_pid*.log文件,在日志中,您将看到JVM由于内存不足而无法启动ES.

    您可以在中调整堆大小设置/etc/elasticsearch/jvm.options.调整线路-Xms2g,并-Xmx2g-Xms1g-Xmx1g分别,如果你在使用2 GB RAM的盒子.如果您打算使用带有1 GB RAM的盒子,我建议使用-Xms512m-Xmx512m.

    参考

    2022-12-11 02:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有