Dzisiejsza nauka online szybko zyskuje na popularności od czasu pandemii COVID-19. Większość instytucji edukacyjnych musi tworzyć platformy do nauki online, a prawie wszyscy uczniowie muszą uzyskać dostęp do platformy do nauki i interakcji z nauczycielami. Moodle to jeden z systemów zarządzania nauką typu open source do nauki online,
Wysoka dostępność platformy Moodle jest koniecznością dla instytucji, w przeciwnym razie zakłóci i zatrzyma proces uczenia się online. Ponieważ wielu studentów korzysta z platformy w tym samym czasie, ważna jest dostępność i skalowalność. W tym momencie instytucje edukacyjne muszą mieć wiedzę i zaprojektować platformę o wysokiej dostępności i skalowalności Moodle. Jeśli chcesz dowiedzieć się więcej o tym, jak przeprowadzić migrację samodzielnego Moodle do skalowalnej bazy danych w klastrach, możesz skorzystać z tej wskazówki.
Moodle w trybie „Single Point of Failure”
Samodzielna platforma Moodle składa się z jednego serwera i wszystkiego, co jest na nim zainstalowane (serwer bazy danych i aplikacji w jednym miejscu). Lub masz 2 serwery, które są przeznaczone dla serwera aplikacji i serwera bazy danych, jak opisano na poniższym obrazku:

Obu architekturom brakuje dostępności i skalowalności usługi. Z perspektywy dostępności możesz sobie wyobrazić, że jeśli serwer ulegnie awarii, nie masz na nim uruchomionych usług. W przypadku awarii serwera aplikacji lub awarii bazy danych usługa przestaje działać.
Z drugiej strony ważna jest również skalowalność, więcej użytkowników oznacza większy ruch i więcej połączeń z bazą danych. Skalowalność można osiągnąć, dodając więcej zasobów na serwerach lub dodając więcej serwerów, aby ruch mógł być rozłożony na węzły, w przeciwnym razie ucierpi wydajność.
Konwersja z samodzielnej bazy danych do klastrowanej bazy danych
Migracja węzła autonomicznego do bazy danych w klastrze może zająć trochę czasu i nie jest operacją wolną od ryzyka. Poniżej znajdują się kroki, które musimy podjąć:
- Musisz wykonać kopię zapasową (użyj mysqldump lub xtrabackup).
- Zainstaluj bazę danych we wszystkich węzłach bazy danych replik.
- Przywróć kopię zapasową w węzłach replik.
- Podłącz węzeł repliki do mastera.
- Skonfiguruj ProxySQL i utrzymuj aktywność przed węzłami bazy danych
- Skonfiguruj równoważniki obciążenia ProxySQL (np. utwórz grupy hostów, serwery, użytkowników).
- Wskaż konfigurację Moodle na nowy wirtualny adres IP.
Jak ClusterControl może pomóc
ClusterControl to oprogramowanie do zarządzania bazą danych, które pomaga wdrażać, monitorować i zarządzać bazą danych typu open source. Spróbujemy przeprowadzić migrację z samodzielnej architektury Moodle, jak pokazano poniżej:

Do klastrowej architektury bazy danych opartej na replikacji:

Potrzebne będą co najmniej dwa serwery dla bazy danych i dwa dla bazy danych proxy (będziemy używać ProxySQL jako modułu równoważenia obciążenia) i utrzymywaną usługę do obsługi wirtualnego adresu IP.
Zakładając, że mamy uruchomioną samodzielną bazę danych MySQL:

Dodawanie kolejnych węzłów bazy danych w ClusterControl jest naprawdę proste, możesz przejść do Menu klastra po prawej stronie klastra i Dodaj urządzenie podrzędne replikacji.

Pojawi się nowe okno dialogowe dodawania nowego niewolnika, wystarczy wypełnić adres IP, a następnie kliknij przycisk Dodaj nowe urządzenie podrzędne, jak pokazano poniżej:

Jak widać na zrzucie ekranu możliwe jest seedowanie niewolnika z danymi z istniejącej kopii zapasowej. Ma to na celu uniknięcie przesyłania strumieniowego wszystkich danych z działającej bazy danych master. Gdy baza danych slave zostanie wdrożona, zostanie ona wypełniona danymi głównymi, a ClusterControl upewni się, że slave synchronizuje się z bazą danych master.
Możesz powtórzyć ten krok, aby dodać kolejny węzeł repliki.
Nowa architektura będzie taka, jak pokazano poniżej:

Kolejnym krokiem jest dodanie load balancera przed bazą danych. Load Balancer, taki jak ProxySQL, jest przydatny, ponieważ może przekierowywać żądania zapisu do urządzenia głównego i żądania odczytu do urządzeń podrzędnych. W ten sposób dystrybuujesz ruch Moodle. Zauważ, że możliwe jest również wykonanie konfiguracji master-master w oparciu o Galera Cluster for MySQL lub MariaDB.
W celu zapewnienia wysokiej dostępności użyjemy dwóch systemów równoważenia obciążenia. Możesz przejść do Zarządzaj -> Systemy równoważenia obciążenia w klastrze.


Musisz wypełnić pewne informacje, takie jak adres serwera, hasło administratora i monitora, dodaj użytkownika moodle do ProxySQL, a następnie kliknij opcję Wdróż ProxySQL. To uruchomi nową pracę. Powtórz wdrożenie w innym węźle modułu równoważenia obciążenia.
Ostatnią rzeczą jest skonfigurowanie keepalive dla systemów równoważenia obciążenia. Przejdź do Zarządzaj -> Systemy równoważenia obciążenia, jest zakładka dla Keepalive

Wystarczy wybrać typ modułu równoważenia obciążenia i dodać go do keepalive . Wypełnij wirtualny adres IP i interfejs sieciowy. Kliknij przycisk Wdróż Keepalved.
Ostateczna architektura naszej klastrowanej bazy danych Moodle o wysokiej dostępności będzie taka, jak pokazano poniżej:

Wystarczy zmienić konfigurację połączenia w config.php wskazując na dbhost na wirtualny adres IP, który skonfigurowaliśmy.
Po zakończeniu migracji do Clustered Database, możesz chcieć umieścić monitoring w swojej bazie danych Moodle, zgodnie z tymi wskazówkami.