RHEL7 systemd自动启动mongo服务?

时间:2017-02-02 06:54:03

标签: mongodb systemd upstart rhel7 start-stop-daemon

我有一台RHEL7服务器,它是Mongo集群的一部分。我希望在系统启动时自动启动三个mongo进程。一个mongod,一个仲裁者和一个mongos:

  • / usr / bin / mongod -f /etc/mongo_shard001.conf
  • / usr / bin / mongod -f /etc/mongoarb.conf
  • / usr / bin / mongos -f /etc/mongos.conf

我一直在尝试为这些命令创建系统服务,即

[Unit]
Description=mongo configuration server
After=network.target

[Service]
User=mongod
Group=mongod
ExecStart=/usr/bin/mongod -f /etc/mongoconf.conf

[Install]
WantedBy=multi-user.target

当我尝试sudo systemctl daemon-reload && sudo systemctl start mongoconf时,我收到此错误

● mongoconf.service - mongo configuration server
   Loaded: loaded (/etc/systemd/system/mongoconf.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2017-02-02 14:38:34 AWST; 20s ago
  Process: 5114 ExecStart=/usr/bin/mongod -f /etc/mongoconf.conf (code=exited, status=1/FAILURE)
 Main PID: 5114 (code=exited, status=1/FAILURE)

Feb 02 14:38:34 mdb1 systemd[1]: Started mongo configuration server.
Feb 02 14:38:34 mdb1 systemd[1]: Starting mongo configuration server...
Feb 02 14:38:34 mdb1 systemd[1]: mongoconf.service: main process exited, code=exited, status=1/FAILURE
Feb 02 14:38:34 mdb1 systemd[1]: Unit mongoconf.service entered failed state.
Feb 02 14:38:34 mdb1 systemd[1]: mongoconf.service failed.

我也尝试使用带有pid文件的分叉类型:

[Unit]
Description=mongo configuration server
After=network.target

[Service]
User=mongod
Group=mongod
ExecStart=/usr/bin/mongod -f /etc/mongoconf.conf --pidfilepath /var/lib/mongoconf/pid --fork
Type=forking
PIDFile=/var/run/mongodb/mongoconf/pid

[Install]
WantedBy=multi-user.target

但是给出了这个错误

● mongoconf.service - mongo configuration server
   Loaded: loaded (/etc/systemd/system/mongoconf.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2017-02-02 14:45:36 AWST; 4s ago
  Process: 5256 ExecStart=/usr/bin/mongod -f /etc/mongoconf.conf --pidfilepath /var/lib/mongoconf/pid --fork (code=exited, status=1/FAILURE)
 Main PID: 5114 (code=exited, status=1/FAILURE)

Feb 02 14:45:36 mdb1 systemd[1]: Starting mongo configuration server...
Feb 02 14:45:36 mdb1 mongod[5256]: about to fork child process, waiting until server is ready for connections.
Feb 02 14:45:36 mdb1 mongod[5256]: forked process: 5258
Feb 02 14:45:36 mdb1 systemd[1]: mongoconf.service: control process exited, code=exited status=1
Feb 02 14:45:36 mdb1 systemd[1]: Failed to start mongo configuration server.
Feb 02 14:45:36 mdb1 systemd[1]: Unit mongoconf.service entered failed state.
Feb 02 14:45:36 mdb1 systemd[1]: mongoconf.service failed.

手动启动mongo配置正常工作并创建pid文件

/usr/bin/mongod -f /etc/mongoconf.conf --pidfilepath /var/lib/mongoconf/pid --fork

我使用的mongod版本是来自mongodb.com的版本,我按照安装指南安装了它。

db version v3.4.1
git version: 5e103c4f5583e2566a45d740225dc250baacfbd7
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
allocator: tcmalloc
modules: none
build environment:
    distmod: rhel70
    distarch: x86_64
    target_arch: x86_64

来自这个回购

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

我想知道我是否以错误的方式解决这个问题,有没有更好的方法呢?

2 个答案:

答案 0 :(得分:1)

我知道你说rhel7但是因为这是对于这个问题的唯一答案,所以这可能很有用。在Ubuntu 15及以下版本:

sudo systemctl enable mongod.service

答案 1 :(得分:0)

这是我的解决方案

使用这些行创建一个bash脚本

/usr/bin/mongod -f /etc/mongo_shard001.conf
/usr/bin/mongod -f /etc/mongoarb.conf
/usr/bin/mongos -f /etc/mongos.conf

然后将此行添加到您的crontab

@reboot root cd /foldername && ./scriptname.sh
如果有人知道如何设置它,那么systemd将是一个更好的解决方案。

mongo文档没有帮助

相关问题