Script upstart dans ubuntu pour mongodb

11

Je suis nouveau sur linux et mongodb. J'ai déjà installé mongodb sur ubuntu mais je veux exécuter une autre instance sur un port différent. Comme je l'ai compris à partir d'autres questions et forums, il doit y avoir un script parvenu. /programming/7300109/ubuntu-start-upstart-second-instance-of-mongodb

Mais je ne peux pas trouver ou localiser un script parvenu sur mon serveur. Si je crée un script parvenu, où dois-je le localiser pour démarrer en tant que service.

ou existe-t-il un autre moyen approprié et facile de démarrer une autre instance de mongodb sur le même serveur mais sur un port différent.

Erhan A
la source

Réponses:

8

Exécutez-vous à partir du référentiel 10gen ou du référentiel Debian / Ubuntu par défaut? Je recommande d'utiliser le référentiel 10gen officiel.

Consultez ce lien - [10gen MongoDB How-To Install on Ubuntu:] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ . Il est préférable de désinstaller l'installation précédente de mongodb avant cette modification, ce qui vous obligera également à modifier la source de votre référentiel (dans /etc/apt/source.list) mais cela est également détaillé dans le lien ci-dessus. Je recommande d'utiliser upstart sur sysvinit et le traitement est décrit dans le How-To.

Avec la configuration Ubuntu 10gen, le fichier de configuration se trouve dans /etc/mongodb.conf.

Il existe plusieurs façons de lancer un processus mongod distinct, on pourrait simplement l'exécuter à partir du cli -

sudo -u mongodb mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001 &

qui produira (en utilisant 'ps')

mongodb   2210  3.3  1.5 259012 15300 pts/0    Dl   11:48   0:00 mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001

et vous pouvez vous connecter via le cli -> mongod --port 3001

Une autre façon consiste à créer une copie de /etc/mongodb.conf -

sudo cp /etc/mongodb.conf /etc/mongodbnew.conf and editing the following lines in the new file - 


# mongodbnew.conf

dbpath=/var/lib/mongodbnew

#where to log
logpath=/var/log/mongodb/mongodbnew.log

port = 27018

J'ai changé le dbpath (où les fichiers mongodb sont stockés) de / var / lib / mongodb à / var / lib / mongodbnew; le chemin du journal est passé de mongodb.log à mongodbnew.log et le port est passé de la valeur par défaut de 27017 à 27018 (vous devrez également supprimer le # pour décommenter la ligne).

J'ai également changé la ligne supérieure pour refléter le nouveau nom de ce fichier de configuration.

Vous devrez également créer le répertoire de données car il n'existera pas et sans lui, le processus mongod ne démarrera pas et vous assurera que le propriétaire et le groupe sont mongodb -

sudo mkdir /var/lib/mongodbnew
sudo chown -R mongodb:mongodb mongodbnew/

De plus, créez et modifiez les persmissions de votre fichier journal -

sudo touch /var/log/mongodb/mongodbnew.log && sudo chown mongodb:mongodb /var/log/mongodb/mongodbnew.log

Pour démarrer votre nouveau processus mongod (en arrière-plan) à partir du cli, tapez

sudo -u mongodb /usr/bin/mongod --config /etc/mongodbnew.conf &

qui envoient ce qui suit à l'écran -

"toutes les sorties vont à: /var/log/mongodb/mongodbnew.log"

Vérifiez que les processus mongod fonctionnent avec "ps" -

sysadmin@ubuntu:/var/lib$ ps auwx | grep mongo | egrep -v 'grep|sudo'
mongodb    921 11.3  1.5 627672 15608 ?        Ssl  10:56   4:30 /usr/bin/mongod --config /etc/mongodb.conf
mongodb   2137  7.8  1.5 627672 15880 pts/0    Sl   11:36   0:00 /usr/bin/mongod --config /etc/mongodbnew.conf

Pour vérifier que vous pouvez vous connecter, exécutez le shell Mongo -

$ mongo --port 27018
MongoDB shell version: 2.0.5
connecting to: 127.0.0.1:27018/test
> 

Avec lsof, vous devriez maintenant voir vos deux processus mongod, l'original lié à 27017 et le nouveau lié à 27018.

$ sudo lsof -i :27017
COMMAND PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  921 mongodb    6u  IPv4   9066      0t0  TCP *:27017 (LISTEN)
sysadmin@ubuntu:/var/lib$ sudo lsof -i :27018
COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  2137 mongodb    6r  IPv4  11923      0t0  TCP *:27018 (LISTEN)

Pour vous assurer que les deux processus s'exécutent au démarrage, copiez le fichier de configuration init d'origine -

sudo cp /etc/init/mongodb.conf /etc/init/mongodbnew.conf

ce qui devrait se traduire par deux fichiers tels que -

$ ls -lart /etc/init/mongo*
-rw-r--r-- 1 root root 536 May  8 15:51 /etc/init/mongodb.conf
-rw-r--r-- 1 root root 554 Jun 11 11:43 /etc/init/mongodbnew.conf

Modifiez le nouveau fichier mongodbnew.conf en utilisant vi ou ce que vous préférez ressembler à ceci -


## Ubuntu upstart file at /etc/init/mongodbnew.conf

limit nofile 20000 20000

kill timeout 300 # wait 300s between SIGTERM and SIGKILL.

pre-start script
    mkdir -p /var/lib/mongodbnew/
    mkdir -p /var/log/mongodbnew/
end script

start on runlevel [2345]

arrêt au niveau d'exécution [06]

script
  ENABLE_MONGODB="yes"
  if [ -f /etc/default/mongodbnew ]; then . /etc/default/mongodbnew; fi
  if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --exec                /usr/bin/mongod -- --config /etc/mongodbnew.conf; fi

script de fin

J'ai testé cela sur Ubuntu 12.04 et cela semble bien fonctionner, y compris après un redémarrage. Je ne l'ai évidemment pas exécuté en production. Toutes mes excuses, s'il y a une faute de frappe ci-dessus mais il y a beaucoup d'informations et j'ai peut-être raté quelque chose.

Enfin, voici un lien sur les jeux de répliques qui pourrait vous aider car il contient des exemples de démarrage de plusieurs instances de mongod à partir du cli - http://www.mongodb.org/display/DOCS/Replica+Set+Tutorial .

Mark Hillick
la source
Le lien pour install-mongodb-on-debian-or-ubuntu-linux a été changé en docs.mongodb.org/manual/tutorial/install-mongodb-on-debian et docs.mongodb.org/manual/tutorial/install-mongodb -on-ubuntu .
Fernando Kosh
2

J'ai rencontré un problème avec la réponse ci-dessus où stop-start-daemon ne démarre pas un nouveau processus avec le même nom plus d'une fois. Cependant, il existe un --nameargument qui vous permet de modifier la ligne dans votre script upstart /etc/init/pour inclure un nouveau nom afin qu'il démarre. Quelque chose comme ça:

if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --name mongodb-shard2 --exec /usr/bin/mongod -- --config /etc/mongodb-shard2.conf; fi

Dans ce cas, l' --nameargument rend cette instance unique et lui permet de démarrer séparément des autres instances de mongod.

Michael Peterman
la source
0

upstart les scripts se trouvent dans /etc/init/

jjwchoy
la source
thnx, il y a un mongodb.conf mais c'est le fichier conf par défaut pour l'instance en cours d'exécution
Je viens de jeter un œil à mon mongodb.conf, il sources / etc / default / mongodb probablement pour la configuration, puis démarre mongodb en utilisant start-stop-daemon
vous pouvez copier ce fichier et modifier la commande pour démarrer mongodb avec un port différent. vous voulez probablement spécifier un tout nouveau fichier de configuration pour pouvoir changer les fichiers journaux, etc.