systemd サービスを使用して mongos(mongodb 4.4 シャーディング ルーター) を起動します。

systemd サービスを使用して mongos(mongodb 4.4 シャーディング ルーター) を起動します。

公式 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

ジャーナルctl -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 はフォークするように設定されていません。これをデフォルトの にリセットする必要がありますType=simple。または、--forkmongos コマンドラインに を追加することもできますが、 も指定する必要があります--pidfile。 では PID ファイルは必要ありませんType=simple。systemd を使用しているため、フォークせずに systemd にプロセスの管理を任せるのが最善です。

関連情報