使用 systemd 服务启动 mongos(mongodb 4.4 分片路由器)

使用 systemd 服务启动 mongos(mongodb 4.4 分片路由器)

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 处理管理进程。

相关内容