RHEL7 systemd автоматически запускает службы mongo?

У меня есть сервер RHEL7, который является частью кластера Mongo. Есть три процесса монго, которые я хотел бы автоматически запускать при загрузке системы. Один монгод, один арбитр и один монгос:

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

Я пытался создать службы systemd для этих команд, т.е.

[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

Мне интересно, если я иду об этом неправильно, есть ли лучший способ сделать это?


person stackoverflows    schedule 02.02.2017    source источник
comment
любые комментарии или идеи приветствуются   -  person stackoverflows    schedule 03.02.2017


Ответы (2)


Я знаю, что вы сказали rhel7, но, поскольку это единственный ответ на этот вопрос на Duckduckgo, это может быть полезно. В Ubuntu 15 и выше:

sudo systemctl enable mongod.service

person Pobe    schedule 01.12.2017

Вот мое решение

сделать скрипт 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 будет лучшим решением, если кто-нибудь знает, как его настроить.

документация по монго не поможет

person stackoverflows    schedule 03.02.2017