Установлен MongoDb 2.6.3 на OL 6.3 с использованием yum, но сценарий инициализации по умолчанию, похоже, не работает как при попытке остановить, так и при запуске службы mongod. Я мог проследить проблему с остановкой в $pid_file
быть обнаруженным как _/var/run/mongodb/mongod.pid
(т.е. с пробелом перед дорожкой). После того, как это пространство было удалено, монгода можно было остановить.
Однако я не могу запустить его с помощью того же сценария (так было и до стоп-исправления). После выдачи service mongod start
команда, я получаю ERROR: child process failed, exited with error number 1
и в логах: ERROR: Cannot write pid file to /var/run/mongodb/mongod.pid: Success
, сразу после ***** SERVER RESTARTED *****
строка, плюс пустой pidfile создается в указанном месте. Больше ничего не отображается, даже если я увеличиваю подробность журнала. Mongod запускается нормально, если я запускаю его как root, но вышесказанное происходит, если я использую непривилегированного пользователя (mongod). Я мог обнаружить это, выполнив команду, которая в конечном итоге запускается с изменением пользователя и без него - runuser -s /bin/bash mongod -c "ulimit -S -c 0 ; numactl --interleave=all /usr/bin/mongod -f /etc/mongod.conf"
Дополнительная информация - я использую формат конфигурации 2.4:
logpath = /data/mongodb/log/mongod.log
logappend = true
fork = true
dbpath = /data/mongodb/db
auth = true
port = 27017
pidfilepath = /var/run/mongodb/mongod.pid
traceExceptions = true
verbose = true
vvvv = true
keyFile=/data/mongodb/keyfile
Проверка разрешений на пути к pidfile показала, что все в порядке (rx для родителей, rwx для mongodb). Кроме того, на другом компьютере (та же ОС) mongoDb 2.4 работает нормально. Любая идея?
РЕДАКТИРОВАТЬ - если я не использую pidfile (не установлен pidfilepath), все работает нормально, но это не считается решением, а скорее обходным путем ...
Похоже, это связано с SERVER-14679 "(CentOS 7 / RHEL 7) сценарий init.d должен создать каталог для файла pid, если он отсутствует", которая исправлена в версии 2.6.5.
А пока отредактируйте сценарий инициализации в соответствии с это коммит.
Добавьте в билет примечание, что он применяется к Oracle Linux на случай, если измененный сценарий инициализации запустит MongoDB должным образом.