MongoDB 3.2.9 无法在 CentOS 上作为服务启动

问题描述 投票:0回答:3

我正在尝试在 CentOS 上启动 mongod 作为服务:

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"

问题指出:

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

服务器开始使用:

sudo mongod -f /etc/mongod.conf

我知道有一个关于类似问题的错误,但修复可能已经在 3.2.7 中可用,而且它与 SELINUX=enforcing 时的场景有关...

请支持。

mongodb centos centos7
3个回答
1
投票

最近遇到了类似的问题,但是是在FC26上;在这里,问题可以追溯到 SELINUX,特别是自定义 dbPath 目录的权限。

在尝试了很多方法之后,我发现以下顺序有助于解决我的问题:

MONGODB_DATADIR=/mnt/data

sudo chown -R mongodb:mongodb $MONGODB_DATADIR
sudo chmod -R 700 $MONGODB_DATADIR

SELinux 设置:

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}

您可能还必须将

mongod_log_t
添加到自定义日志文件位置,
/mnt/log/mongod.log
,我没有修改该位置。


0
投票

实际上,对我来说解决方法是:

sudo chown -R mongod:mongod $MONGODB_DATADIR

0
投票

另一个可能导致此错误的原因是 dbpath 磁盘上的空间不足。对我来说,我在 mongo.log 中看到了它。当我清理空间时,它开始工作。

© www.soinside.com 2019 - 2024. All rights reserved.