Почему elasticsearch не будет работать на Ubuntu 14.04?
Я пытаюсь определить, работает ли экземпляр elasticsearch, но он не выглядит следующим образом:
[email protected]:~$ sudo service elasticsearch status
* elasticsearch is not running
[email protected]:~$ sudo service elasticsearch start
* Starting Elasticsearch Server [ OK ]
[email protected]:~$ sudo service elasticsearch status
* elasticsearch is not running
and
[email protected]:~$ sudo /etc/init.d/elasticsearch status
* elasticsearch is not running
[email protected]:~$ sudo /etc/init.d/elasticsearch start
* Starting Elasticsearch Server [ OK ]
[email protected]:~$ sudo /etc/init.d/elasticsearch status
* elasticsearch is not running
[email protected]:/etc/elasticsearch# sudo service elasticsearch restart
* Stopping Elasticsearch Server [ OK ]
* Starting Elasticsearch Server [ OK ]
[email protected]:/etc/elasticsearch# sudo service elasticsearch status
* elasticsearch is not running
и
[email protected]:~$ curl -XGET localhost:9200/_nodes/_all/process?pretty
curl: (7) Failed to connect to localhost port 9200: Connection refused
и
[email protected]:/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)
Ответы
Ответ 1
Служба поиска Elicsearch init script не выводит никаких сообщений об ошибках на консоль или файл журнала, когда она не запускается, вместо этого она смешно показывает [OK]
.
Вы должны запускать elaticsearch вручную с тем же пользователем и теми же параметрами, что и init script, чтобы проверить, что происходит. Сообщение об ошибке будет напечатано на консоли.
На моем Ubuntu 14.10 с установленным elasticsearch-1.4.1.deb без изменения пути команда для запуска 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 $?
Ответ 2
Пользователь elasticsearch не может писать файл PID, поскольку он не имеет прав на создание файла в /var/run/:
FileNotFoundException[/var/run/elasticsearch.pid (Keine Berechtigung)]
Исправление: создайте каталог /var/run/elasticsearch/, измените его право собственности на elasticsearch: elasticsearch и измените местоположение файла PID в этот каталог в init script.
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
Эта строка представляет собой полный мусор и гарантирует выход.
Теперь это должно начаться.
Ответ 3
Если вы используете Elasticsearch 5.0.
Минимальные/максимальные требования к размеру кучи для Elasticsearch 5.0 теперь по умолчанию равны 2gb
Проверьте файлы ls /tmp/hs_err_pid*.log
, в журналах вы увидите, что JVM не смогла запустить ES из-за недостаточной памяти.
Вы можете настроить параметры размера кучи в /etc/elasticsearch/jvm.options
. Настройте линии -Xms2g
и -Xmx2g
на -Xms1g
и -Xmx1g
соответственно, если вы находитесь на коробке с 2 ГБ ОЗУ. Если вы собираетесь использовать ящик с 1 ГБ ОЗУ, я бы рекомендовал использовать -Xms512m
и -Xmx512m.
Ссылка
Ответ 4
В то время как принятая команда ответа работала для меня с использованием 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
Ответ 5
Сегодня утром я столкнулся с тем же вопросом. После многократного поиска мы выяснили, что это было вызвано неудачной установкой Java 8. Все было в порядке после установки Java 8.
Ответ 6
Параметры командной строки, которые @aleung ссылаются, могут быть установлены в файле конфигурации. По умолчанию параметры закомментированы.
Задайте следующее в /etc/default/elasticsearch
################################
# Elasticsearch
################################
# Elasticsearch home directory
ES_HOME=/usr/share/elasticsearch
# Elasticsearch configuration directory
CONF_DIR=/etc/elasticsearch
# Elasticsearch data directory
DATA_DIR=/var/lib/elasticsearch
# Elasticsearch logs directory
LOG_DIR=/var/log/elasticsearch
# Elasticsearch PID directory
PID_DIR=/var/run/elasticsearch
Ответ 7
Эта команда разрешила мою проблему:
sudo chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
Ссылка из @imsaar github
Ответ 8
Для меня эта проблема была вызвана каталогом данных Elasticsearch и/или журналов, использующим 100% дисковое пространство. Запустите df -h
, чтобы узнать, имеет ли каталог, который ваш процесс Elasticsearch использует для данных и журналов, имеет свободное пространство или нет.
Ответ 9
Я получил то же самое после того, как сделал apt-get dist-upgrade - JAVA обновился до "среды выполнения Java (TM) SE Runtime Environment (build 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 remove license) и успешно начал ES.
Надеюсь, это поможет другим.