Zpět na blog

Jak nakonfigurovat replikaci MongoDB a automatické převzetí služeb při selhání

Jak nakonfigurovat replikaci MongoDB a automatické převzetí služeb při selhání

Replikační sada je definována jako databázový cluster s více uzly s nakonfigurovanou replikací a automatickým převzetím služeb při selhání (failover). Aby bylo zajištěno, že primární databáze (PRIMARY) bude zvolena správně, je důležité mít v sadě lichý počet členů (včetně nebo s vyloučením Arbiter uzlu). 

Vybraná databáze je zodpovědná za všechny hlavní úkoly. Zpracovává příchozí operace zápisu a ukládá jejich informace do oplogu. K těmto informacím mohou přistupovat a replikovat je sekundární (SECONDARY) členové repliky, aby je aplikovali na své vlastní datové sady. V důsledku toho budou všechny servery v sadě reprezentovat stejný obsah a zajišťovat jeho dostupnost:

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

Nyní si představte situaci, kdy neočekávaný problém (jako je selhání hardwaru nebo připojení) způsobí výpadek primární databáze. V takovém případě systém automaticky zahájí nový proces volby, aby obnovil normální fungování bez nutnosti jakéhokoli ručního zásahu. Výhodou takového systému je, že získáte to nejlepší z replikace, jako je zvýšená dostupnost, redundance při selhání a obnova po havárii, aniž byste se museli starat o správu více databází samostatně.

Pokud chcete použít podobný systém, tento návod vám ukáže, jak nakonfigurovat replikační sadu MongoDB pomocí CloudSigma PaaS. Jak uvidíte v této příručce, budeme používat tři členy, což obvykle stačí k zajištění dobré míry bezpečnosti informací a výkonu pro zpracování I/O operací u většiny běžných aplikací. Spolu se samotnou konfigurací replikace se také naučíme, jak připravit prostředí, nastavit autentizaci mezi uzly DB a jak zajistit, aby vaše práce byla úspěšná.

Krok 1: Vytvoření nového prostředí

Pro začátek budete potřebovat alespoň 3 uzly MongoDB, abyste mohli začít konfigurovat replikační sadu. Pokračujte tedy a vytvořte nové prostředí následovně:

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

V našem příkladu alokujeme všechny instance MongoDB verze 4.0.2 do stejného prostředí. V případě potřeby můžete změnit Environment Name v daném poli a pokračovat v procesu instalace.

Dalším krokem v procesu bude řešení zabezpečení komunikace mezi těmito uzly pomocí souboru s autentizačním klíčem.

Step 2: Add an Authentication Key File

Autentizace je kritickou součástí každé replikace. Jedná se o proces zajištění bezpečnosti, který povolí přístup členovi replikační sady pouze poté, co se správně identifikuje jedinečným souborem s autentizačním klíčem. To chrání vaše data před nežádoucími zvědavci a třetími stranami. Zde je návod, jak si můžete vygenerovat vlastní soubor s autentizačním klíčem:

  1. Klikněte na možnost Web SSH u jednoho z databázových uzlů a přihlaste se:

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

    2. Dále můžete zadat svůj vlastní soubor klíče nebo vygenerovat nový pomocí openssl pomocí následujícího příkazu:

V tomto příkazu 741 představuje velikost klíče v bajtech a my.key je název klíče.

    3. Je čas distribuovat nový soubor klíče do všech vašich instancí MongoDB. Zde je návod, jak na to:

  • Otevřete File Manager kliknutím na tlačítko Config vedle kteréhokoli z databázových uzlů:

4-Click on the Config

  • Najděte soubor my.key v záložce konfigurace pod cestou: /home/jelastic/my.key. Otevřete jej a zkopírujte obsah souboru:

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

  • Pod cestou /var/lib/jelastic/keys najdete adresář keys. Vytvořte New File, který budou instance MongoDB používat k vzájemnému ověření identity. V našem případě vytvoříme soubor s názvem mongo-set.key:

6-keys directory

  • Vložte dříve zkopírovaný obsah do tohoto souboru a aplikujte změny kliknutím na Save u všech instancí:

7-Paste the clipboard content

V důsledku tohoto procesu byl soubor mongo-set.key distribuován do všech našich uzlů MongoDB.

Krok 3: Konfigurace replikace MongoDB

Nyní, když jsme zajistili bezpečnost instancí, můžeme přejít k samotné konfiguraci replikační sady. Začněme:

  1. Začněte tím, že přejdete na záložku konfigurace pro uzly MongoDB a otevřete soubor mongo.conf v adresáři etc složku. Přejděte dolů, dokud nenajdete sekci replication. Odkomentujte ji a přidejte následující řetězec s jedinečným názvem pro vaši sadu replik. V našem příkladu ji pojmenujeme db-replication:
      2. Dále přidáme nový parametr s názvem keyFile v sekci security. To poslouží k určení cesty ke klíčovému souboru, který se aktuálně nachází na cestě: /var/lib/jelastic/keys/mongo-set.key:

8-Add parameter keyFile

      3. Kliknutím na příslušné tlačítko Uložte změny pro všechny instance v okně editoru. 

      4. Nyní musíte Restartovat všechny své databázové uzly pro použití nových konfiguračních parametrů:

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

Mějte na paměti, že jakmile dokončíte konfiguraci sady replik a restartujete buď všechny uzly, nebo uzel PRIMARY, během restartu se spustí proces volby nové databáze PRIMARY.

     5. Vyberte server MongoDB, který chcete použít jako PRIMARY, a přistupte k němu pomocí protokolu SSH:

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

Pamatujte: jakmile bude zvolena databáze PRIMARY, ostatní členové sady replik již nebudou přístupní pro přímé operace zápisu. To znamená, že veškeré změny a konfigurace lze provádět a aplikovat pouze na aktuální uzel PRIMARY. Pokud tedy nemáte nastavené priority, budete muset změnit připojovací řetězec ve vaší aplikaci na nový uzel PRIMARY.

     6. Dále přistupte k replikované databázi pomocí vašich příslušných přihlašovacích údajů:

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

V tomto příkazu:

  • {user} –odkazuje na uživatelské jméno administrátora, které vám bude zasláno na e-mail (obvykle je to ve výchozím nastavení admin).
  • {password} –toto je heslo zaslané na váš e-mail spolu s odpovídajícím uživatelským jménem.
  • {DB_name}- představuje název databáze, kterou chcete v této sadě replik replikovat (v našem příkladu používáme výchozí admin).

V případě nové volby můžete k přihlášení do nové databáze PRIMARY použít stejné přihlašovací údaje uživatele admin.

     7. Nyní, když bylo navázáno spojení, budete muset provést následující řádky, abyste definovali parametry pro aktuální uzel MongoDB a inicializovali sadu replik:

Ve výše uvedených řádcích nahradíte hodnoty v závorkách vlastními odpovídajícími údaji:

  • {replica_set} – toto je název vaší replikační databázové skupiny, který jste uvedli na začátku této sekce. V našem případě to bylo db-replication.
  • {current_db_ip} – označuje IP adresu databázového kontejneru, který jste vybrali:

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

V našem případě jsou provedené řádky:

13-config

14-rs.initiate()

        8. Dále proveďte následující příkaz pro všechny zbývající databáze:

Zde, {db_ip} odkazuje na IP adresu každé databáze:

15-rs.add(

       9. Jakmile přidáte všechny členy replikace, získáte plně funkční sadu replik. Na konci procesu doporučujeme ujistit se, že bylo vše správně nakonfigurováno. Chcete-li tak učinit, proveďte příkaz: rs.status(). To vám zobrazí kompletní informace týkající se vaší sady replik následovně:

16-execute the rs.status()

Krok 4: Nastavení ReplicaSet Arbiter

V určitých případech doporučujeme použít uzel Arbiter . Co je to uzel Arbiter ? Replikace je obvykle spolehlivější, pokud sada replik obsahuje lichý počet uzlů. Pokud tedy máte v sadě aktuálně sudý počet uzlů, můžete přidat uzel Arbiter , abyste udrželi kvorum, protože reaguje na požadavky na heartbeat a volby od ostatních členů v sadě. Zde je několik podrobností o Arbiter uzlech:

  • Arbiter neukládá žádná data; pouze hlasuje ve volbách v případě, že jiný uzel selhal.
  • Je velmi lehký a nespotřebovává příliš mnoho prostředků.
  • Vyměňoval si přihlašovací údaje uživatelů mezi šifrovanými replikami.
  • Chcete-li zachovat nejvyšší dostupnost, zkuste spustit Arbiter na samostatném uzlu.

Zde je návod, jak můžete přidat uzel Arbiter do své sady replik:

  1. Nejprve provedeme horizontální škálování a přidáme do clusteru další uzel:

17-ReplicaSet Arbiter

18-Scale out database cluster

2. Po přidání uzlu potřebujeme nový soubor klíče. Přejděte do adresáře keys a vytvořte soubor klíče mongo-set.key. Zkopírujte obsah klíče z kteréhokoli z dříve nakonfigurovaných databázových uzlů a vložte jej sem celý, jako jsme to udělali předtím.

3. Přejděte do konfiguračního souboru mongod.conf. Odkomentujte sekci replikace a přidejte repISetName (v našem případě je to db-replication v našem případě). Dále přejděte do sekce security a přidejte parametr keyFile ( /var/lib/jelastic/keys/mongo-set.key v našem případě).

4. Nakonec restartujte nový uzel, aby se projevily tyto nové konfigurační parametry:

19- Restart newly

Je důležité si uvědomit, že v tomto okamžiku NEMUSÍTE restartovat všechny uzly v clusteru. Restartujte pouze nově přidaný uzel Arbiter. Restartování všech uzlů povede k nové volbě PRIMARY (pokud jste neurčili priority pro výběr konkrétního databázového uzlu jako PRIMARY).

 5. Nakonec lze Arbiter přidat do sady replik. Chcete-li tak učinit, zadejte na uzlu PRIMARY následující příkaz:

Zde {db_ip} je IP adresa nového uzlu:

20-IP address of a newly added node

 6. Nyní můžete zkontrolovat a potvrdit, zda se nový uzel stal Arbiterem. Můžete to provést tak, že se přihlásíte k novému uzlu pomocí SSH a připojíte se k instanci MongoDB pomocí přihlašovacích údajů, které jste obdrželi na e-mail v době vytvoření uzlu:

21-connect MongoDB instance

To ukazuje, že nový uzel, který jsme právě přidali do clusteru, funguje jako Arbiter pro db-replication. To zajišťuje kvorum v jakékoli situaci, což činí sadu replik spolehlivější.

Krok 5: Testování dostupnosti databázového clusteru

Dále můžeme nastavit náš cluster MongoDB pro vzdálené připojení a provádění operací. V následujícím příkladu se připojíme a provedeme několik kontrolních příkazů pomocí jednoduchého PHP appletu.

Pro tento účel budete potřebovat aplikační server, jako je například Apache. Může jej přidat do svého prostředí, jako jsme to udělali my, nebo vytvořit nový v samostatném prostředí.

  1. Začněte kliknutím na Change Environment Topology a přidáním serveru:

22-Press Change Environment Topology

23-Press Change Environment Topology button

    2. Otevřete kartu Configuration Manager pro server Apache kliknutím na tlačítko Config jak je znázorněno níže:

3. Najděte a otevřete soubor index.php v adresáři /var/www/webroot/ROOT a vložte následující kód namísto výchozího obsahu:

Následující hodnoty ve výše uvedeném kódu je třeba nahradit vašimi příslušnými údaji:

  • {replica_set_name} – zadejte název vaší sady replik.
  • {db_username} – přidejte administrátorského uživatele zvolené primární databáze (ve výchozím nastavení je to admin).
  • {db_password} – zadejte heslo administrátorského uživatele.
  • {NodeID} – uveďte identifikační číslo příslušného uzlu. Najdete ho na ovládacím panelu CloudSigma PaaS.
  • {environment_domain} – přidejte doménu prostředí. Najdete ji také na ovládacím panelu CloudSigma PaaS:

Ujistěte se, že jste zadali ID každého uzlu ve vaší sadě replik v příslušné sekci mongodbConnectionURI .

Zadáním odpovídajících hodnot a spuštěním kódu se zobrazí sada řetězců podobná této:

Ujistěte se, že uložíte soubor v tomto okamžiku!

4. Aby mohl Apache komunikovat se serverem MongoDB, vyžaduje speciální modul. Tento modul můžete přidat v rámci configs. Přejděte do složky etc a otevřete php.ini soubor. Najděte sekci [mongodb] . Zde stačí odstranit středník před řádkem extension=mongodb.so, abyste toto rozšíření povolili:

      5. Použijte nové konfigurace kliknutím na Save v okně editoru. Jako vždy musíme restartovat uzly, aby se změny projevily. Klikněte na tlačítko Restart Nodes vedle Application Server, abyste tak učinili:

    6. Nyní klikněte na tlačítko Open in Browser pro otestování:

Kliknutím na tuto ikonu se otevře nová karta prohlížeče, která zobrazí všechny informace o členech/uzlech vaší sady replik a jejich dostupnosti takto:

Vzhledem k tomu, že jsme použili příkaz ping (řádek 6 v souboru index.php ), první řádek zobrazuje výsledek kontroly dostupnosti sady replik:

To znamená, že sada replik byla úspěšně otestována. 

Další blok ve výsledcích ukazuje podrobné informace o hostitelích sady replik. Tato data jsou získávána díky funkci getServers (řádek 11 v souboru index.php). Podobně můžete také zkontrolovat některé hodnoty přiřazené během procesu vytváření této sady replik:

  • host – IP adresa konkrétní databáze.
  • port – toto je port aktuálního člena replikace.
  • [“is_primary”] a [“is_secondary”] – parametry, které indikují stav serveru. Odpovídající hodnoty pro zvolený primární MongoDB server jsou true, false a pro dva další MongoDB servery – false, true v tomto pořadí.

Kromě toho můžete uzly databáze kdykoli spustit a zastavit a sledovat změny. Stejný účinek má i obnovení stránky. To vám umožní zajistit, aby byl váš MongoDB cluster vždy dostupný, funkční a běžel tak, jak jste jej nakonfigurovali.

CloudSigma PaaS umožňuje svým uživatelům využívat výhod sad replik, aniž by se museli příliš starat o konfiguraci a back-endovou stránku věci. Tento návod ukazuje, jak jednoduché může být nastavení vašeho vlastního MongoDB clusteru v několika jednoduchých krocích. Více se můžete dozvědět o MongoDB, jak jej set it up for Ubuntu nebo public cloud servers, stejně jako o tom, jaké další pokročilé funkce CloudSigma PaaS nabízí. Také vás zveme, abyste si take a trial run PaaS zdarma, abyste se seznámili s ovládacím panelem a marketplace a tím, co nabízejí. 

Vyzkoušejte PaaS zdarma na 7 dní

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev je kreativní designér ve společnosti CloudSigma, který se zaměřuje na konzistentní firemní identitu prostřednictvím tradičních i inovativních marketingových kanálů. Je zdatný v propojování umělecké vize se strategickým marketingem za účelem vytváření působivých příběhů značky.

Komentáře

Zatím žádné komentáře. Buďte první.