Lucian Maran

home

Instalare MongoDB pe Ubuntu, in Microsoft Azure

04 Sep 2014

Introducere

Desi cu cunostinte limitate in lumea "Linux", am decis totusi sa gazduiesc MongoDB pe un SO ce functioneaza cu resurse hardware minimale - Ubuntu. Ideia era sa incep cu instanta minima (A0 - 768 MB), urmand sa o upgradez pe masura ce traficul si dimensiunea bazelor de date cresc.

Un alt argument ar fi pretul direct. La aceleasi resurse (RAM + CPU), o masina Linux este substantial (~25%) mai ieftina decat un server Windows.

Versiunile instalate:

1. Creaza o noua masina virtuala (VM) folosind portalul Azure

Pasii ii presupun cunoscuti (detalii aici) dar am sa adaug cateva observatii:

2. Instaleaza Putty si acceseaza remote masina

3. Instaleaza MongoDB

Daca folosesti procedura de instalare recomandata de MongoDB, fisierele de date si log (si binarele, bineinteles) se vor stoca implicit pe disk-ul C. Nu poti modifica acest lucru in timpul instalarii dar o poti face ulterior.

Pasii sunt explicati pe larg aici. Eu am sa notez doar secventa de comenzi:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
sudo apt-get update
sudo apt-get install -y mongodb-org

4. Ruleaza MongoDB

Reporneste serviciul care ruleaza pe server (mongod):

sudo service mongod stop
sudo service mongod start

OBS - fara etapa de start si stop primeam eroare la conectare: "Connection refused". La prima instalare a fost nevoie chia de un restart.

Lanseaza client-ul de interogare (mongo):

mongo

Ca si test, afiseaza lista cu DB existete:show dbs sau help-ul cu toate celelalte comenzi: help

5. Ataseaza un nou disk la VM

Se recomanda ca datele si log-urile din Mongo sa stea pe un alt disk decat cel dedicat pt. SO. Asadar, din portalul de Azure se ataseaza masinii un nou disk sub forma unui blob. Detalii aici.

6. Partitioneaza, formateaza si monteaza noul disk in Ubuntu

Am sa prezint in continuare o "compilatie" personala inspirata din mai multe surse: doc1, doc2, doc3.

1. Verifica lista cu disk-urile instalate (ca sa stii ce disk sa partitionezi).

sudo lshw -C disk

In Azure, primul disk atasat va fi, de regula, al 3-lea disk (ex: \dev\sdc):

2. Partitioneaza disk-ul identificat anterior (voi pp. in continuare ca noul disk = \dev\sdc)

sudo fdisk /dev/sdc

3. Optional. Verifica anumele partitiei. Partitia mai sus creata va fi /dev/sdc1. (Are un "1" in plus fata de disk).

 sudo fdisk /dev/sdc

4. Formateaza partitia /dev/sdc1 cu formatul "ext4":

sudo mkfs -t ext4 /dev/sdc1

5. Verifica partitia nou creata si copiaza-i UUID-ul (vei avea nevoie de el ulterior):

sudo -i blkid

6. Creaza folder-ul la care urmeaza sa montezi noul drive. Aici se recomanda ca acest folder sa se numeasca /media:

sudo mkdir /media/mongodrive

7. Monteaza partitia /dev/sdc1 la folder-ul anterior creat:

sudo mount /dev/sdc1 /media/mongodrive

8. Optional. Verifica drive-ul nou montat:

sudo df -h

9. Configureaza ca remontarea disk-ului sa se faca automat dupa reboot. Acest lucru se face prin editarea fisierului /etc/fstab. Atentie! - daca editezi ceva incorect sistemul nu mai booteaza. Deschide fisierul cu editorul "nano":

sudo nano -w /etc/fstab

Adauga la sfarsitul fisierului linia:

UUID=5e1ccfd5-e58a-456f-a78d-84bb5cb09fea   /media/mongodrive   ext4   defaults   0   2

unde valoare lui UUID se obtine cu comanda sudo -i blkid (prezentata anterior)

10. Optional. Restarteaza sistemul (sudo reboot) si asigura-te ca disk-ul s-a montat automat (sudo df -h)

7. Redirecteaza MongoDB catre noul drive

Doar datele si log-ul. Detalii aici.

1. Editeaza fisierul /etc/mongodb.conf:

sudo nano -w /etc/mongod.conf

Editeaza urmatorii parametri: - dbpath=/media/mongodrive/data - logpath=/media/mongodrive/mongod.log - bind_ip=0.0.0.0 (sau comenteaza linia) - implicit Mongo nu permite accesul decat de pe masina locala)

2. Creaza folder-ul 'data'

sudo mkdir /media/mongodrive/data

3. Schimba owner-ul la folder-ul 'mongodrive' (root --> mongodb)

sudo chown -R mongodb:mongodb /media/mongodrive/

4. Optional. Verifica noile drepturi cu:

cd /media/mongodrive
ls -l

5. Restarteaza serviciul mongod. Asta trebuie facut dupa orice modificare a fisierului mongod.conf:

sudo service mongod restart

6. Optional. Testezi rezultatul final. Rulezi inca odata comanda ls -l (din folder-ul /media/mongodrive) si ar trebui sa apara deja fisierul mongod.log. Totodata, in folder-ul data ar trebui sa apara primele fisiere de mongo:

cd data
ls -l

8. Concluzie

Instalarea si configurarea unei instante de MongoDB nu este la fel de simpla pe Linux ca si pe Windows dar, pentru situatiile in care platesti hosting-ul "din buzunar", merita efortul.

comments powered by Disqus