Moodle je open source systém pro řízení výuky, který široce využívají školy a univerzity po celém světě. Projekt zahájil v roce 2002 Martin Dougiamas s cílem poskytnout studentům, učitelům a vychovatelům bezpečnou, robustní, otevřenou a bezplatnou platformu pro vzdělávací prostředí.
Samotný software je napsán v PHP a podporuje různé RDBMS, jako jsou:Oracle, MySQL, PostgreSQL, MariaDB atd.
V tomto blogu probereme, jak zajistit odolnost databáze Moodle pomocí replikace MySQL, která je potřebná pro podporu nasazení Moodle s vysokou dostupností. Prostřednictvím ClusterControl nasadíme nastavení databáze skládající se z replikace MySQL master/slave s redundantními nástroji pro vyrovnávání zatížení databáze.
Architektura
Replikace MySQL je oblíbený způsob, jak dosáhnout redundance databáze. Je důležité zajistit, aby všechny zápisy byly odesílány na master, zatímco čtení může být vyváženo mezi podřízenými zařízeními. Abychom toho dosáhli, použijeme ProxySQL, což je databázový load balancer, který se stará o rozdělení provozu zápisu a jeho odeslání na master. Vzhledem k tomu, že hlavní role se může přesunout na jiný server, například v případě havárie databáze, ProxySQL může sledovat nového hlavního serveru a zajistit, aby byl provoz zápisu směrován odpovídajícím způsobem. VirtualIP je spravován Keepalived, aby zajistil jeden odolný databázový koncový bod pro všechny aplikační servery Moodle.
Monitorování a správa převzetí služeb při selhání
Ve výše uvedeném diagramu navrhujeme dvě repliky, které jsou podřízeny hlavní databázi. V případě selhání hlavního serveru bude jedna z replik povýšena na novou předlohu. Stále bude zbývat replika, která zvládne věci, jako je čtení, zálohování, hlášení atd.
Připojení aplikace využívá VIP (virtuální IP adresu) v řetězci připojení k databázi, takže pokud se něco stane na straně databáze, minimalizuje to dopad vaší aplikace a nemusíte překonfigurovat cokoliv. ClusterControl je komponenta, která dohlíží na databáze a automatizuje převzetí služeb při selhání, například povýšení jedné z replik na nový hlavní server a obnovení selhání databázového serveru.
Nastavení databáze
K nasazení naší databáze použijeme ClusterControl.
Nejprve musíte mít vyhrazený server pro nastavení ClusterControl. Instalace je velmi snadná, stačí si stáhnout install-cc z úložiště několika nines, udělit oprávnění ke spuštění souboru a spustit jej. Jak je uvedeno níže:
$ wget http://www.severalnines.com/downloads/cmon/install-cc
$ chmod +x install-cc
$ sudo ./install-cc # omit sudo if you run as root
Výše uvedený skript můžete spustit v libovolné variantě Linuxu. Nasadí vše, co vyžaduje ClusterControl.
Jakmile budete mít ClusterControl spuštěnou, zvolte tlačítko Deploy na hlavním panelu ClusterControl.
Zobrazí se nová stránka s některými možnostmi. Vybereme první možnost nasazení pro naše nastavení replikace MySQL.
Musíte mít přístup k cílovému databázovému serveru prostřednictvím SSH. Nezapomeňte povolit SSH bez hesla a dát uživateli přístup sudo. Definujte název clusteru a klikněte na Pokračovat, jak je uvedeno níže:
Na další stránce musíte vybrat dodavatele databáze, verzi databáze, kterou chcete nainstalovat, heslo uživatele root, port serveru, pokud chcete mít vlastní nebo specifické porty, a datový adresář MySQL.
Po vyplnění všech informací můžete přejít k dalšímu kroku, což je stránka Definice topologie. Vyplňte prosím IP adresu databázového serveru, v tomto případě, když nastavujeme MyQL Replication s 1 Master a 2 replikami.
Nasazení nyní spustí úlohu, která „Vytvoří cluster“, stačí musíte počkat, až bude úloha dokončena.
Nastavení proxy SQL
Po nasazení databáze můžete procházet nástrojem Load Balancer z nabídky clusteru. Přejděte prosím na Spravovat -> Load Balancer. Zobrazí se takto:
Nasazení ProxySQL vyžaduje, abyste vyplnili některé informace, jako je IP adresa, kde chcete nainstalovat ProxySQL, heslo pro administraci a monitorování uživatelů a povolit instanci vyvažování zátěže. Poté stačí kliknout na Deploy. Pro vysokou dostupnost potřebujete alespoň 2 load balancery nainstalované před databází.
Nastavení udržování
Služba Keepaved se používá k zajištění vysoké dostupnosti vašeho nástroje pro vyrovnávání zatížení. Nastavení je opravdu jednoduché, stále na stránce Load Balancer je karta Keepalived, jak je uvedeno níže:
Vyberte typ nasazení nástroje pro vyrovnávání zatížení, v tomto případě používáme ProxySQL, vyberte službu ProxySQL pro keepalived. Vyplňte virtuální IP adresu a síťové rozhraní. Poté stačí kliknout na Deploy Keepalived, automaticky se spustí nová úloha pro nastavení služby.
Nastavení aplikace
Než nastavíte aplikaci Moodle, musíte si připravit přihlašovací údaje uživatele a samotnou databázi. Pro přihlašovací údaje můžete přejít na:Spravovat -> Schémata a uživatelé.
Musíte vyplnit některé informace, např.:uživatelské jméno, heslo, název hostitele a privilegium. Poté stačí kliknout na Vytvořit uživatele. To vám umožní vytvořit uživatele pro aplikaci Moodle:
Pro vytvoření databáze můžete zvolit záložku Vytvořit databázi na stránku jako Uživatelé.
Dalším krokem je konfigurace přihlašovacích údajů na straně ProxySQL, můžete importovat přihlašovací údaje, které jste vytvořili v ProxySQL. Můžete přejít do uzlu ProxySQL, vybrat kartu Uživatelé, na pravé straně je tlačítko Importovat uživatele.
Vyhledejte uživatele moodle_application a poté jej vyberte. Na další stránce musíte definovat výchozí skupinu hostitelů pro uživatele a poté Importovat uživatele.
Opakujte prosím kroky pro import uživatelů do druhého uzlu ProxySQL nebo můžete použít synchronizační instance v nabídce ProxySQL.
Aplikaci moodle si musíte stáhnout z oficiálních stránek moodle (re. https ://download.moodle.org/), nejnovější verze v době vzniku tohoto blogu je 3.9.1. Poskytují dva typy komprimovaných souborů, komprimovaný zip a tar zip. Stáhněte si soubor zip a vložte jej na aplikační servery. Podívejte se na požadavky pro Moodle software, tj.:Web Server, PHP knihovna.
Rozbalte soubory zip do dočasného adresáře, vytvořte adresář /var/www/html/moodle, zkopírujte extrahovaný adresář do složky. Nezapomeňte udělit oprávnění 0755 pro adresář. Poté můžete přejít do webového prohlížeče pro další nastavení. Vyberte jazyk, jak je uvedeno níže:
Vyberte databázový ovladač pro nastavení MySQL, jak je uvedeno níže:
Musíte vyplnit některé údaje o přihlašovacích údajích databáze, které jste vytvořili dříve, např. příklad:uživatelské jméno, heslo, hostitel, databáze, port. Název hostitele by měla být vaše virtuální IP adresa a port je port ProxySQL, což je 6032.
Hostitelem databáze by byla vaše virtuální IP adresa. Po vyplnění polí klikněte na Další a máte hotovo.
Vytvoření vysoce dostupné databáze pro Moodle pomocí ClusterControl je velmi snadné a přímočaré, můžete si vytvořit vlastní databázi, která bude podporovat vaši 99,99% dostupnost služeb.