Mongodb

使用 systemd 服務啟動 mongos(mongodb 4.4 分片路由器)

  • August 31, 2020

使用官方 RPM 儲存庫的 centos 8 上的 Mongodb 4.4。

我可以從命令行啟動和使用 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

我錯過了什麼?

您設置Type=forking但 mongos 未配置為分叉。您應該將其重置為預設值,Type=simple. 或者,您可以添加--fork到 mongos 命令行,但您還需要指定--pidfile. PID 文件不是必需的Type=simple。由於您使用的是 systemd,因此最好不要分叉並讓 systemd 處理管理程序。

引用自:https://serverfault.com/questions/1032202