web-dev-qa-db-fra.com

Impossible de créer un fichier de verrouillage lors du démarrage de mongod via Upstart

J'essaie de configurer mon script de démarrage mongodb pour qu'il fonctionne en tant qu'arbitre, mais je rencontre des problèmes d'autorisations lorsque j'essaie de créer le fichier de verrouillage dans le répertoire de données:

Tue Apr  1 17:11:01 [initandlisten] options: { config: "/etc/mongodb.conf", dbpath: "/tmp/arb", journal: "true", logappe
nd: "true", logpath: "/var/log/mongodb/mongodb-arbiter.log", port: 27017, replSet: "rs1" }
Tue Apr  1 17:11:01 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /tmp/arb/mongod.l
ock errno:13 Permission denied Is a mongod instance already running?, terminating

Il n'y a définitivement aucun fichier de verrouillage présent et aucun autre processus mongod n'est en cours d'exécution (ps -A | grep mongod ne renverra rien).

Aussi, quand j'essaie de démarrer le processus mongod

mongod --fork --port 27017 --dbpath /data/arb --replSet rs1 --logpath /var/log/mongodb.log

cela produira également la même erreur si vous n'êtes pas Sudoed.

Comment puis-je configurer les bonnes autorisations pour que le script upstart puisse écrire des données dans /data/arb?

4
m90

Vous devez disposer des autorisations sur ce dossier (et tout ce qui se trouve en dessous) de sorte que l'utilisateur mongodb puisse y écrire. La raison pour laquelle il travaille avec Sudo est que l'utilisateur root dispose de ces autorisations, quel que soit le propriétaire/groupe. En fait, c’est peut-être là la cause première: lorsque vous exécutez le processus mongod avec Sudo, il crée les fichiers avec la propriété root:root auxquels l’utilisateur normal de mongodb ne peut pas accéder.

Le user:group de MongoDB sur Ubuntu est généralement mongodb:mongodb, par conséquent, procédez comme suit:

cd /tmp/arb
Sudo chown -R mongodb:mongodb .

Puisque vous utilisez un arbitre ici, je vous recommanderais également les options suivantes dans votre fichier de configuration (remarque: ne pas utiliser sur un nœud de données ordinaire - arbitre uniquement):

Ces paramètres minimiseront l'empreinte de l'arbitre sur l'hôte.

5
Adam C