Podnikanie so sebou prináša množstvo dát, čo sťažuje ich spracovanie a správu. Tradične priemysel už po desaťročia využíva systémy RDBMS, ale s príchodom Big Data v 21. storočí sa na scénu dostali databázy NoSQL (Not only SQL) pre rozsiahle neštruktúrované a pološtruktúrované dáta.
V tomto príspevku sa chystám nastaviť cluster MongoDB.
MongoDB je bezplatná a open-source NoSQL dokumentová databáza, ktorá je široko používaná vďaka vysokej úrovni škálovateľnosti a flexibility, ktorú poskytuje.
Na nasadenie MongoDB v produkcii sa odporúča použiť replikačné sady (Replica Sets). Replikačné sady sú ekvivalentom nastavenia Master/Slave v relačnom svete v podaní MongoDB, ale na rozdiel od neho je ich nastavenie veľmi bezbolestné, keďže všetko je už zabudované. Viac informácií o replikačných sadách nájdete v definícii procesu replikácie od TutorialsPoint’s.
Plánovanie vášho cloudového serverového clustera MongoDB
Chystám sa vytvoriť 3-uzlový cluster. Je dôležité poskytnúť im rovnaké zdroje, pretože ktorýkoľvek z nich sa môže stať primárnym (t. j. master) serverom. Tieto uzly alebo stroje môžu bežať na akomkoľvek operačnom systéme, ale v tomto návode budem používať Ubuntu 18.04 LTS. Informácie o tom, ako pripojiť a nastaviť predinštalovaný obraz z knižnice CloudSigma’s, nájdete v tomto návode.
Keďže celým zmyslom replikačnej sady je, aby cluster prežil výpadok jedného uzla, bolo by dosť zbytočné, keby všetky vaše servery sídlili na rovnakom fyzickom hostiteľovi. Našťastie CloudSigma ponúka niečo, čo sa nazýva skupiny dostupnosti. To znamená, že môžete systému prikázať, aby zoskupil všetky tri vaše servery do rôznych skupín. Vďaka tomu nebudú nikdy umiestnené na rovnakom fyzickom hostiteľovi. Viac informácií o tejto a ďalších funkciách zabezpečenia a kontinuity podnikania nájdete tu.
Dôležité je tiež použiť 64-bitovú verziu Linuxu. Dôvodom je jednoducho to, že MongoDB nefunguje dobre na 32-bitových systémoch (viac o tom tu).
Inštalácia MongoDB v cloude
Táto časť je pomerne jednoduchá. Buď použite jeden z predkonfigurovaných obrazov Ubuntu 18.04 alebo si ho nainštalujte sami.
Konfigurácia procesora, pamäte RAM a disku je naozaj individuálna a závisí od vášho zaťaženia. Pre menšiu inštaláciu by mal stačiť 4 GHz procesor, 4 GB RAM a 10 GB disk (pre systém). Keď pripájate disky, uistite sa, že používate VirtIO. Ak použijete IDE, výkon výrazne utrpí. Taktiež, keďže vytvárate replikačnú sadu, potrebujete, aby boli všetky uzly (a aplikačné servery) v rovnakej sieti VLAN.
Na rozdiel od mnohých iných poskytovateľov cloudových služieb nie je potrebné konfigurovať úložisko pomocou RAID10 alebo podobne na zvýšenie výkonu. Ako uvádza mnoho našich klientov, s CloudSigma získate úžasný výkon hneď po vybalení z krabice pri použití SSD aj magnetických diskov.
Stále odporúčam uchovávať dáta MongoDB na samostatnom disku. Dôvodom je jednoducho to, že v určitom okamihu možno budete musieť vykonať optimalizáciu súborového systému, ktorú by ste nechceli robiť na celom súborovom systéme.
S ohľadom na to je najjednoduchšie pridať tento disk až po nastavení serverov. Nateraz sa zamerajme len na inštaláciu systému. Ak inštalujete sami (namiesto použitia predkonfigurovaných systémov), odporúčam vám stlačiť kláves F4 v bootovacom menu a vybrať ‘Install a minimal virtual machine’.
Vytváram 3 stroje, každý s nasledujúcimi špecifikáciami:
- CPU: 4 GHz
- RAM: 4 GB
- SSD: 10 GB (Ubuntu 18.04 LTS), 20 GB (extra disk)
Ako je uvedené v časti o SSD, pripájam disk s veľkosťou 10 GB, na ktorom je nainštalovaný systém Ubuntu 18.04 LTS.
Okrem toho k nemu pripájam ďalší prázdny disk s veľkosťou 20 GB na ukladanie dát MongoDB. Veľkosť tohto disku veľmi závisí od vášho používania, ale pre malý systém by malo 20 GB pravdepodobne stačiť. Keďže je však niekedy ťažké predpovedať, koľko dát uložíte, použijeme LVM. To vám umožní neskôr jednoducho pridať ďalší disk a rozšíriť zväzok bez toho, aby ste museli začínať odznova. Prípadne môžete použiť jeden disk a neskôr ho zväčšiť pomocouresize2fs.
Ak chcete pridať disk, prejdite do sekcie ‘Drives’, kliknite na ikonu ‘Create a new drive’ v hornej časti, pomenujte nový disk a nastavte jeho veľkosť na 20 GB. Po uložení prejdite do konkrétneho stroja, ku ktorému ho chcete pripojiť, a v sekcii diskov v detailoch tohto stroja kliknite na ‘Attach a drive’ a vyberte disk.
Teraz, keď máte tri stroje, môžete prejsť k pripojeniu dodatočného disku, ktorý ste pridali pre úložisko dát MongoDB, ku každému stroju. Odporúčam pridať tento disk ako oddiel. Použitie rozdelenia na oddiely umožňuje operačnému systému spravovať informácie v každej oblasti samostatne. Ak chcete pridať disk ako oddiel, najprv skontrolujem všetky disky pripojené k nášmu stroju. Na tento účel vykonám nasledujúci príkaz:
|
1 |
fdisk -l |
Po vykonaní príkazu sa zobrazí výstup s informáciami o diskoch a zariadeniach v mojom stroji.

Na obrázku som označil 10 GB disk ako ten, na ktorom je nainštalovaný náš OS. Potom je tu ďalší disk s veľkosťou 20 GB, ktorý je teraz pripojený. Umiestnenie disku je /dev/vdb. Na tomto disku môžete vytvoriť oddiel pomocou nasledujúcich príkazov:
|
1 |
sudo fdisk /dev/vdb |
Otvorí sa nástroj fdisk, nástroj príkazového riadka, ktorý poskytuje funkcie na rozdelenie disku, v ktorom môžete vytvárať oddiely na našom disku. Zobrazí sa výzva “Command (m for help):”, kde musíte zadať n na vytvorenie nového oddielu a potom stačí stláčať enter na prijatie predvolených hodnôt. A po vytvorení oddielu zadajte w na zápis zmien. Bude to vyzerať takto:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Príkaz (m pre nápovedu): <strong>n</strong> Typ oddielu p primárny (0 primárny, 0 rozšírený, 4 voľné) e rozšírený (kontajner pre logické oddiely) Vybrať (predvolené p): Používa sa predvolená odpoveď p. Číslo oddielu (1-4, predvolené 1): Prvý sektor (2048-41943039, predvolený 2048): Posledný sektor, +sektory alebo +veľkosť{K,M,G,T,P} (2048-41943039, predvolený 41943039): Vytvorený a nový oddiel 1 typu type 'Linux' a o veľkosti 20 GiB. Príkaz (m pre nápovedu): <strong>w</strong> Tabuľka oddielov bola zmenenábeen altered. Volá sa ioctl() na opätovné-načítanie tabuľky oddielov. Synchronizujú sa disky. |
Vytvoril sa nový oddiel 1 typu ‘Linux’ a o veľkosti 20 GiB. Teraz, keď je oddiel vytvorený, vytvorme LVM pool:
|
1 2 3 |
sudo pvcreate /dev/vdb1 sudo vgcreate mongodb /dev/vdb1 sudo lvcreate -n db -L 19.5g mongodb |
Zadal som ‘19.5g’, keďže veľkosť môjho oddielu je 20g. Ďalej vykonajte nasledujúci príkaz, aby ste zistili názov disku:
|
1 |
fdisk -l | grep mongo | awk '{print $2'} |
Potom naformátujte disk pomocou metódy ext4 nasledujúcim príkazom:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
sudo mkfs.ext4 /dev/mapper/mongodb-db Výstup: root@m4:/home/cloudsigma# sudo mkfs.ext4 /dev/mapper/mongodb-db mke2fs 1.44.1 (24-Mar-2018) Vytvára sa súborový systém s 5217280 4k blokmi a 1305600 inodmi Súborový systém UUID: 695a62e6-021d-4fc0-945c-cc51a92d86da Superblok zálohy uložené na blokoch: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Alokujú sa skupinové tabuľky: hotovo Zapisujú sa inodové tabuľky: hotovo Vytvára sa žurnál (32768 bloky): hotovo Zapisujú sa superbloky a súborového systému účtovné informácie: hotovo |
Ďalej vytvorme miesto na pripojenie disku a priečinok, do ktorého sa budú ukladať vaše dáta MongoDB.
|
1 |
sudo mkdir -p /mongodb/data |
Ak chcete do súboru fstab pridať záznam o vašom novom disku, ktorý sa má pripojiť, môžete priamo použiť nasledujúci príkaz:
|
1 |
echo -e "` blkid | grep mongodb | awk {'print $2'}`\t/mongodb\text4 auto,noexec,rw,sync,nouser\t0\t0" >> /etc/fstab |
V tomto príkaze blkid vám poskytne UUID – univerzálne jedinečný identifikátor (Universally Unique Identifier) každého disku. Tu vyfiltrujem ten pre disk MongoDB a skombinujem toto UUID s umiestnením priečinka pripojenia, typom súborového systému a ďalšími možnosťami pre disk. Tento riadok pridávam do /etc/fstab. Ak to neurobíte, pri pripájaní disku sa zobrazí chyba. Záznam vyzerá takto:
UUID=”695a62e6-021d-4fc0-945c-cc51a92d86da” /mongodb ext4 auto,noexec,rw,sync,nouser 0 0
Teraz môžete disk pripojiť do umiestnenia /mongodb:
|
1 |
sudo mount /mongodb |
Inštalácia MongoDB
Keď je systém pripravený, prejdime k inštalácii MongoDB. Hoci Ubuntu ponúka verziu MongoDB vo svojom vlastnom repozitári, odporúčam vám namiesto toho použiť oficiálnu verziu MongoDB. Dôvodom je, že repozitár Ubuntu je vo verziách dosť pozadu, takže ak chcete z MongoDB vyťažiť maximum, budete sa musieť obrátiť na oficiálne vydania.
Keďže MongoDB ponúka svoj vlastný repozitár, môžete ho jednoducho pridať do svojho systému a potom nainštalovať MongoDB bežným spôsobom. Postupujte podľa týchto krokov:
Najprv importujte verejný kľúč používaný systémom správy balíkov:
|
1 |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 |
Potom vytvorím súbor zoznamu. Ten bude obsahovať repozitár, v ktorom sa nachádza MongoDB, aby ho váš systém mohol odtiaľ stiahnuť:
|
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 |
Teraz aktualizujem svoju lokálnu databázu balíkov, aby som zohľadnil zmeny.
|
1 |
sudo apt-get update |
Teraz môžem balík nainštalovať pomocou nasledujúceho príkazu:
|
1 |
sudo apt-get install -y mongodb-org |
Nainštaloval som MongoDB na každý zo strojov.
|
1 |
sudo service mongod start |
Teraz je MongoDB spustená a beží, pričom dáta na disku sú vytvorené. Ak sa očakáva veľké zaťaženie a/alebo veľa pripojení, možno budete musieť zvýšiť ulimit hodnoty.
Ak chcete získať lepší prehľad o svojich dátach, možno sa budete chcieť zaregistrovať aj do služby MMS, čo je bezplatná cloudová monitorovacia služba pre MongoDB.
Vytvorenie replikačnej sady pre váš MongoDB Cloud
Teraz vytvorme replikačnú sadu. Predtým sa musíte uistiť, že každý zo strojov dokáže navzájom komunikovať. Na tento účel prejdite a pridajte tieto záznamy do /etc/hosts
|
1 2 3 |
IP-1 m1.mongo.cluster m1 IP-2 m2.mongo.cluster m2 IP-3 m3.mongo.cluster m3 |
Pre overenie môžete skúsiť pingnúť stroje pomocou názvu hostiteľa. Takže ak IP adresa môjho stroja 1’s je IP-1, povedzme 213.189.123.12, potom namiesto písania
|
1 |
ping 123.189.123.12 |
napíšem,
|
1 2 3 |
ping m1.mongo.cluster alebo ping m1. |
Ak ste aktivovali firewall (čo by ste naozaj mali), uistite sa, že uzly môžu odosielať a prijímať TCP prevádzku na portoch 28017 a 27017 na internom rozhraní.
Teraz na každom zo strojov spustite službu mongod pomocou nasledujúcich príkazov.
Na stroji m1,
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m1.mongo.cluster |
Ďalej na stroji m2,
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m2.mongo.cluster |
Na stroji m3,
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m3.mongo.cluster |
Tu,
mongod je názov služby
dbpath je umiestnenie nášho databázového adresára
replSet je názov našej replikačnej sady. Mal by byť rovnaký pre každý zo strojov v rovnakej replikačnej sade
bind_ip je názov hostiteľa daného stroja, na ktorom ho spúšťate.
Po spustení služby mongod prejdite na primárny server (v mojom prípade som vybral m1) a spustite mongo.
|
1 |
mongo |
Spustí sa terminál MongoDB. V termináli prejdite a inicializujte replicaSet pomocou príkazu nižšie. Vytvorí sa replicaSet s predvolenými konfiguráciami:
|
1 |
rs.initiate() |
Teraz poďme’ pridať ďalšie dva stroje ako repliky pomocou nasledujúcich príkazov:
|
1 2 |
rs.add("m2.mongo.cluster") rs.add("m3.mongo.cluster") |
Stav môžete sledovať pomocou príkazu:
|
1 |
rs.status() |
To je naozaj všetko. Teraz by ste mali mať spustený a funkčný MongoDB cluster na bleskurýchlom cloude CloudSigma’s.
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.