sql >> Databáze >  >> RDS >> MariaDB

Jak nasadit otevřenou databázi edX MySQL pro vysokou dostupnost

Open edX je platforma pro online vzdělávací aktivity. Vzhledem k situaci, ve které se svět nachází, se všechny takové platformy potýkají s vyšší zátěží a jejich význam výrazně vzrostl. Nejsou to jen „pomocné“ platformy, ale často se stávají hlavním způsobem, jakým jsou vzdělávací aktivity vykonávány. To vede k vyšším požadavkům na zátěž, kterou zvládnou, nebo na dostupnost platformy.

Open edX je komplexní produkt, který se skládá z více prvků. Jednou z nich je databáze MySQL. V tomto krátkém blogu bychom rádi probrali, jak můžete zlepšit vysokou dostupnost platformy Open edX.

Jedna databáze MySQL je samozřejmě jediným bodem selhání a jako taková není přístup vhodný pro produkční nasazení. Existuje několik způsobů, jak můžete zlepšit dostupnost databáze MySQL.

Pro začátek můžete spustit nastavení master - slave pomocí asynchronní nebo semisynchronní replikace. Výhodou je, že když je master nedostupný, můžete povýšit jednoho z otroků a pokračovat v operaci. Hlavní nevýhodou takového nastavení je, že převzetí služeb při selhání musí být provedeno buď ručně, což zvyšuje prostoje, nebo musíte použít nějaký externí software (například ClusterControl), ale opět to může chvíli trvat. A konečně, jakýkoli druh asynchronní nebo semisynchronní replikace podléhá zpoždění replikace. To může vážně ovlivnit scénáře čtení po zápisu, ve kterých aplikace provádí zápis na master a poté se okamžitě pokouší číst data z slave.

Dalším přístupem by bylo použití Galera Cluster k ukládání dat z platformy Open edX. Můžeme začít se třemi clustery uzlů – takové clustery dokážou automaticky zvládnout selhání jednoho uzlu. Zbývající dva uzly budou nadále fungovat a reagovat na dotazy přicházející z aplikace. Další výhodou Galery je, že i když je „virtuálně“ synchronní (což do značné míry znamená, že je téměř synchronní), existuje způsob, jak vynutit kontroly kauzality a donutit clustery do synchronního režimu (i když za to zaplatíte snížený výkon).

Oba scénáře by před sebou vyžadovaly nějaký vyvažovač zátěže, který by provoz zpracoval a přesměroval do správného cíle.

Pojďme se podívat, jak vám ClusterControl může pomoci nasadit Galera Cluster se sadou nástrojů pro vyrovnávání zatížení, které můžete použít pro svou platformu Open edX.

Nasazení MariaDB Cluster

Tentokrát se pokusíme použít MariaDB Cluster jako náš backend. Opět platí, že první krok je stejný, musíme v průvodci vybrat „Deploy“:

Jakmile to uděláte, musíme definovat konektivitu SSH, bez hesla, klíč -založený SSH přístup je pro ClusterControl požadavkem, jinak nebude schopen spravovat databázovou infrastrukturu.

Pak bychom se měli rozhodnout pro dodavatele, verzi, heslo, hostitele a další další nastavení:

Po vyplnění všech těchto podrobností můžeme pokračovat v nasazení.

Nasazení ProxySQL

Databáze samotná není jediným prvkem, který chceme nasadit. Potřebujeme také load balancer, kterým budeme provoz směrovat do uzlů, které jsou v danou chvíli dostupné. Použijeme jej také k rozdělení čtení/zápisu, přičemž všechny zápisy nasměrujeme do jediného uzlu MariaDB Galera. To nám pomůže vyhnout se konfliktům mezi zápisy prováděnými na různých uzlech Galera.

Pro ProxySQL ClusterControl také vyžaduje vyplnění některých informací – musíte vybrat hostitele, na který jej chcete nainstalovat, rozhodnout o verzi ProxySQL, přihlašovacích údajích pro uživatele s administrací a monitorováním. Tito uživatelé budou používáni ke správě ProxySQL a sledování stavu vašeho clusteru Galera. Měli byste také importovat stávající uživatele databáze nebo vytvořit nového pro vaši aplikaci. Nakonec je na vás, abyste se rozhodli, které databázové uzly chcete používat s ProxySQL, a rozhodnete se, zda použijete implicitní transakce.

Nasazení Keepalived

Jako další krok nasadíme Keepalived. Cílem je mít virtuální IP, která bude ukazovat na fungující instanci ProxySQL. Takový VIP pak může být použit v aplikaci jako koncový bod pro konektivitu databáze MySQL.

Po předání podrobností, jako jsou instance ProxySQL, které by měly být monitorovány, virtuální IP a rozhraní VIP by se mělo vázat na jsme připraveni k nasazení. Po několika minutách by mělo být vše připraveno a topologie by měla vypadat takto:

To je v podstatě vše, pokud jde o nasazení. Svou platformu Open edX můžete nasměrovat na VIP a port 6033, to by mělo stačit k připojení k vaší backendové databázi. Poslední zbývající bit, pokud to považujete za nutné, by bylo nakonfigurovat kontroly kauzality. Existuje proměnná wsrep_sync_wait, která to umí. Může povolit testy na několika vzorech přístupu:čte, aktualizuje, vkládá, maže, nahrazuje a SHOW příkazy. Pokud nás zajímají pouze dotazy SELECT, nastavíme tuto proměnnou na ‚1‘ pomocí správy konfigurace ClusterControl.

Touto změnou se provede tato změna na všech uzlech clusteru MariaDB.

To je v podstatě vše. Pokud byste se chtěli podělit o nějaké své zkušenosti s Open edX, můžete nám zanechat komentář.


  1. Jak LPAD() funguje v MariaDB

  2. Postgresql Vyberte řádky, kde sloupec =pole

  3. MySQL pivot řádek do dynamického počtu sloupců

  4. Jak obnovit databázi pomocí Správce zálohování