Platformy Learning Management System (LMS) vám umožňují učit se/vyučovat na dálku, což je vzhledem k současné situaci ve světě opravdu důležité.
Jak již bylo řečeno, můžeme také říci, že vysoká dostupnost je u tohoto druhu platformy nutností, jinak by nemohla být dostupná, když je potřeba.
V tomto blogu uvidíme, jak nasadit databázi MariaDB pro vysokou dostupnost, která bude použita pro jednu z nejpopulárnějších možností platformy LMS, Chamilo LMS.
Co je Chamilo?
Chamilo LMS je bezplatný Learning Management System (LMS) navržený pro online vzdělávání a vyvinutý ve spolupráci mnoha společností a vývojářů jednotlivců.
Jako učitel máte pomocí Chamilo přístup k řadě užitečných nástrojů k vytvoření efektivního vzdělávacího prostředí. Některé z těchto nástrojů jsou:
- Importujte nebo vytvářejte dokumenty (audio, video, obrázky) a publikujte je
- Vytvářejte podle potřeby testy a testy s automatickým skóre a zpětnou vazbou
- Nastavení a příjem virtuálních úkolů
- Popište součásti kurzu prostřednictvím částí s popisem
- Komunikujte prostřednictvím fór nebo chatu
- Publikovat oznámení
- Přidat odkazy
- Vytvořte pracovní skupiny nebo laboratorní skupiny
- Nastavte virtuální učebnu
- Vytvářejte průzkumy
- Přidejte wiki, abyste mohli společně vytvářet dokumenty
- Použijte glosář a agendu
- Povolte sledování studentů ve svých kurzech
- Zaregistrovat docházky
- Vypracujte třídní deník a další
Platforma Chamilo je extrémně flexibilní. Všechny jeho nástroje lze upravit podle potřeb každého kurzu. Poskytuje přátelské a intuitivní uživatelské rozhraní, které nevyžaduje žádné speciální předchozí technické znalosti nebo dovednosti.
Otázkou tedy je, jak můžete nasadit databázi MariaDB pro vysokou dostupnost pro tento systém?
Databáze MariaDB pro vysokou dostupnost
Existují různé přístupy k nasazení databáze MariaDB pro vysokou dostupnost. Podívejme se na dvě hlavní možnosti.
Replikace MariaDB Master-Slave
Instalaci master-slave můžete spustit pomocí asynchronní nebo semisynchronní replikace. Výhodou této jednoduché možnosti je, že když je master nedostupný, můžete povýšit jednoho z otroků a pokračovat v práci jako obvykle. Hlavním problémem tohoto nastavení je, že převzetí služeb při selhání musí být provedeno ručně nebo dokonce pomocí externího nástroje, jako je ClusterControl. Znamená to, že budete mít (krátký) výpadek, který může být pro vaši firmu přijatelný nebo ne.
MariaDB Cluster
Dalším přístupem by bylo použití Galera Cluster k ukládání dat z Chamilo LMS. Můžete jej začít používat se třemi uzly a automaticky zvládne selhání jednoho z těchto uzlů. Zbývající dva uzly budou nadále pracovat a přijímat připojení z aplikace Chamilo. Znamená to, že v tomto případě nebudete mít prostoje, ale protože se jedná o složitější topologii, budete potřebovat více znalostí o této technologii a v závislosti na pracovní zátěži to nemůže být nejlepší volba.
Vyvažovači zatížení
Pro zlepšení vysoké dostupnosti budou obě možnosti vyžadovat nástroj pro vyrovnávání zatížení před sebou, který by zpracoval provoz a přesměroval jej na dostupný/zdravý uzel.
ProxySQL je vyhrazený nástroj pro vyrovnávání zatížení pro MySQL, který přichází s řadou funkcí včetně přesměrování dotazů, ukládání dotazů do mezipaměti a tvarování provozu. Lze jej použít ke snadnému nastavení rozdělení čtení a zápisu a přesměrování dotazů do samostatných backendových uzlů.
HAProxy je nástroj pro vyrovnávání zatížení, který distribuuje provoz z jednoho zdroje do jednoho nebo více cílů a může pro tento úkol definovat specifická pravidla a/nebo protokoly. Pokud některý z cílů přestane reagovat, je označen jako offline a provoz je odeslán do zbývajících dostupných cílů.
Keepalived je služba, která vám umožňuje konfigurovat virtuální IP adresu v rámci aktivní/pasivní skupiny serverů. Tato virtuální IP adresa je přiřazena aktivnímu serveru. Pokud tento server selže, IP adresa se automaticky migruje na „sekundární“ pasivní server, což mu umožní pokračovat v práci se stejnou IP adresou transparentním způsobem pro systémy.
Použití pouze jednoho uzlu Load Balancer přidá do vaší topologie jeden bod selhání, takže můžete použít kombinaci ProxySQL+Keepalived nebo HAProxy+Keepalived pomocí dvou uzlů Load Balancer (alespoň) a Udržujte mezi nimi.
Nyní se podívejme, jak vám ClusterControl může pomoci s nasazením databáze MariaDB Load Balancers a virtuální IP adresa pro použití ve vaší aplikaci Chamilo.
Nasazení databáze Chamilo MariaDB
Jako příklad nasadíme replikaci MariaDB Master-Slave Replication, kterou bude používat aplikace Chamilo. K tomu použijeme ClusterControl k nasazení 2 databázových uzlů MariaDB (master-slave) a 2 HAProxy Load Balancerů s konfigurací Keepalived mezi nimi.
Nasazení databáze MariaDB
Chcete-li provést nasazení z ClusterControl, jednoduše vyberte možnost „Deploy“ a postupujte podle zobrazených pokynů.
Při výběru Replikace MySQL musíte zadat uživatele, klíč nebo heslo a Port pro připojení pomocí SSH k vašim serverům. Můžete také přidat název svého nového clusteru a pokud chcete, aby ClusterControl nainstaloval odpovídající software a konfigurace za vás.
Po nastavení přístupových informací SSH je třeba vybrat dodavatele databáze /version a definujte pověření databáze, port a datový adresář. Můžete také určit, které úložiště použít.
V dalším kroku musíte přidat své servery do clusteru, který se chystáte vytvořit, pomocí IP adresy nebo názvu hostitele.
Po dokončení úlohy můžete svůj nový cluster MariaDB vidět v hlavní obrazovka ClusterControl.
Nyní máte svůj cluster vytvořený, můžete na něm provádět několik úkolů, jako přidání nástroje Load Balancer nebo nové repliky.
Nasazení nástroje Load Balancer
Chcete-li provést nasazení nástroje Load Balancer, vyberte v akcích clusteru možnost „Přidat nástroj Load Balancer“ a vyplňte požadované informace.
Stačí přidat IP nebo název hostitele, port, zásady a uzly, které budete používat pro vyrovnávání zátěže. Můžete jej nasadit pomocí dvou různých portů (čtení/zápis a pouze pro čtení), nebo můžete použít pouze jeden port pro čtení/zápis k odesílání veškerého provozu tam.
Keepalived Deployment
Chcete-li provést nasazení Keepalived, vyberte v akcích clusteru možnost „Add Load Balancer“ a poté přejděte na kartu Keepalived.
Zde vyberte uzly HAProxy a zadejte virtuální IP adresu, která bude použít pro přístup k databázi.
Nyní propojme toto prostředí s aplikací Chamilo.
Konfigurace databáze Chamilo
Během nasazení Chamilo, v kroku 4, budete muset přidat konfiguraci databáze.
Zde byste měli pro přístup k databázi MariaDB použít virtuální IP adresu a přihlašovací údaje k databázi.
Další podrobnosti o konfiguraci Chamilo naleznete v oficiální dokumentaci.
To je ono! Máte svou aplikaci Chamilo pomocí databáze MariaDB s vysokou dostupností.
Funkce automatického obnovení ClusterControl
V případě selhání ClusterControl povýší nejpokročilejší podřízený uzel na master a také vás upozorní na problém. Také selže přes zbytek podřízených uzlů, které se mají replikovat z nového hlavního serveru.
Ve výchozím nastavení je HAProxy nakonfigurován se dvěma různými porty:čtení-zápis a pouze čtení. Na portu pro čtení a zápis máte hlavní uzel online a ostatní uzly offline a na portu pouze pro čtení máte hlavní i podřízený uzel online.
Když HAProxy zjistí, že některý z vašich uzlů není přístupný, automaticky jej označí jako offline a nebere jej v úvahu při odesílání provozu na něj. Detekce se provádí pomocí skriptů kontroly stavu, které jsou konfigurovány ClusterControl v době nasazení. Tyto kontrolují, zda jsou instance aktivní, zda procházejí obnovením nebo jsou pouze pro čtení.
Když ClusterControl povýší podřízený uzel, HAProxy označí starý hlavní uzel jako offline pro oba porty a uvede povýšený uzel online do portu pro čtení a zápis.
Pokud vaše aktivní HAProxy, které je přiřazena virtuální IP adresa, ke které se vaše systémy připojují, selže, Keepalived automaticky migruje tuto IP adresu na pasivní HAProxy. To znamená, že vaše systémy jsou poté schopny normálně fungovat.
Nasazení databáze MariaDB pomocí rozhraní CLI ClusterControl
Pokud dáváte přednost nasazení klastru MariaDB pomocí příkazového řádku, můžete použít klientský nástroj příkazového řádku ClusterControl s názvem „s9s“. Tento nástroj odešle úlohu nasazení na server ClusterControl a provede všechny nezbytné kroky k nasazení clusteru.
Na serveru ClusterControl můžete například spustit následující příkaz a vytvořit replikaci MariaDB master-slave:
$ s9s cluster --create \
--cluster-type=mysqlreplication \
--nodes='10.10.10.136;10.10.10.137' \
--vendor=mariadb \
--provider-version='10.5' \
--db-admin-passwd='root123' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name='MariaDB1' \
--log
Protokol úlohy uvidíte v konzole, takže tam můžete sledovat průběh nasazení nebo můžete také sledovat průběh úlohy z uživatelského rozhraní ClusterControl -> Aktivita -> Úlohy. Po dokončení se zobrazí v uživatelském rozhraní ClusterControl.
Závěr
V tomto blogu jsme zmínili některé možnosti nasazení databáze MariaDB pro vysokou dostupnost pomocí ClusterControl a jak ji používat v aplikaci Chamilo LMS.
Použili jsme jednoduché nasazení master-slave přidáním vyvažovačů zátěže ke zlepšení vysoké dostupnosti na této topologii, ale toto prostředí můžete vylepšit ještě více použitím jiného přístupu, jako je Galera+ProxySQL, nebo jejich jiné kombinace .