Späť na blog

Ako nakonfigurovať replikáciu MongoDB a automatické prevzatie služieb pri zlyhaní

Ako nakonfigurovať replikáciu MongoDB a automatické prevzatie služieb pri zlyhaní

Replikačná sada je definovaná ako databázový cluster s viacerými uzlami s nakonfigurovanou replikáciou a automatickým prevzatím služieb pri zlyhaní (failover) medzi nimi. Aby sa zabezpečilo správne zvolenie databázy PRIMARY, je dôležité mať v sade nepárny počet členov (vrátane alebo s vylúčením uzla Arbiter uzla). 

Vybraná databáza je zodpovedná za všetky hlavné úlohy. Spracováva prichádzajúce operácie zápisu a ukladá ich informácie do oplogu. K týmto informáciám môžu pristupovať a replikovať ich členovia repliky SECONDARY, aby ich aplikovali na svoje vlastné dátové sady. V dôsledku toho budú všetky servery v sade reprezentovať rovnaký obsah a zabezpečia jeho dostupnosť:

How to Configure MongoDB Replication and Automated Failover 1-Replica set- graphic

Teraz zvážte situáciu, kedy neočakávaný problém (ako zlyhanie hardvéru alebo pripojenia) spôsobí výpadok primárnej databázy. V takom prípade systém automaticky spustí nový proces voľby, aby obnovil normálne fungovanie bez potreby akéhokoľvek manuálneho zásahu. Výhodou takéhoto systému je, že získate to najlepšie z replikácie, ako je zvýšená dostupnosť, redundancia pri zlyhaní a obnova po havárii, bez toho, aby ste sa museli starať o správu viacerých databáz samostatne.

Ak chcete použiť podobný systém, tento návod vám ukáže, ako nakonfigurovať replikačnú sadu MongoDB pomocou CloudSigma PaaS. Ako uvidíte v tejto príručke, budeme používať troch členov, čo zvyčajne postačuje na zabezpečenie dobrej miery bezpečnosti informácií a výkonu na spracovanie I/O operácií pre väčšinu bežných aplikácií. Spolu so samotnou konfiguráciou replikácie sa tiež naučíme, ako pripraviť prostredie, nastaviť autentifikáciu medzi uzlami DB a ako zabezpečiť, aby vaša práca bola úspešná.

Krok 1: Vytvorenie nového prostredia

Na začiatok budete potrebovať aspoň 3 uzly MongoDB, aby ste mohli začať konfigurovať replikačnú sadu. Takže pokračujte a vytvorte nové prostredie nasledovne:

2-Create an Environment How to Configure MongoDB Replication and Automated Failover

V našom príklade alokujeme všetky inštancie MongoDB verzie 4.0.2 do rovnakého prostredia. Môžete zmeniť Názov prostredia v prípade potreby v danom poli a pokračovať v procese inštalácie.

Ďalším krokom v procese bude riešenie bezpečnosti komunikácie medzi týmito uzlami pomocou súboru s autentifikačným kľúčom.

Krok 2: Pridanie súboru s autentifikačným kľúčom

Autentifikácia je kritickou súčasťou každej replikácie. Ide o proces zaistenia bezpečnosti, ktorý poskytuje prístup členovi replikačnej sady až po tom, čo sa správne identifikuje pomocou jedinečného súboru s autentifikačným kľúčom. To chráni vaše dáta pred nežiaducimi zvedavcami a tretími stranami. Tu je návod, ako si môžete vygenerovať vlastný súbor s autentifikačným kľúčom:

  1. Kliknite na možnosť Web SSH pre jeden z databázových uzlov a prihláste sa:

3- Web SSH How to Configure MongoDB Replication and Automated Failover

    2. Ďalej môžete zadať svoj vlastný súbor kľúča alebo vygenerovať nový pomocou openssl pomocou nasledujúceho príkazu:

V tomto príkaze 741 predstavuje veľkosť kľúča v bajtoch a my.key je názov kľúča.

    3. Je čas distribuovať nový súbor kľúča do všetkých vašich inštancií MongoDB. Tu je návod, ako na to:

  • Otvorte Správcu súborov kliknutím na tlačidlo Config vedľa ktoréhokoľvek z databázových uzlov:

4-Click on the Config

  • Vyhľadajte súbor my.key v záložke konfigurácie pod cestou: /home/jelastic/my.key. Otvorte ho a skopírujte obsah súboru:

5- configuration tab How to Configure MongoDB Replication and Automated Failover

  • Pod cestou /var/lib/jelastic/keys nájdete adresár keys. Vytvorte Nový súbor ktorý budú inštancie MongoDB využívať na vzájomnú autentifikáciu svojej identity. V našom prípade vytvoríme súbor s názvom mongo-set.key:

6-keys directory

  • Vložte predtým skopírovaný obsah do tohto súboru a aplikujte zmeny kliknutím na Save pre všetky inštancie:

7-Paste the clipboard content

V dôsledku tohto procesu bol súbor mongo-set.key distribuovaný do všetkých našich uzlov MongoDB.

Step 3: Configure the MongoDB Replication

Teraz, keď sme zaistili bezpečnosť inštancií, môžeme prejsť k samotnej konfigurácii replikačnej sady. Začnime:

  1. Začnite tým, že prejdete na záložku konfigurácie pre uzly MongoDB a otvoríte súbor mongo.conf v priečinku etc priečinok. Prejdite nadol, kým nenájdete sekciu replication. Odkomentujte ju a pridajte nasledujúci reťazec s jedinečným názvom pre vašu replikačnú sadu. V našom príklade ju pomenujeme db-replication:
      2. Ďalej pridáme nový parameter s názvom keyFile v sekcii security section. Ten bude slúžiť na špecifikovanie cesty ku kľúčovému súboru, ktorý sa momentálne nachádza na ceste: /var/lib/jelastic/keys/mongo-set.key:

8-Add parameter keyFile

      3. Kliknutím na príslušné tlačidlo Uložte zmeny pre všetky inštancie v okne editora. 

      4. Teraz musíte Reštartovať všetky vaše databázové uzly na uplatnenie nových konfiguračných parametrov:

9-Restart your DB nodes How to Configure MongoDB Replication and Automated Failover

Je dôležité mať na pamäti, že po dokončení konfigurácie replikačnej sady a reštartovaní všetkých uzlov alebo uzla PRIMARY sa počas reštartu spustí proces voľby novej databázy PRIMARY.

     5. Vyberte server MongoDB, ktorý chcete použiť ako PRIMARY, a pristúpte k nemu pomocou protokolu SSH:

10-access the MongoDB server How to Configure MongoDB Replication and Automated Failover

Pamätajte: po zvolení databázy PRIMARY už ostatní členovia replikačnej sady nebudú prístupní pre priame operácie zápisu. To znamená, že všetky zmeny a konfigurácie je možné vykonať a použiť iba na aktuálnom uzle PRIMARY. Takže pokiaľ nemáte nastavené priority, budete musieť zmeniť pripájací reťazec vo vašej aplikácii na nový uzol PRIMARY.

     6. Ďalej pristúpte k replikovanej databáze pomocou vašich príslušných prihlasovacích údajov:

11-Access the database How to Configure MongoDB Replication and Automated Failover

V tomto príkaze:

  • {user} –označuje používateľské meno administrátora, ktoré vám bude zaslané na e-mail (predvolene je to zvyčajne admin).
  • {password} –toto je heslo zaslané na váš e-mail spolu s príslušným používateľským menom.
  • {DB_name}- predstavuje názov databázy, ktorú chcete replikovať v tejto replikačnej sade (v našom príklade používame predvolenú databázu admin).

V prípade novej voľby môžete použiť rovnaké prihlasovacie údaje používateľa admin na prihlásenie do novej databázy PRIMARY.

     7. Teraz, keď bolo spojenie nadviazané, budete musieť spustiť nasledujúce riadky na definovanie parametrov pre aktuálny uzol MongoDB a inicializáciu replikačnej sady:

Vo vyššie uvedených riadkoch nahradíte hodnoty v zátvorkách vlastnými príslušnými údajmi:

  • {replica_set} – toto je názov vašej replikačnej skupiny databáz, ktorý ste špecifikovali na začiatku tejto sekcie. V našom prípade to bol db-replication.
  • {current_db_ip} – označuje IP adresu databázového kontajnera, ktorý ste vybrali:

12-initiate your replica set How to Configure MongoDB Replication and Automated Failover

V našom prípade sú spustené riadky:

13-config

14-rs.initiate()

        8. Ďalej spustite nasledujúci príkaz pre všetky zostávajúce databázy:

Tu, {db_ip} označuje IP adresu každej databázy:

15-rs.add(

       9. Po pridaní všetkých členov replikácie získate plne funkčnú replikačnú sadu. Na konci procesu odporúčame uistiť sa, že všetko bolo správne nakonfigurované. Ak to chcete urobiť, spustite príkaz: rs.status(). To vám zobrazí kompletné informácie o vašej replikačnej sade nasledovne:

16-execute the rs.status()

Step 4: Set Up the ReplicaSet Arbiter

V určitých prípadoch odporúčame použiť uzol Arbiter v určitých prípadoch. Čo je to uzol Arbiter ? Replikácia je zvyčajne spoľahlivejšia, ak replikačná sada obsahuje nepárny počet uzlov. Ak teda máte v sade momentálne párny počet uzlov, môžete pridať uzol Arbiter , aby ste zachovali kvórum, keďže odpovedá na požiadavky o heartbeat a voľby od ostatných členov v sade. Tu je niekoľko podrobností o uzloch Arbiter uzloch:

  • Arbiter neukladá žiadne dáta; iba hlasuje vo voľbách v prípade, že iný uzol zlyhal.
  • Je veľmi ľahký a nespotrebováva príliš veľa prostriedkov.
  • Vymieňal si prihlasovacie údaje používateľov medzi šifrovanými replikami.
  • Ak chcete zachovať najvyššiu dostupnosť, skúste spustiť Arbiter na samostatnom uzle.

Tu je návod, ako môžete pridať uzol Arbiter do svojej sady replík:

  1. Najprv vykonáme horizontálne škálovanie a pridáme do klastra ďalší uzol:

17-ReplicaSet Arbiter

18-Scale out database cluster

2. Po pridaní uzla potrebujeme nový súbor kľúča. Prejdite do adresára keys a vytvorte súbor kľúča mongo-set.key. Skopírujte obsah kľúča z ktoréhokoľvek z predtým nakonfigurovaných databázových uzlov a vložte ho sem celý, ako sme to urobili predtým.

3. Prejdite do konfiguračného súboru mongod.conf. Odkomentujte sekciu replikácie a pridajte repISetName (v našom prípade je to db-replication). Taktiež prejdite do sekcie security a pridajte parameter keyFile ( /var/lib/jelastic/keys/mongo-set.key v našom prípade).

4. Nakoniec reštartujte nový uzol, aby sa uplatnili tieto nové konfiguračné parametre:

19- Restart newly

Je dôležité si uvedomiť, že v tomto bode NEMUSÍTE reštartovať všetky uzly v klastri. Reštartujte iba novo pridaný uzol Arbiter. Reštartovanie všetkých uzlov bude mať za následok novú voľbu PRIMARY uzla (pokiaľ ste neurčili priority na výber konkrétneho databázového uzla ako PRIMARY).

 5. Nakoniec je možné pridať Arbiter do sady replík. Ak to chcete urobiť, spustite nasledujúci príkaz na uzle PRIMARY:

Tu {db_ip} je IP adresa nového uzla:

20-IP address of a newly added node

 6. Teraz môžete skontrolovať a potvrdiť, či sa nový uzol stal Arbitrom. Môžete to urobiť tak, že sa prihlásite na nový uzol pomocou SSH a pripojíte sa k inštancii MongoDB pomocou prihlasovacích údajov, ktoré ste dostali na e-mail v čase vytvorenia uzla:

21-connect MongoDB instance

To ukazuje, že nový uzol, ktorý sme práve pridali do klastra, funguje ako Arbiter pre db-replication. To zaisťuje kvórum v akejkoľvek situácii, vďaka čomu je sada replík spoľahlivejšia.

Step 5: Test Database Cluster Availability

Ďalej môžeme nastaviť náš MongoDB klaster na vzdialené pripojenie a vykonávanie operácií. V nasledujúcom príklade sa pripojíme a vykonáme niekoľko kontrolných príkazov pomocou jednoduchého PHP appletu.

Na tento účel budete potrebovať aplikačný server, ako napríklad Apache. Môžete ho pridať do svojho prostredia, ako sme to urobili my, alebo vytvoriť nový v samostatnom prostredí.

  1. Začnite kliknutím na Change Environment Topology a pridaním servera:

22-Press Change Environment Topology

23-Press Change Environment Topology button

    2. Otvorte kartu Configuration Manager pre server Apache kliknutím na tlačidlo Config ako je znázornené nižšie:

3. Nájdite a otvorte súbor index.php v adresári /var/www/webroot/ROOT a vložte nasledujúci kód namiesto predvoleného obsahu:

Nasledujúce hodnoty vo vyššie uvedenom kóde je potrebné nahradiť vašimi príslušnými údajmi:

  • {replica_set_name} – zadajte názov svojej sady replík.
  • {db_username} – pridajte administrátorského používateľa vybranej primárnej databázy (predvolene je to admin).
  • {db_password} – zadajte heslo administrátorského používateľa.
  • {NodeID} – uveďte identifikačné číslo príslušného uzla. Nájdete ho na dashboarde CloudSigma PaaS.
  • {environment_domain} – pridajte doménu prostredia. Nájdete ju tiež na dashboarde CloudSigma PaaS:

Uistite sa, že ste špecifikovali ID každého uzla vo vašej sade replík v príslušnej mongodbConnectionURI sekcii.

Zadaním príslušných hodnôt a spustením kódu sa vám zobrazí sada reťazcov podobná tejto:

Uistite sa, že ste Uložili súbor v tomto bode!

4. Aby mohol Apache komunikovať so serverom MongoDB, vyžaduje špeciálny modul. Tento modul môžete pridať v rámci configs. Prejdite do priečinka etc a otvorte súbor php.ini fileVyhľadajte sekciu [mongodb] . Tu stačí odstrániť bodkočiarku pred riadkom extension=mongodb.so, aby ste povolili toto rozšírenie:

      5. Použite nové konfigurácie kliknutím na tlačidlo Uložiť v okne editora. Ako vždy, na uplatnenie zmien musíme reštartovať uzly. Kliknite na tlačidlo Reštartovať uzly vedľa Aplikačného servera, aby ste tak urobili:

    6. Teraz kliknite na tlačidlo Otvoriť v prehliadači , aby ste to otestovali:

Kliknutím na túto ikonu sa otvorí nová karta prehliadača, v ktorej sa zobrazia všetky informácie o členoch/uzloch vašej sady replík a ich dostupnosti, takto:

Keďže sme použili príkaz ping (riadok 6 v súbore index.php ), prvý riadok zobrazuje výsledok kontroly dostupnosti sady replík:

To znamená, že sada replík bola úspešne otestovaná. 

Ďalší blok vo výsledkoch zobrazuje podrobné informácie o hostiteľoch sady replík. Tieto údaje sa získavajú vďaka funkcii getServers (riadok 11 v súbore index.php). Podobne môžete skontrolovať aj niektoré hodnoty priradené počas procesu vytvárania tejto sady replík:

  • host – IP adresa konkrétnej databázy.
  • port – toto je port aktuálneho člena replikácie.
  • [“is_primary”] a [“is_secondary”] – parametre, ktoré indikujú stav servera. Príslušné hodnoty pre vybraný primárny MongoDB server sú true, false a pre dva ďalšie MongoDB servery – false, true.

Okrem toho môžete kedykoľvek spustiť a zastaviť databázové uzly a sledovať zmeny. To isté môžete urobiť aj obnovením stránky. To vám umožní zabezpečiť, aby bol váš MongoDB cluster vždy dostupný a bežal tak, ako ste ho nakonfigurovali.

CloudSigma PaaS umožňuje svojim používateľom využívať výhody sád replík bez toho, aby sa museli príliš starať o konfiguráciu a back-endovú stránku vecí. Tento návod ukazuje, aké jednoduché môže byť nastavenie vášho vlastného MongoDB clustera v niekoľkých jednoduchých krokoch. Viac sa môžete dozvedieť o MongoDB, ako ho nastaviť pre Ubuntu alebo verejné cloudové servery, ako aj o tom, aké ďalšie pokročilé funkcie ponúka CloudSigma PaaS. Tiež vás pozývame vyskúšať si bezplatnú skúšobnú verziu PaaS, aby ste sa oboznámili s dashboardom a marketplacom a tým, čo ponúkajú. 

Vyskúšajte PaaS zadarmo na 7 dní

author

Preslav Dobrev

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ý.