Подтвердить что ты не робот

Почему 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)
4b9b3361

Ответ 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.

Надеюсь, это поможет другим.