%20%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%BE%E3%81%99%E3%80%82.png)
公式 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
。または、--fork
mongos コマンドラインに を追加することもできますが、 も指定する必要があります--pidfile
。 では PID ファイルは必要ありませんType=simple
。systemd を使用しているため、フォークせずに systemd にプロセスの管理を任せるのが最善です。