Poslovanje podrazumijeva veliku količinu podataka, što otežava njihovo rukovanje i upravljanje. Tradicionalno, industrija već desetljećima koristi RDBMS sustave, no s pojavom Big Data u 21. stoljeću, NoSQL (Not only SQL) baze podataka ušle su u upotrebu za nestrukturirane i polustrukturirane podatke velikih razmjera.
U ovom postu postavit ću MongoDB klaster.
MongoDB je besplatna NoSQL dokumentna baza podataka otvorenog koda, koja se široko koristi zbog visoke razine skalabilnosti i fleksibilnosti koju pruža.
Za uvođenje MongoDB-a u produkciju, preporučljivo je koristiti Replica Sets. Replica sets su MongoDB-ov ekvivalent Master/Slave konfiguracije u relacijskom svijetu, ali su, nasuprot tome, vrlo jednostavni za postavljanje jer je sve ugrađeno. Za više informacija o skupovima replika, pogledajte TutorialsPoint’s definiciju procesa replikacije.
Planiranje vašeg MongoDB klastera poslužitelja u oblaku
Kreirat ću klaster od 3 čvora. Važno im je dodijeliti jednake resurse jer bilo koji od njih može postati primarni (tj. master) poslužitelj. Ovi čvorovi ili strojevi mogu raditi na bilo kojem operacijskom sustavu, ali u ovom vodiču koristit ću Ubuntu 18.04 LTS. O tome kako priložiti i postaviti unaprijed instaliranu sliku iz CloudSigma’s biblioteke, možete pogledati ovaj vodič.
Budući da je cijela poanta skupa replika (Replica Set) da klaster preživi pad jednog čvora, bilo bi prilično besmisleno da se svi vaši poslužitelji nalaze na istom fizičkom računalu. Srećom, CloudSigma nudi nešto što se zove grupe dostupnosti. To znači da možete naložiti sustavu da grupira sva tri vaša poslužitelja u različite grupe. Na taj način oni nikada neće biti na istom fizičkom računalu. Više informacija o ovome i drugim značajkama sigurnosti i kontinuiteta poslovanja možete pronaći ovdje.
Također je važno koristiti 64-bitnu verziju Linuxa. Razlog je jednostavno taj što MongoDB ne radi dobro na 32-bitnim sustavima (više o tome ovdje).
Instalacija MongoDB-a u oblaku
Ovaj odjeljak je prilično jednostavan. Ili upotrijebite jednu od unaprijed konfiguriranih Ubuntu 18.04 slika ili je instalirajte sami.
Konfiguracija procesora (CPU), radne memorije (RAM) i diska je doista individualna i ovisi o vašem opterećenju. Za manju instalaciju trebali bi biti dovoljni procesor od 4 GHz, 4 GB RAM-a i 10 GB diska (za sustav). Kada prilažete svoje diskove, provjerite koristite li VirtIO. Ako koristite IDE, performanse će značajno opasti. Također, budući da stvarate skup replika (Replica Set), trebate da svi čvorovi (i poslužitelji aplikacija) budu na istom VLAN-u.
Za razliku od mnogih drugih pružatelja usluga u oblaku, nema potrebe konfigurirati pohranu s RAID10 ili sličnim za poboljšanje performansi. Kako izvještavaju many of our clients, dobit ćete nevjerojatne performanse odmah nakon instalacije korištenjem i SSD-a i magnetskih diskova kod CloudSigma.
Ipak preporučujem držanje MongoDB podataka na zasebnom disku. Razlog tome je jednostavno taj što ćete u nekom trenutku možda morati napraviti određene optimizacije datotečnog sustava koje ne biste željeli primijeniti na cijeli datotečni sustav.
Imajući to na umu, najlakše je jednostavno dodati ovaj disk nakon postavljanja poslužitelja. Za sada se usredotočimo na instalaciju sustava. Ako instalirate sami (umjesto korištenja unaprijed konfiguriranih sustava), preporučujem da pritisnete F4 u izborniku za pokretanje i odaberete ‘Install a minimal virtual machine’.
Stvaram 3 stroja, svaki sa sljedećim specifikacijama:
- CPU: 4 GHz
- RAM: 4 GB
- SSD: 10 GB (Ubuntu 18.04 LTS), 20 GB (dodatni disk)
Kao što je navedeno u dijelu za SSD, prilažem disk veličine 10 GB s instaliranim sustavom Ubuntu 18.04 LTS.
Osim toga, prilažem još jedan prazan disk veličine 20 GB za pohranu MongoDB podataka. Veličina ovoga uvelike ovisi o vašoj upotrebi, ali za mali sustav 20 GB bi vjerojatno trebalo biti dovoljno. Međutim, budući da je ponekad teško predvidjeti koliko ćete podataka pohraniti, koristit ćemo LVM. To će vam omogućiti da kasnije jednostavno dodate još jedan pogon i proširite volumen bez potrebe za ponovnim pokretanjem. Alternativno, možete koristiti jedan pogon i kasnije ga povećati pomoćuresize2fs.
Za dodavanje diska jednostavno idite na odjeljak ‘Drives’, kliknite na ikonu ‘Create a new drive’ na vrhu, dajte novom disku naziv i postavite mu veličinu na 20 GB. Nakon što je spremljen, idite na pojedinačni stroj na koji ga želite priključiti i pod odjeljkom pogona u detaljima tog stroja možete kliknuti na ‘Attach a drive’ i odabrati disk.
Sada kada imate tri stroja, možete prijeći na montiranje dodatnog diska koji ste dodali za pohranu podataka MongoDB-a na svaki stroj. Preporučujem dodavanje ovog diska kao particije. Korištenje particioniranja omogućuje operacijskom sustavu da zasebno upravlja informacijama u svakoj regiji. Za dodavanje diska kao particije, najprije ću provjeriti sve diskove spojene na naš stroj. Za to ću izvršiti sljedeću naredbu:
|
1 |
fdisk -l |
Kada izvršim naredbu, dobivam ispis koji prikazuje diskove i uređaje na mom stroju.

Na slici sam označio disk od 10 GB kao onaj na kojem je instaliran naš OS. Zatim postoji još jedan disk od 20 GB koji je sada priključen. Lokacija diska je /dev/vdb. Možete stvoriti particiju na ovom disku pomoću sljedećih naredbi:
|
1 |
sudo fdisk /dev/vdb |
To će otvoriti uslužni program fdisk, uslužni program naredbenog retka koji pruža funkcije particioniranja diska, u kojem možete stvarati particije na našem disku. Prikazat će se upit “Command (m for help):” gdje trebate unijeti n za stvaranje nove particije, a zatim samo nastavite pritiskati enter za prihvaćanje zadanih vrijednosti. Nakon što stvori particiju, unesite w za zapisivanje promjena. To bi izgledalo ovako:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Naredba (m za pomoć): <strong>n</strong> Particija vrsta p primarna (0 primarna, 0 proširena, 4 slobodno) e proširena (spremnik za logičke particije) Odaberite (zadano p): Koristi se zadana odgovor p. Particija broj (1-4, zadano 1): Prvi sektor (2048-41943039, zadano 2048): Zadnji sektor, +sektori ili +veličina{K,M,G,T,P} (2048-41943039, zadano 41943039): Stvorena je nova particija 1 vrste tipa 'Linux' i veličine veličine 20 GiB. Naredba (m za pomoć): <strong>w</strong> Tablica particija je bila promijenjenaaltered. Pozivanje ioctl() za ponovno-čitanje tablice particija. Sinkronizacija diskova. |
Stvorena je nova particija 1 vrste ‘Linux’ i veličine 20 GiB. Sada kada je particija stvorena, stvorimo LVM bazen:
|
1 2 3 |
sudo pvcreate /dev/vdb1 sudo vgcreate mongodb /dev/vdb1 sudo lvcreate -n db -L 19.5g mongodb |
Unio sam ‘19.5g’ jer je veličina moje particije 20g. Zatim izvršite sljedeću naredbu kako biste saznali naziv diska:
|
1 |
fdisk -l | grep mongo | awk '{print $2'} |
Nakon toga formatirajte disk pomoću metode ext4 sljedećom naredbom:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
sudo mkfs.ext4 /dev/mapper/mongodb-db Izlaz: root@m4:/home/cloudsigma# sudo mkfs.ext4 /dev/mapper/mongodb-db mke2fs 1.44.1 (24-Ožu-2018) Stvaranje datotečnog sustava s 5217280 4k blokova i 1305600 inoda Datotečni sustav UUID: 695a62e6-021d-4fc0-945c-cc51a92d86da Superblok sigurnosne kopije pohranjene na blokovima: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Dodjeljivanje grupnih tablica: gotovo Pisanje inode tablica: gotovo Stvaranje žurnala (32768 blokova): gotovo Pisanje superblokova i datotečnog sustava obračunskih informacija: gotovo |
Zatim stvorimo lokaciju za montiranje diska i mapu u kojoj ćete čuvati svoje MongoDB podatke.
|
1 |
sudo mkdir -p /mongodb/data |
Kako biste dodali unos u fstab o vašem novom disku koji treba montirati, možete izravno koristiti naredbu u nastavku:
|
1 |
echo -e "` blkid | grep mongodb | awk {'print $2'}`\t/mongodb\text4 auto,noexec,rw,sync,nouser\t0\t0" >> /etc/fstab |
U naredbi, blkid daje UUID – univerzalno jedinstveni identifikator svakog diska. Ovdje izdvajam onaj za MongoDB disk pomoću naredbe grep i kombiniram ovaj UUID s lokacijom mape za montiranje, vrstom datotečnog sustava i drugim opcijama za disk. Dodajem ovu liniju u /etc/fstab. Ako to ne učinite, dobit ćete pogrešku prilikom montiranja diska. Unos izgleda ovako:
UUID=”695a62e6-021d-4fc0-945c-cc51a92d86da” /mongodb ext4 auto,noexec,rw,sync,nouser 0 0
Sada možete montirati disk na lokaciju /mongodb:
|
1 |
sudo mount /mongodb |
Instalacija MongoDB-a
Nakon što je sustav pripremljen, prijeđimo na instalaciju MongoDB-a. Iako Ubuntu nudi verziju MongoDB-a u vlastitom repozitoriju, preporučujem da umjesto toga koristite službenu verziju MongoDB-a. Razlog je taj što repozitorij Ubuntua prilično zaostaje s izdanjima, pa ako želite izvući maksimum iz MongoDB-a, morat ćete se okrenuti službenim izdanjima.
Budući da MongoDB nudi vlastiti repozitorij, možete ga jednostavno dodati u svoj sustav i zatim instalirati MongoDB kao i obično. Evo koraka koje trebate slijediti:
Prvo uvezite javni ključ koji koristi sustav za upravljanje paketima:
|
1 |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 |
Zatim stvaram datoteku popisa. Ona će sadržavati repozitorij u kojem se nalazi MongoDB, kako bi ga vaš sustav mogao preuzeti odande:
|
1 |
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list |
Sada ažuriram svoju lokalnu bazu podataka paketa kako bih uzeo u obzir promjene.
|
1 |
sudo apt-get update |
Sada mogu jednostavno instalirati paket pomoću sljedeće naredbe:
|
1 |
sudo apt-get install -y mongodb-org |
Instalirao sam MongoDB na svako od računala.
|
1 |
sudo service mongod start |
Sada je MongoDB pokrenut i radi, s podacima na stvorenom pogonu. Ako se očekuje veliko opterećenje i/ili mnogo veza, možda ćete morati povećati ulimit vrijednosti.
Ako želite dobiti bolji uvid u svoje podatke, možda biste se trebali prijaviti i za MongoDB-ov MMS, koji je besplatna usluga praćenja u oblaku za MongoDB.
Stvaranje skupa replika za vaš MongoDB Cloud
Sada stvorimo skup replika. Prije toga morate osigurati da svako od računala može komunicirati jedno s drugim. U tu svrhu idite i dodajte ove unose u /etc/hosts
|
1 2 3 |
IP-1 m1.mongo.cluster m1 IP-2 m2.mongo.cluster m2 IP-3 m3.mongo.cluster m3 |
Za provjeru, možete pokušati pingati strojeve pomoću naziva računala. Pa ako je IP adresa mog stroja 1’ IP-1, recimo, 213.189.123.12, tada umjesto pisanja
|
1 |
ping 123.189.123.12 |
napisat ću,
|
1 2 3 |
ping m1.mongo.cluster ili ping m1. |
Ako ste aktivirali vatrozid (što biste svakako trebali), provjerite mogu li čvorovi slati i primati TCP promet na portovima 28017 i 27017 na internom sučelju.
Sada na svakom od strojeva pokrenite uslugu mongod pomoću sljedećih naredbi.
Na stroju m1,
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m1.mongo.cluster |
Zatim, na stroju m2,
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m2.mongo.cluster |
Na stroju m3,
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m3.mongo.cluster |
Ovdje,
mongod je naziv usluge
dbpath je lokacija direktorija naše baze podataka
replSet je naziv našeg replikacijskog skupa. Trebao bi biti isti za svaki od strojeva u istom replikacijskom skupu
bind_ip je naziv računala (hostname) onog stroja na kojem ga pokrećete.
Nakon što pokrenete uslugu mongod, idite na primarni poslužitelj (u mom slučaju odabrao sam m1) i pokrenite mongo.
|
1 |
mongo |
To će pokrenuti MongoDB terminal. Na terminalu pokrenite i inicijalizirajte replicaSet pomoću donje naredbe. To će stvoriti replicaSet sa zadanim konfiguracijama:
|
1 |
rs.initiate() |
Sada dodajmo preostala dva stroja kao replike pomoću sljedećih naredbi:
|
1 2 |
rs.add("m2.mongo.cluster") rs.add("m3.mongo.cluster") |
Status možete pratiti pomoću naredbe:
|
1 |
rs.status() |
To je zapravo to. Sada biste trebali imati pokrenut svoj MongoDB klaster na CloudSigma’s nevjerojatno brzom oblaku.
Komentari
Još nema komentara. Budite prvi.