Недавно я добавил новый узел (новая установка 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 (в разрешении отказано)
Еще одна вещь, которую я заметил: когда я вручную создаю каталог в / var / run и запускаю elasticsearch, кажется, что он работает нормально, но GET / _nodes не возвращает статистику ОС или файловой системы. Это может быть совершенно не связанная проблема, но я заметил это, потому что использую Opserver для мониторинга своего кластера, который не показывает статистику ОС / оборудования для этого узла (он работал нормально до фиаско перезапуска).
Версия Linux: Ubuntu 16.04 Версия Elasticsearch: 1.7.3
Зная об этой проблеме, которая влияла на Elasticsearch 1.6 - https://github.com/elastic/elasticsearch/issues/11594
Я наткнулся на нечто подобное.
Я последовал за этот ответ и настроен systemd
с tmpfiles.d(5)
возможность его создания при загрузке.