Mongodb 4.4 在 centos 8 上使用官方 RPM repo。
我可以从命令行启动和使用 mongos:
mongos --config /etc/mongos.conf
但是,如果我尝试将 mongos 作为 systemd 服务启动,它会给出错误mongos.service: Failed with result 'timeout'
。在启动过程中,我可以连接到 mongos,并且它一直正常工作,直到启动脚本出现错误。
/etc/mongos.conf 的内容
sharding:
configDB: rs_cfg/web05:27017
net:
port: 27017
bindIp: 0.0.0.0
的内容/etc/systemd/system/mongos.service
。基本上我采用了/usr/lib/systemd/system/mongod.service
并做了一些小的修改来制作mongos.service
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target
[Service]
User=mongod
Group=mongod
Environment="OPTIONS=-f /etc/mongos.conf"
EnvironmentFile=-/etc/sysconfig/mongod
ExecStart=/usr/bin/mongos $OPTIONS
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb
ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb
ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb
PermissionsStartOnly=true
PIDFile=/var/run/mongodb/mongos.pid
Type=forking
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for mongod as specified in
# https://docs.mongodb.com/manual/reference/ulimit/#recommended-ulimit-settings
[Install]
WantedBy=multi-user.target
journalctl-xe
systemd[1]: mongos.service: Start operation timed out. Terminating.
systemd[1]: mongos.service: Failed with result 'timeout'.
检查了所有目录权限,但它就是没有创建 pid 文件/var/run/mongodb/mongos.pid
。
我错过了什么?
答案1
您设置了Type=forking
,但 mongos 未配置为 fork。您应该将其重置为默认值。Type=simple
或者,您可以将其添加--fork
到 mongos 命令行,但您还需要指定--pidfile
。PID 文件不是必需的Type=simple
。由于您正在使用 systemd,最好不要 fork 并让 systemd 处理管理进程。