
Centos 8 上的 Mongodb 4.4 使用官方 RPM 儲存庫。
我可以從命令列啟動並使用 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
日誌控制-xe
systemd[1]: mongos.service: Start operation timed out. Terminating.
systemd[1]: mongos.service: Failed with result 'timeout'.
檢查了所有 dir 權限,它只是不建立 pid 檔案/var/run/mongodb/mongos.pid
。
我缺什麼?
答案1
您已設置Type=forking
,但 mongos 未配置為 fork。您應該將其重設為預設值Type=simple
。或者,您可以新增--fork
至 mongos 命令行,但您還需要指定--pidfile
. .PID 檔案不需要Type=simple
。由於您使用的是 systemd,因此最好不要分叉並讓 systemd 來管理進程。