2015-05-12 9 views
7

Stiamo configurando un server MongoDB per l'ambiente di produzione sull'istanza di Amazon EC2, ma non è possibile avviare il servizio. Ho seguito la documentazione this per l'installazione. Qui sono i passi, ho preso per la configurazione del server:Impossibile avviare il servizio MongoDB 3.0.2 su CentOS 7

stato aggiunto il seguente /etc/yum.repos.d/mongodb-org-3.0.repo

[mongodb-org-3.0] 
name=MongoDB Repository 
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/ 
gpgcheck=0 
enabled=1 

e installati MongoDB 3.0.2 utilizzando sudo yum install -y mongodb-org-3.0.2

creati tre partizioni per i dati, giornale & registro:

sudo mkdir /mongo 
sudo mkdir /mongo/data 
sudo mkdir /mongo/log 
sudo mkdir /mongo/journal 

File system creato per tre partizioni separate:

sudo mkfs.ext4 /dev/xvdb 
sudo mkfs.ext4 /dev/xvdc 
sudo mkfs.ext4 /dev/xvdd 

voce creata in fstab per il riavvio:

echo '/dev/xvdb /mongo/data ext4 defaults,auto,noatime,noexec 0 0 
/dev/xvdc /mongo/journal ext4 defaults,auto,noatime,noexec 0 0 
/dev/xvdd /mongo/log ext4 defaults,auto,noatime,noexec 0 0' | sudo tee -a /etc/fstab 

e montate le partizioni:

sudo mount /mongo/data 
sudo mount /mongo/journal 
sudo mount /mongo/log 

Dati i permessi e il collegamento

sudo chown mongod:mongod /mongo/data /mongo/journal /mongo/log 
sudo ln -s /mongo/journal /mongo/data/journal 

Configuratocreati& impostazioni di lettura avanti come indicato nel collegamento della documentazione sopra. le autorizzazioni e le partizioni verificati:

[[email protected] ~]$ df -h 
Filesystem  Size Used Avail Use% Mounted on 
/dev/xvda1  8.0G 1.3G 6.8G 16%/
devtmpfs  3.6G  0 3.6G 0% /dev 
tmpfs   3.5G  0 3.5G 0% /dev/shm 
tmpfs   3.5G 57M 3.4G 2% /run 
tmpfs   3.5G  0 3.5G 0% /sys/fs/cgroup 
/dev/xvdc  7.8G 36M 7.3G 1% /mongo/journal 
/dev/xvdb  150G 51M 149G 1% /mongo/data 
/dev/xvdd  3.9G 16M 3.6G 1% /mongo/log 

Permessi:

[[email protected] ~]$ ll/
total 32 
lrwxrwxrwx. 1 root root  7 Sep 29 2014 bin -> usr/bin 
dr-xr-xr-x. 4 root root 4096 Sep 29 2014 boot 
drwxr-xr-x. 17 root root 2860 May 11 12:11 dev 
lrwxrwxrwx. 1 root root  7 Sep 29 2014 lib -> usr/lib 
lrwxrwxrwx. 1 root root  9 Sep 29 2014 lib64 -> usr/lib64 
drwxr-xr-x. 2 root root  6 Jun 10 2014 mnt 
drwxr-xr-x. 5 mongod mongod 41 May 11 05:06 mongo 
drwxr-xr-x. 21 root root 660 May 11 12:47 run 
lrwxrwxrwx. 1 root root  8 Sep 29 2014 sbin -> usr/sbin 

All'interno /mongo

[[email protected] ~]$ ll /mongo/ 
total 12 
drwxr-xr-x. 3 mongod mongod 4096 May 11 07:33 data 
drwxr-xr-x. 3 mongod mongod 4096 May 11 07:31 journal 
drwxr-xr-x. 3 mongod mongod 4096 May 11 08:58 log 

Dopo aver modificato le configurazioni all'interno /etc/mongodb.conf

logpath=/mongo/log/mongod.log 
dbpath=/mongo/data 

e quando sto facendo: sudo service mongod start, sto ottenendo questo errore:

Starting mongod (via systemctl): Job for mongod.service failed. See 'systemctl status mongod.service' and 'journalctl -xn' for details. 
                  [FAILED] 

Ulteriori registrazione:

[[email protected] ~]$ sudo systemctl status mongod.service 

mongod.service - SYSV: Mongo is a scalable, document-oriented database. 
    Loaded: loaded (/etc/rc.d/init.d/mongod) 
    Active: failed (Result: exit-code) since Tue 2015-05-12 04:42:10 UTC; 42s ago 
    Process: 22881 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, status=1/FAILURE) 

May 11 04:42:10 ip-xx-xx-xx-xx.local runuser[22887]: pam_unix(runuser:session): session opened for user mongod by (uid=0) 
May 11 04:42:10 ip-xx-xx-xx-xx.localdomain runuser[22887]: pam_unix(runuser:session): session closed for user mongod 
May 11 04:42:10 ip-xx-xx-xx-xx.local mongod[22881]: Starting mongod: [FAILED] 
May 11 04:42:10 ip-xx-xx-xx-xx.local systemd[1]: mongod.service: control process exited, code=exited status=1 
May 11 04:42:10 ip-xx-xx-xx-xx.local systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database.. 
May 11 04:42:10 ip-xx-xx-xx-xx.local systemd[1]: Unit mongod.service entered failed state. 

Ho seguito gli articoli e post di blog e risposte StackExchange varie, ma non l'ho fatto ottenere qualsiasi soluzione. Mi sto perdendo qualcosa?

Aggiornamento: Se sto correndo direttamente il servizio mongodb dal normale utente qualcosa di simile a questo: sudo mongod --logpath ~/mongod.log --dbpath ~/mongodata, allora questo servizio si avvia correttamente.

Abbiamo provato a cambiare il percorso del file pid in un'altra directory, che non ha aiutato neanche.

+0

Può essere utile questo collegamento https://groups.google.com/forum/#!topic/mongodb-user/fwpzEkFv7E4. – achuth

+0

Grazie a @achuth per aver dedicato del tempo. Sebbene, ho già esaurito il collegamento che hai fornito, ma non funziona neanche. Inoltre, questa soluzione è necessaria quando abbiamo una piccola dimensione della directory 'journal'. Ma abbiamo ottenuto 8 GB per quello. –

+0

posterete le dichiarazioni in mongod.log. Stai iniziando mongodb come root o altro? – achuth

risposta

1

Nel caso in cui, chiunque incontrato lo stesso problema con l'avvio MongoDB, qui è il filo di commenti https://jira.mongodb.org/browse/SERVER-18439. È programmato per essere corretto in 3.1.

+0

Hai funzionato? Il ticket continua a non essere risolto e sto incontrando un problema che appare superficialmente simile in un'istanza di centos7 piuttosto pulita. – TZHX

+0

Come ho accennato nella domanda, stavo eseguendo il MongoDB usando il comando poiché il servizio non funzionava. Dopodiché, non abbiamo aggiornato il server o il MongoDB. @TZHX –

4

Immagino che tu stia utilizzando un po 'di Linux che usa SELinux (RHEL o CentOS 7, forse?)

Se è così, il problema è che non si dispone di una politica permissiva nella directory /mongo/ che permette l'accesso ai demoni (come il servizio mongod)

Da Wikipedia:.

SELinux can potentially control which activities a system allows each user, process and daemon, with very precise specifications. However, it is mostly used to confine daemons[citation needed] like database engines or web servers that have more clearly defined data access and activity rights. This limits potential harm from a confined daemon that becomes compromised. Ordinary user-processes often run in the unconfined domain, not restricted by SELinux but still restricted by the classic Linux access rights

per verificare se questo è il problema, provare questo alla shell:

sudo setenforce 0

questo dovrebbe disabilitare i criteri SELinux e consentire l'esecuzione del servizio.

Per una soluzione più permanente, vedere https://wiki.centos.org/HowTos/SELinux

+0

Grazie @Lee per aver risposto a questo. Ho già provato la tua soluzione prima ma non ho funzionato. È il problema con MongoDB e Centos7, vedere https://jira.mongodb.org/browse/SERVER-18439?focusedCommentId=915785&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-915785 –

2

Mi sono imbattuto in questo problema e in realtà ho trovato una soluzione per me.

In breve, mongodb 3.2 utilizza l'utente "mongod" mentre le versioni precedenti utilizzano "mongodb". Alcuni file e directory erano di proprietà di "mongodb" (l'utente più anziano). Una volta che li ho modificati con l'utente 'mongod', sono stato in grado di usare systemctl per controllare il processo mongod.

In particolare, si trattava dei file "/ var/log/mongodb/*" con proprietà dell'utente errata.

[email protected]<HOST>:# ls -alh /var/log/mongodb 
total 664K 
drwxr-xr-x 2 mongod mongod 4.0K Oct 27 12:08 . 
drwxr-xr-x. 22 root root 4.0K Oct 27 11:51 .. 
-rw-r--r-- 1 mongodb mongodb 3.8K Oct 27 11:48 mongod.log 
-rw-r--r-- 1 mongodb mongodb 19K Apr 14 2016 mongod.log.2016-04-14T18-29-34 
-rw-r--r-- 1 mongodb mongodb 2.8K Apr 14 2016 mongod.log.2016-04-14T18-30-13 
-rw-r--r-- 1 mongodb mongodb 12K Apr 14 2016 mongod.log.2016-04-14T22-27-27 
-rw-r--r-- 1 mongodb mongodb 11K Apr 14 2016 mongod.log.2016-04-14T22-29-12 
-rw-r--r-- 1 mongodb mongodb 5.6K Apr 18 2016 mongod.log-20160418.gz 
-rw-r--r-- 1 mongodb mongodb 0 Apr 18 2016 mongod.log.2016-09-09T17-33-48 
-rw-r--r-- 1 mongodb mongodb 3.6K Sep 9 11:34 mongod.log.2016-09-09T17-34-52 
-rw-r--r-- 1 mongodb mongodb 23K Sep 9 11:49 mongod.log.2016-09-09T17-49-49 
-rw-r--r-- 1 mongodb mongodb 5.0K Sep 9 11:55 mongod.log.2016-09-09T17-55-15 
-rw-r--r-- 1 mongodb mongodb 5.0K Sep 9 12:02 mongod.log.2016-09-09T18-02-26 
-rw-r--r-- 1 mongodb mongodb 5.0K Sep 9 12:13 mongod.log.2016-09-09T18-13-17 
-rw-r--r-- 1 mongodb mongodb 5.0K Sep 9 12:25 mongod.log.2016-09-09T18-25-01 
-rw-r--r-- 1 mongodb mongodb 5.2K Sep 9 12:47 mongod.log.2016-09-09T18-47-54 
-rw-r--r-- 1 mongodb mongodb 5.0K Sep 9 12:52 mongod.log.2016-09-09T18-52-16 
-rw-r--r-- 1 mongodb mongodb 5.0K Sep 9 12:54 mongod.log.2016-09-09T18-54-49 
-rw-r--r-- 1 mongodb mongodb 5.0K Sep 9 13:01 mongod.log.2016-09-09T19-01-22 
-rw-r--r-- 1 mongodb mongodb 3.0K Sep 9 13:03 mongod.log.2016-09-09T19-03-21 
-rw-r--r-- 1 mongodb mongodb 215K Sep 9 14:25 mongod.log.2016-09-09T20-25-59 
-rw-r--r-- 1 mongodb mongodb 281K Sep 10 03:42 mongod.log-20160910 
-rw-r--r-- 1 mongodb mongodb 0 Sep 10 03:42 mongod.log.2016-10-27T17-42-42 
-rw-r----- 1 mongod mongod  0 Sep 29 22:03 mongod.log.rpmnew 

Avviso il proprietario della directory è 'mongod' (il nuovo utente), mentre i file di registro sono tutti di proprietà di 'MongoDB' (il vecchio utente).

+0

Oh! corretta. Questo potrebbe essere il problema, ma non posso testarlo poiché non ho più accesso a quel server. Ma grazie per l'aggiornamento e il tempo. Aiuterà l'altro utente. –