Moodle to system zarządzania nauką o otwartym kodzie źródłowym, powszechnie używany przez szkoły i uniwersytety na całym świecie. Projekt rozpoczął się w 2002 roku przez Martina Dougiamasa i ma na celu zapewnienie uczniom, nauczycielom i edukatorom bezpiecznej, solidnej, otwartej i bezpłatnej platformy dla środowisk edukacyjnych.
Samo oprogramowanie jest napisane w PHP i obsługuje różne RDBMS, takie jak:Oracle, MySQL, PostgreSQL, MariaDB itp.
W tym blogu omówimy, jak uczynić bazę danych Moodle elastyczną przy użyciu replikacji MySQL, która jest potrzebna do obsługi wdrożenia Moodle o wysokiej dostępności. Wdrożymy za pośrednictwem ClusterControl konfigurację bazy danych składającą się z replikacji MySQL typu master/slave, obsługiwanej przez nadmiarowe systemy równoważenia obciążenia bazy danych.
Architektura
Replikacja MySQL jest popularnym sposobem uzyskania nadmiarowości bazy danych. Ważne jest, aby upewnić się, że wszystkie zapisy są wysyłane do urządzenia nadrzędnego, podczas gdy odczyty mogą być równoważone obciążeniem między urządzeniami podrzędnymi. W tym celu użyjemy ProxySQL, który jest opartym na bazie danych load balancerem, który zajmuje się rozdzielaniem ruchu zapisu i wysyłaniem go do mastera. Ponieważ rola master może zostać przeniesiona na inny serwer, na przykład w przypadku awarii bazy danych, ProxySQL może śledzić nowy master i upewnić się, że ruch zapisu jest odpowiednio kierowany. VirtualIP jest zarządzany przez Keepalive, aby zapewnić jeden odporny punkt końcowy bazy danych dla wszystkich serwerów aplikacji Moodle.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214321187.png)
Monitorowanie i zarządzanie awaryjne
Na powyższym schemacie proponujemy dwie repliki podporządkowane głównej bazie danych. W przypadku awarii mastera jedna z replik zostanie awansowana do nowego mastera. Nadal pozostanie replika do obsługi takich czynności, jak odczyty, kopie zapasowe, raportowanie itp.
Połączenie aplikacji wykorzystuje VIP (wirtualny adres IP) w ciągu połączenia z bazą danych, więc jeśli coś stanie się po stronie bazy danych, zminimalizuje to wpływ aplikacji i nie będzie potrzeby ponownej konfiguracji wszystko. ClusterControl to komponent, który monitoruje bazy danych i automatyzuje przełączanie awaryjne, na przykład promując jedną z replik do nowego mastera i odzyskując uszkodzony serwer bazy danych.
Konfiguracja bazy danych
Wykorzystamy ClusterControl do wdrożenia naszej konfiguracji bazy danych.
Po pierwsze, musisz mieć dedykowany serwer do konfiguracji ClusterControl. Instalacja jest bardzo łatwa, wystarczy pobrać install-cc z repozytorium kilkudziesięciu, nadać plikowi uprawnienia do wykonywania i uruchomić go. Jak pokazano poniżej:
$ wget http://www.severalnines.com/downloads/cmon/install-cc
$ chmod +x install-cc
$ sudo ./install-cc # omit sudo if you run as root
Powyższy skrypt można uruchomić w dowolnym wariancie Linuksa. Wdroży wszystko, co jest wymagane przez ClusterControl.
Gdy ClusterControl będzie już uruchomiony i uruchomiony, wybierz przycisk Wdróż na pulpicie nawigacyjnym ClusterControl.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214321286.png)
Wyświetli się nowa strona z kilkoma opcjami. Wybierzemy pierwszą opcję wdrożenia dla naszej konfiguracji replikacji MySQL.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214321372.png)
Musisz mieć dostęp do docelowego serwera bazy danych przez SSH. Nie zapomnij włączyć SSH bez hasła i dać użytkownikowi dostęp sudo. Zdefiniuj nazwę klastra i kliknij Kontynuuj, jak pokazano poniżej:
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214321449.png)
Na następnej stronie należy wybrać dostawcę bazy danych, wersję bazy danych, którą chcesz zainstalować, hasło roota, port serwera, jeśli chcesz mieć niestandardowe lub określone porty, oraz katalog danych MySQL.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214321585.png)
Po uzupełnieniu wszystkich informacji możesz przejść do kolejnego kroku, którym jest strona Zdefiniuj topologię. Proszę podać adres IP serwera bazy danych, w tym przypadku, ponieważ konfigurujemy replikację MyQL z 1 Masterem i 2 replikami.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214321677.png)
Wdrożenie uruchomi teraz zadanie „Utwórz klaster”, po prostu trzeba poczekać, aż praca się zakończy.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214321630.png)
Konfiguracja ProxySQL
Po wdrożeniu bazy danych możesz przejść przez Load Balancer z menu klastra. Przejdź do Zarządzaj -> Load Balancer. Zostanie to pokazane poniżej:
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214321736.png)
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214321820.png)
Wdrożenie ProxySQL wymaga podania pewnych informacji, takich jak adres IP, gdzie chcesz zainstalować ProxySQL, hasło do administrowania i monitorowania użytkowników oraz włączyć równoważenie obciążenia instancji. Następnie po prostu kliknij Wdróż. Aby uzyskać wysoką dostępność, potrzebujesz co najmniej 2 systemów równoważenia obciążenia zainstalowanych przed bazą danych.
Konfiguracja zachowana
Usługa Keepalived służy do zapewnienia wysokiej dostępności systemu równoważenia obciążenia. Konfiguracja jest naprawdę prosta, nadal na stronie Load Balancer znajduje się zakładka Keepalved, jak pokazano poniżej:
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214321991.png)
Wybierz rodzaj wdrożenia load balancera, w tym przypadku używamy ProxySQL, wybierz usługę ProxySQL dla podtrzymania aktywności. Wpisz wirtualny adres IP i interfejs sieciowy. Następnie wystarczy kliknąć Wdróż Keepalved, automatycznie uruchomi nowe zadanie w celu skonfigurowania usługi.
Konfiguracja aplikacji
Zanim skonfigurujesz aplikację moodle, musisz przygotować poświadczenia użytkownika i samą bazę danych. Aby uzyskać dane uwierzytelniające, przejdź do:Zarządzaj -> Schematy i użytkownicy.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214322050.png)
Musisz podać pewne informacje, np.:nazwę użytkownika, hasło, nazwę hosta i przywilej. Następnie po prostu kliknij Utwórz użytkownika. Umożliwia to utworzenie użytkownika dla aplikacji moodle:
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214322017.png)
W celu utworzenia bazy danych możesz wybrać kartę Utwórz bazę danych na tym samym stronę jako Użytkownicy.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214322168.png)
Kolejnym krokiem jest skonfigurowanie poświadczeń po stronie ProxySQL, możesz zaimportować poświadczenia, które utworzyłeś w ProxySQL. Możesz przejść do węzła ProxySQL, wybrać zakładkę Użytkownicy, po prawej stronie znajduje się przycisk Importuj użytkownika.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214322239.png)
Wyszukaj użytkownika moodle_application, a następnie wybierz użytkownika. Na następnej stronie musisz zdefiniować domyślną grupę hostów dla użytkownika, a następnie zaimportować użytkowników.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214322363.png)
Powtórz kroki importowania użytkowników na innym węźle ProxySQL lub możesz użyć instancji synchronizacji w menu ProxySQL.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214322467.png)
Musisz pobrać aplikację moodle z oficjalnej strony moodle (odp. https ://download.moodle.org/), najnowsza wersja w momencie pisania tego bloga to 3.9.1. Zapewniają dwa rodzaje skompresowanych plików, skompresowany zip i zip tar. Pobierz plik zip i umieść go na serwerach aplikacji. Sprawdź wymagania dotyczące oprogramowania moodle, tj.:Serwer WWW, biblioteka PHP.
Wypakuj pliki zip do katalogu temp, utwórz katalog /var/www/html/moodle, skopiuj rozpakowany katalog do folderu. Nie zapomnij dać uprawnienia 0755 do katalogu. Następnie możesz uzyskać dostęp do przeglądarki internetowej w celu następnej konfiguracji. Wybierz język, jak pokazano poniżej:
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214322477.png)
Wybierz sterownik bazy danych dla konfiguracji MySQL, jak poniżej:
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214322529.png)
Musisz wypełnić pewne informacje o poświadczeniach bazy danych, które wprowadziłeś wcześniej, przykład:nazwa użytkownika, hasło, host, baza danych, port. Nazwa hosta powinna być twoim wirtualnym adresem IP, a port to port ProxySQL, czyli 6032.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214322634.png)
Host bazy danych to Twój wirtualny adres IP. Po wypełnieniu pól kliknij Dalej i gotowe.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214322747.png)
Budowanie wysoce dostępnej bazy danych dla Moodle za pomocą ClusterControl jest bardzo łatwe i proste. Możesz zbudować własną bazę danych, która będzie wspierać 99,99% dostępności usług.