Scripts d’initialisation pour mongos et serveur de configuration pour le partitionnement MongoDB

J’ai créé une partition dans un environnement local à des fins de test.

J’ai trois serveurs de configuration sur 1 machine et 1 routeur de requête sur la même machine et deux nœuds de données sur deux machines différentes.

Tout fonctionne bien, mais mon problème est que je ne parviens pas à faire fonctionner tous les processus sur différents ports, car je n’ai pas de script start / stop. J’exécute des processus sur la ligne de commande avec & à la fin pour le rendre actif, ce qui est une très mauvaise façon de maintenir les processus actifs et parfois il meurt automatiquement.

S’il vous plaît aider ou fournir un moyen d’utiliser des scripts et aussi script peut gérer divers ports pour activer tous les processus sur une seule machine.

Vous ne devriez jamais chercher à piloter plusieurs instances à partir d’un seul script d’initialisation, car cela crée une quantité excessive de travail administratif lorsque vous effectuez le démarrage / l’arrêt de l’une des instances.

Vous devriez chercher à avoir un script d’initialisation pour chaque instance de processus de firebase database individuelle, car il s’agit des meilleures pratiques de Linux.

Pour la plupart, vous devriez pouvoir utiliser le script d’initialisation fourni par MongoDB, puis créer une copie renommée pour chaque instance de firebase database.

Vous devez ensuite créer des fichiers de configuration individuels pour chaque instance, qui doit contenir des configurations légèrement différentes et exécuter chaque instance sur son propre port, son propre chemin d’access et son propre fichier journal.

Vous pouvez ensuite pointer chaque script d’initialisation sur le fichier de configuration pour son instance et tout devrait fonctionner comme prévu.

Enfin, dans MongoDB, vous devez utiliser l’option –fork, qui fournit un moyen sûr de détacher MongoDB d’une instance de shell. Si vous devez absolument continuer à utiliser shell fork (l’opérateur &), vous devez envelopper MongoDB dans “nohup” pour éviter que l’instance soit fermée par une terminaison de votre shell. Cela ressemblerait à quelque chose comme: nohup &

Modifier: vous pouvez utiliser le même processus pour utiliser les mêmes scripts d’initialisation pour lancer MongoS. Vous devez trouver la ligne qui définit le binary mongod comme celui à exécuter. Sous toutes les dérivés de Debian, ce serait la variable DAEMON . Changez ceci pour indiquer mongos au lieu de mongod et c’est parti.

Pour le serveur de configuration, nous pouvons utiliser le script ci-dessous:

 #!/bin/bash ### BEGIN INIT INFO # Provides: MongoDB Config Server # Required-Start: $network # Required-Stop: $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/Stop MongoDB Config server ### END INIT INFO start() { /usr/bin/mongod --configsvr --dbpath /home/configdb/ --port 27018 & } stop() { for a in `ps -ef | grep 27018 | awk '{print $2}'`; do kill -9 $a; done } case $1 in start|stop) $1;; restart) stop; start;; *) echo "Run as $0 "; exit 1;; esac 

Nous pouvons utiliser les scripts comme ci-dessous exemple pour query_router:

 #!/bin/bash ### BEGIN INIT INFO # Provides: MongoDB Config Server # Required-Start: $network # Required-Stop: $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/Stop MongoDB Config server ### END INIT INFO start() { /usr/bin/mongos --configdb 192.168.3.187:27018 --port 27019 & } stop() { for a in `ps -ef | grep 27019 | awk '{print $2}'`; do kill -9 $a; done } case $1 in start|stop) $1;; restart) stop; start;; *) echo "Run as $0 "; exit 1;; esac 

Nous ne pouvons pas utiliser la configuration mongo par défaut pour les mongos car elle doit également définir la firebase database de configuration et les informations de port au démarrage.