%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D1%81%D0%BB%D1%83%D0%B6%D0%B1%D1%8B%20systemd.png)
Mongodb 4.4 на Centos 8 с использованием официального репозитория RPM.
Я могу без проблем запустить и использовать mongos из командной строки:
mongos --config /etc/mongos.conf
Однако, если я попытаюсь запустить mongos как systemd service, он выдаст ошибку 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
журналctl -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 управлять процессом.