mongodb附带的标准upstart脚本可以正常工作:
# 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
ENABLE_MONGODB="yes"
if [ -f /etc/default/mongodb ]; then . /etc/default/mongodb; fi
if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --exec /usr/bin/mongod -- --config /etc/mongodb.conf; fi
end script
如果我想运行mongod的第二个实例,我想我只是复制/etc/mongodb.conf
- > /etc/mongodb2.conf
和/etc/init/mongodb.conf
- > /etc/init/mongodb2.conf
并更改第一个conf文件中的std端口。然后调整上面的脚本以从新创建的/etc/mongodb2.conf
开始。
然后我可以说start mongodb2
并且服务开始......但它在启动后就被杀死了。我要改变什么,让两个过程都能正常运行?
# Ubuntu upstart file at /etc/init/mongodb2.conf
limit nofile 20000 20000
kill timeout 300 # wait 300s between SIGTERM and SIGKILL.
pre-start script
mkdir -p /var/lib/mongodb2/
mkdir -p /var/log/mongodb2/
end script
start on runlevel [2345]
stop on runlevel [06]
script
ENABLE_MONGODB="yes"
if [ -f /etc/default/mongodb ]; then . /etc/default/mongodb; fi
if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --exec /usr/bin/mongod -- --config /etc/mongodb2.conf; fi
end script
答案 0 :(得分:10)
我无法使用“标准”新贵脚本(如上所述),所以我改变了这样:
# 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
exec sudo -u mongodb /usr/bin/mongod --config /etc/mongodb.conf
end script
如果你想运行mongodb的其他实例,只需复制* .conf文件并对/etc/mongodb2.conf
和/etc/init/mongodb2.conf
进行更改
# Ubuntu upstart file at /etc/init/mongodb2.conf
limit nofile 20000 20000
kill timeout 300 # wait 300s between SIGTERM and SIGKILL.
pre-start script
mkdir -p /var/lib/mongodb2/
mkdir -p /var/log/mongodb2/
end script
start on runlevel [2345]
stop on runlevel [06]
script
exec sudo -u mongodb /usr/bin/mongod --config /etc/mongodb2.conf
end script
我认为唯一不起作用的是restart mongodb
- 您必须再次stop
然后start
......
答案 1 :(得分:5)
我知道已经有一个公认的解决方案,但我认为这个更优雅。
另一种方法是使用start-stop-daemon的pid文件创建。例如,我有2个mongos在同一台服务器上运行,有2个不同的upstart脚本,两条魔术线是:
exec start-stop-daemon --make-pidfile --pidfile /var/run/mongodb-router.pid --start --startas /data/bin/mongos --chuid mongo -- --logappend --logpath /mnt/log/mongos.log --configdb mongo2-config01,mongo2-config02,mongo2-config03
exec start-stop-daemon --make-pidfile --pidfile /var/run/mongodb-routerrt.pid --start --startas /data/bin/mongos --chuid mongo -- --logappend --logpath /mnt/log/mongos-rt.log --configdb mongort-config01,mongort-config02,mongort-config03 --port 27027
请注意,有一个'--pidfile /var/run/mongodb-router.pid',另一个有'--pidfile /var/run/mongodb-routerrt.pid'和另一个端口。
答案 2 :(得分:2)
答案 3 :(得分:2)
我就是这样做的。 2个mongodb实例,带有start-stop-daemon,位于同一台服务器上
这是我的start-stop-daemon配置
exec start-stop-daemon --make-pidfile --pidfile /var/lib/mongodb/db1.pid --start --quiet --chuid mongodb --name mongod1 --exec /usr/bin/mongod -- --config etc/mongodb1.conf
exec start-stop-daemon --make-pidfile --pidfile /var/lib/mongodb/db2.pid --start --quiet --chuid mongodb --name mongod2 --exec /usr/bin/mongod -- --config etc/mongodb2.conf
注意--name
选项。这对我来说是个窍门
答案 4 :(得分:1)
两个守护进程无法侦听相同的tcp端口,因此您必须更改mongod2的--port参数才能侦听其他端口。
两个守护进程无法共享相同的数据目录,因此您必须更改mongod2的--data-dir参数。
答案 5 :(得分:1)
我发现下面的暴发户为我工作
# Ubuntu upstart file at /etc/init/mongodb.conf
description "manage mongodb instance"
start on runlevel [2345]
stop on runlevel [06]
limit nofile 20000 20000
kill timeout 300 # wait 300s between SIGTERM and SIGKILL.
env MONGODB_USER=mongodb
env MONGODB_DATA=/var/lib/mongodb/
env MONGODB_LOG=/var/log/mongodb/
env MONGODB_PID=/var/run/mongodb.pid
pre-start script
if [ ! -d $MONGODB_DATA ]; then
mkdir -p $MONGODB_DATA
chown $MONGODB_USER:$MONGODB_USER $MONGODB_DATA
fi
if [ ! -d $MONGODB_LOG ]; then
mkdir -p $MONGODB_LOG
chown $MONGODB_USER:$MOGODB_USER $MONGODB_LOG
fi
end script
exec start-stop-daemon --start --pidfile $MONGODB_PID --chuid $MONGODB_USER:$MONGODB_USER --exec /usr/bin/mongod -- --config /etc/mongodb/mongodb.conf
pre-stop exec start-stop-daemon --signal QUIT --stop --quiet --pidfile $MONGODB_PID --chuid $MONGODB_USER:$MONGODB_USER --exec /usr/bin/mongod -- --config /etc/mongodb/mongodb.conf