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

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

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 來管理進程。

相關內容