Created
March 23, 2012 15:03
-
-
Save sasha-id/2171496 to your computer and use it in GitHub Desktop.
MongoDB multiple instance upstart scripts: mongodb, mongod --configsvr and mongos
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
MongoDB upstart scripts for Ubuntu. | |
Run following commands after installing upstart scripts: | |
ln -s /lib/init/upstart-job /etc/init.d/mongoconf | |
ln -s /lib/init/upstart-job /etc/init.d/mongodb | |
ln -s /lib/init/upstart-job /etc/init.d/mongos | |
To start services use: | |
service mongodb [start|stop|restart] | |
service mongoconf [start|stop|restart] | |
service mongos [start|stop|restart] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# /etc/mongo.conf | |
MONGODB_ENABLED=yes | |
MONGOCONF_ENABLED=no | |
MONGOS_ENABLED=no |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# /etc/mongoconf.conf | |
#configsvr config file | |
#start mongod in configsvr mode | |
configsvr=true | |
#where to log | |
logpath=/var/log/mongodb/mongoconf.log | |
#log overwritten or appended to | |
logappend=true | |
#override port | |
#port=27019 | |
#path to data files | |
#dbpath=/data/configdb | |
smallfiles = true |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# /etc/mongos.conf | |
#mongos config file | |
#config servers | |
configdb=host1:27019,host2:27019,host3:27019 | |
#where to log | |
logpath=/var/log/mongodb/mongos.log | |
#log overwritten or appended to | |
logappend=true | |
#override port | |
#port=27017 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Ubuntu upstart file at /etc/init/mongoconf.conf | |
limit nofile 20000 20000 | |
kill timeout 300 # wait 300s between SIGTERM and SIGKILL. | |
start on runlevel [2345] | |
stop on runlevel [06] | |
script | |
if [ -f /etc/mongo.conf ]; then . /etc/mongo.conf; fi | |
if [ "x$MONGOCONF_ENABLED" = "xyes" ]; then | |
ENABLE_MONGOCONF="yes" | |
if [ "x$ENABLE_MONGOCONF" = "xyes" ]; then exec start-stop-daemon --make-pidfile --pidfile /var/run/mongoconf.pid --start --quiet --chuid mongodb --exec /usr/bin/mongod -- --config /etc/mongoconf.conf; fi | |
fi | |
end script |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Ubuntu upstart file at /etc/init/mongodb.conf | |
limit nofile 20000 20000 | |
kill timeout 300 # wait 300s between SIGTERM and SIGKILL. | |
pre-start script | |
mkdir -p /var/lib/mongodb/ | |
mkdir -p /var/log/mongodb/ | |
end script | |
start on runlevel [2345] | |
stop on runlevel [06] | |
script | |
if [ -f /etc/mongo.conf ]; then . /etc/mongo.conf; fi | |
if [ "x$MONGODB_ENABLED" = "xyes" ]; then | |
ENABLE_MONGODB="yes" | |
if [ -f /etc/default/mongodb ]; then . /etc/default/mongodb; fi | |
if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --make-pidfile --pidfile /var/run/mongodb.pid --start --quiet --chuid mongodb --exec /usr/bin/mongod -- --config /etc/mongodb.conf; fi | |
fi | |
end script |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Ubuntu upstart file at /etc/init/mongos.conf | |
limit nofile 20000 20000 | |
kill timeout 300 # wait 300s between SIGTERM and SIGKILL. | |
start on runlevel [2345] | |
stop on runlevel [06] | |
script | |
if [ -f /etc/mongo.conf ]; then . /etc/mongo.conf; fi | |
if [ "x$MONGOS_ENABLED" = "xyes" ]; then | |
ENABLE_MONGOS="yes" | |
if [ "x$ENABLE_MONGOS" = "xyes" ]; then exec start-stop-daemon --make-pidfile --pidfile /var/run/mongos.pid --start --quiet --chuid mongodb --exec /usr/bin/mongos -- --config /etc/mongos.conf; fi | |
fi | |
end script |
I am getting:
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service S20mongoconf start
initctl: Unknown job: S20mongoconf
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start S20mongoconf
In the boot log. This is for the config server. What am I doing wrong?
Helpful config files, thanks!
Is there any way to check if a config server is online before starting mongos? Because otherwise it would just fail silently.
@KevinBurton take off the S20, this is simply a way for the system to understand the order these start and stop commands need to be executed.
@sebastianmarr - What did you end up doing to solve the ordering problem?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Keep it simple avoiding "start-stop-daemon", "sudo" and "su". All of them forces you to use "expect" stanza to help upstart track the proper pid of the service.
More specific, start-stop-daemon ensures that you will not have two services with the same name, forcing you to use "--pidfile" variation.
We can use "setuid":
Ubuntu upstart file at /etc/init/mongodb.conf
limit nofile 20000 20000
kill timeout 300 # wait 300s between SIGTERM and SIGKILL.
pre-start script
mkdir -p /var/lib/mongodb/
mkdir -p /var/log/mongodb/
end script
start on runlevel [2345]
stop on runlevel [06]
setuid mongodb
exec /usr/bin/mongod --config /etc/mongoconf.conf