Späť na blog

Ako nastaviť a optimalizovať MongoDB v Ubuntu vo verejnom cloude

Ako nastaviť a optimalizovať MongoDB v Ubuntu vo verejnom cloude

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:

Po vykonaní príkazu sa zobrazí výstup s informáciami o diskoch a zariadeniach v mojom stroji.

MongoDB

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:

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:

Vytvoril sa nový oddiel 1 typu ‘Linux’ a o veľkosti 20 GiB. Teraz, keď je oddiel vytvorený, vytvorme LVM pool:

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:

Potom naformátujte disk pomocou metódy ext4 nasledujúcim príkazom:

Ďalej vytvorme miesto na pripojenie disku a priečinok, do ktorého sa budú ukladať vaše dáta MongoDB.

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:

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:

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:

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ť:

Teraz aktualizujem svoju lokálnu databázu balíkov, aby som zohľadnil zmeny.

Teraz môžem balík nainštalovať pomocou nasledujúceho príkazu:

Nainštaloval som MongoDB na každý zo strojov.

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

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

napíšem,

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,

Ďalej na stroji m2,

Na stroji m3,

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.

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:

Teraz poďme’ pridať ďalšie dva stroje ako repliky pomocou nasledujúcich príkazov:

Stav môžete sledovať pomocou príkazu:

To je naozaj všetko. Teraz by ste mali mať spustený a funkčný MongoDB cluster na bleskurýchlom cloude CloudSigma’s.

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.