Я недавно добавил новый узел (новая установка ubuntu и эластичная установка через dpkg) в свой существующий кластер, и случайно один сервер не запускал elasticsearch при перезапуске. При попытке запуска вручную выдает следующую ошибку:
sudo systemctl status elasticsearch
elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2017-06-16 12:32:28 UTC; 3s ago
Docs: http://www.elastic.co
Process: 1437 ExecStart=/usr/share/elasticsearch/bin/elasticsearch -Des.pidfile=$PID_DIR/elasticsearch.pid -Des.default.path.home=$ES_HOME -Des.default.p
Main PID: 1437 (code=exited, status=3)
Jun 16 12:32:28 els02.xyz.net elasticsearch[1437]: java.io.FileNotFoundException: /var/run/elasticsearch/elasticsearch.pid (No such file or directory)
Jun 16 12:32:28 els02.xyz.net elasticsearch[1437]: at java.io.FileOutputStream.open0(Native Method)
Jun 16 12:32:28 els02.xyz.net elasticsearch[1437]: at java.io.FileOutputStream.open(FileOutputStream.java:270)
Jun 16 12:32:28 els02.xyz.net elasticsearch[1437]: at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
Jun 16 12:32:28 els02.xyz.net elasticsearch[1437]: at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
Jun 16 12:32:28 els02.xyz.net elasticsearch[1437]: at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:194)
Jun 16 12:32:28 els02.xyz.net elasticsearch[1437]: at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:32)
Jun 16 12:32:28 els02.xyz.net systemd[1]: elasticsearch.service: Main process exited, code=exited, status=3/NOTIMPLEMENTED
Jun 16 12:32:28 els02.xyz.net systemd[1]: elasticsearch.service: Unit entered failed state.
Jun 16 12:32:28 els02.xyz.net systemd[1]: elasticsearch.service: Failed with result 'exit-code'.
Я пошел дальше и создал папку, которая требуется elasticsearch, в - / var / run / elasticsearch и сменил владельца на elasticsearch: elasticsearch. После этого elasticsearch запускается нормально. Но при перезапуске та же проблема снова.
Пытался изменить папку PID_DIR на / var / run в служебном файле в /usr/lib/systemd/system/elasticsearch.service, но это дает другую ошибку:
java. io.FileNotFoundException: /var/run/elasticsearch.pid (Permission denied)
Еще одна вещь, которую я заметил: когда я вручную создаю каталог в / var / run и запускаю elasticsearch, похоже, все работает нормально, но GET / _nodes не возвращает статистику ОС или файловой системы. Версия Elasticsearch: 1.7.3
Известно об этой проблеме, которая затрагивала Elasticsearch 1.6 - https://github.com/elastic/elasticsearch/issues/11594
Я наткнулся на нечто подобное.
Я последовал за этим ответом и настроил функцию systemd
tmpfiles.d(5) , чтобы она была создана при загрузке.