Search code examples
mongodbcentoscentos7

MongoDB 3.2.9 fails to start as a service on CentOS


I am trying to start mongod as a service on CentOS:

mongod --version
db version v3.2.9
git version: 22ec9e93b40c85fc7cae7d56e7d6a02fd811088c
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
allocator: tcmalloc
modules: none
build environment:
    distmod: rhel70
    distarch: x86_64
    target_arch: x86_64

CentOS Linux release 7.2.1511 (Core) 

/etc/selinux/config:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

mongod.conf:

systemLog:
   destination: file
   path: "/mnt/log/mongod.log"
   logAppend: true
storage:
   dbPath: "/mnt/data"
   engine: wiredTiger
   journal:
      enabled: true
processManagement:
   fork: true
   pidFilePath: "/var/run/mongodb/mongod.pid"
net:
   # bindIp: 127.0.0.1
   port: 27017
replication:
   replSetName: XXXX
security:
   keyFile: "/usr/mongodb/mongodb-keyfile"

The issue states:

Starting mongod (via systemctl):  Job for mongod.service failed because the control process exited with error code. See "systemctl status mongod.service" and "journalctl -xe" for details.
                                                           [FAILED]

journalctl -xe
...
Sep 20 13:10:55 ip-10-0-231-19.localdomain systemd[1]: Unit mongod.service entered failed state.
Sep 20 13:10:55 ip-10-0-231-19.localdomain systemd[1]: mongod.service failed.
Sep 20 13:10:55 ip-10-0-231-19.localdomain polkitd[9717]: Unregistered Authentication Agent for unix-process:26567:1630816 (system bus name :1.27, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bus)
Sep 20 13:11:04 ip-10-0-231-19.localdomain sudo[26587]:   centos : TTY=pts/1 ; PWD=/home/centos ; USER=root ; COMMAND=/bin/vi /etc/mongod.conf

The server starts using:

sudo mongod -f /etc/mongod.conf

I know that there was a bug opened regarding similar issue but the fix might be available in 3.2.7 already and besides it was related to the scenario when SELINUX=enforcing...

Please support.


Solution

  • Recently encountered a similar problem, but on FC26; here, the problem could be traced back to SELINUX and specifically the permissions on the custom dbPath directory.

    After trying many things, I found that the following sequence helped resolve my problem:

    MONGODB_DATADIR=/mnt/data
    
    sudo chown -R mongodb:mongodb $MONGODB_DATADIR
    sudo chmod -R 700 $MONGODB_DATADIR
    

    SELinux settings:

    sudo semanage port -a -t mongod_port_t -p tcp 27017
    
    sudo semanage fcontext -a -t mongod_var_lib_t ${MONGODB_DATADIR}
    sudo semanage fcontext -a -t mongod_var_lib_t ${MONGODB_DATADIR}/mongod.lock
    sudo restorecon -v ${MONGODB_DATADIR}
    

    You probably also have to add mongod_log_t to the custom log file location, /mnt/log/mongod.log, I did not modify that one on my end.