Platformy Learning Management System (LMS) umożliwiają zdalne uczenie się/nauczanie, co jest naprawdę ważne ze względu na obecną sytuację na całym świecie.
Mając to na uwadze, możemy również powiedzieć, że wysoka dostępność jest koniecznością na tego rodzaju platformie, w przeciwnym razie nie byłaby dostępna, gdy byłaby potrzebna.
W tym blogu zobaczymy, jak wdrożyć bazę danych MariaDB w celu zapewnienia wysokiej dostępności, która będzie używana dla jednej z najpopularniejszych opcji platformy LMS, Chamilo LMS.
Co to jest Chamilo?
Chamilo LMS to darmowy system zarządzania nauką (LMS) przeznaczony do edukacji online i opracowany dzięki współpracy wielu firm i indywidualnych programistów.
Jako nauczyciel, korzystając z Chamilo, masz dostęp do szeregu przydatnych narzędzi do tworzenia efektywnego środowiska do nauki. Niektóre z tych narzędzi to:
- Importuj lub twórz dokumenty (audio, wideo, obrazy) i publikuj je
- Tworzenie testów i egzaminów z automatycznymi wynikami i opiniami zgodnie z wymaganiami
- Ustaw i odbierz wirtualne zadania
- Opisz elementy kursu w sekcjach opisowych
- Komunikuj się przez fora lub czat
- Publikuj ogłoszenia
- Dodaj linki
- Twórz grupy robocze lub grupy laboratoryjne
- Skonfiguruj wirtualną klasę
- Twórz ankiety
- Dodaj wiki, aby wspólnie tworzyć dokumenty
- Użyj glosariusza i agendy
- Włącz śledzenie uczestników na swoich kursach
- Zarejestruj obecność
- Opracuj dziennik zajęć i nie tylko
Platforma Chamilo jest niezwykle elastyczna. Wszystkie jego narzędzia można dostosować do potrzeb każdego kursu. Zapewnia przyjazny i intuicyjny interfejs użytkownika, który nie wymaga specjalnej wiedzy technicznej ani umiejętności.
Pytanie brzmi, jak wdrożyć bazę danych MariaDB w celu zapewnienia wysokiej dostępności, która będzie używana w tym systemie?
Baza danych MariaDB dla wysokiej dostępności
Istnieją różne podejścia do wdrażania bazy danych MariaDB w celu zapewnienia wysokiej dostępności. Zobaczmy dwie główne opcje.
Replikacja MariaDB Master-Slave
Możesz uruchomić konfigurację master-slave przy użyciu replikacji asynchronicznej lub półsynchronicznej. Zaletą tej prostej opcji jest to, że gdy master jest niedostępny, możesz awansować jednego z niewolników i kontynuować normalną pracę. Głównym problemem związanym z tą konfiguracją jest to, że przełączanie awaryjne musi być wykonywane ręcznie lub nawet za pomocą zewnętrznego narzędzia, takiego jak ClusterControl. Oznacza to, że będziesz mieć (krótki) przestój, który może być do zaakceptowania lub nie dla Twojej firmy.
Klaster MariaDB
Innym podejściem byłoby użycie Galera Cluster do przechowywania danych z Chamilo LMS. Możesz zacząć używać go z trzema węzłami i może automatycznie obsłużyć awarię jednego z tych węzłów. Pozostałe dwa węzły będą nadal działać odbierając połączenia z aplikacji Chamilo. Oznacza to, że w tym przypadku nie będziesz mieć przestojów, ale ponieważ jest to bardziej złożona topologia, będziesz potrzebować więcej wiedzy na temat tej technologii, a w zależności od obciążenia nie może to być najlepsza opcja.
Systemy równoważenia obciążenia
Aby poprawić wysoką dostępność, obie opcje będą wymagały przed sobą Load Balancer, który obsłuży ruch i przekieruje go do dostępnego/zdrowego węzła.
ProxySQL to dedykowany system równoważenia obciążenia dla MySQL, który zawiera wiele funkcji, w tym przekierowywanie zapytań, buforowanie zapytań i kształtowanie ruchu. Może być używany do łatwego konfigurowania podziału odczytu i zapisu oraz przekierowywania zapytań do oddzielnych węzłów zaplecza.
HAProxy to moduł równoważenia obciążenia, który rozdziela ruch z jednego źródła do jednego lub więcej miejsc docelowych i może zdefiniować określone reguły i/lub protokoły dla tego zadania. Jeśli którykolwiek z miejsc docelowych przestanie odpowiadać, jest oznaczany jako offline, a ruch jest przesyłany do pozostałych dostępnych miejsc docelowych.
Keepalived to usługa, która umożliwia skonfigurowanie wirtualnego adresu IP w ramach aktywnej/pasywnej grupy serwerów. Ten wirtualny adres IP jest przypisany do aktywnego serwera. Jeśli ten serwer ulegnie awarii, adres IP zostanie automatycznie przeniesiony do „dodatkowego” serwera pasywnego, umożliwiając mu dalszą pracę z tym samym adresem IP w sposób przejrzysty dla systemów.
Używanie tylko jednego węzła Load Balancer doda pojedynczy punkt awarii w Twojej topologii, więc możesz użyć kombinacji ProxySQL+Keepalived lub HAProxy+Keepalive przy użyciu dwóch węzłów Load Balancer (co najmniej) i Utrzymywane między nimi.
Teraz zobaczmy, jak ClusterControl może pomóc we wdrożeniu dodawania bazy danych MariaDB Load Balancery i wirtualny adres IP do wykorzystania w Twojej aplikacji Chamilo.
Wdrażanie bazy danych Chamilo MariaDB
Jako przykład, wdrożymy replikację MariaDB Master-Slave, która będzie używana przez aplikację Chamilo. W tym celu użyjemy ClusterControl do wdrożenia 2 węzłów bazy danych MariaDB (master-slave) i 2 modułów równoważenia obciążenia HAProxy ze skonfigurowanym między nimi Keepalived.
Wdrażanie bazy danych MariaDB
Aby przeprowadzić wdrożenie z ClusterControl, po prostu wybierz opcję „Wdróż” i postępuj zgodnie z wyświetlanymi instrukcjami.
Wybierając opcję Replikacja MySQL, należy określić użytkownika, klucz lub hasło oraz Port do łączenia się przez SSH z Twoimi serwerami. Możesz również dodać nazwę dla swojego nowego klastra i jeśli chcesz, aby ClusterControl zainstalował dla Ciebie odpowiednie oprogramowanie i konfiguracje.
Po skonfigurowaniu informacji o dostępie SSH należy wybrać dostawcę bazy danych /wersja i zdefiniuj poświadczenia bazy danych, port i katalog danych. Możesz także określić, którego repozytorium chcesz użyć.
W następnym kroku musisz dodać swoje serwery do klastra, który zamierzasz utworzyć przy użyciu adresu IP lub nazwy hosta.
Po zakończeniu zadania nowy klaster MariaDB będzie widoczny w główny ekran ClusterControl.
Teraz masz już utworzony klaster, możesz wykonać na nim kilka zadań, jak dodanie Load Balancer lub nowej repliki.
Wdrażanie równoważenia obciążenia
Aby przeprowadzić wdrożenie Load Balancer, wybierz opcję „Dodaj Load Balancer” w działaniach klastra i uzupełnij wymagane informacje.
Wystarczy dodać adres IP lub nazwę hosta, port, zasady i węzły, których będziesz używać do równoważenia obciążenia. Możesz go wdrożyć za pomocą dwóch różnych portów (odczyt/zapis i tylko do odczytu) lub możesz użyć tylko jednego portu do odczytu/zapisu, aby wysłać tam cały ruch.
Utrzymywane wdrażanie
Aby przeprowadzić wdrożenie z podtrzymaniem, wybierz opcję „Dodaj Load Balancer” w działaniach klastra, a następnie przejdź do zakładki Keepalived.
Tutaj wybierz węzły HAProxy i określ wirtualny adres IP, który będzie być używany do uzyskiwania dostępu do bazy danych.
Teraz połączmy to środowisko z aplikacją Chamilo.
Konfiguracja bazy danych Chamilo
Podczas wdrażania Chamilo, w kroku 4, będziesz musiał dodać konfigurację bazy danych.
W tym miejscu należy użyć wirtualnego adresu IP, aby uzyskać dostęp do bazy danych MariaDB i poświadczenia bazy danych.
Więcej informacji na temat konfiguracji Chamilo można znaleźć w oficjalnej dokumentacji.
To wszystko! Twoja aplikacja Chamilo korzysta z bazy danych MariaDB o wysokiej dostępności.
Funkcja automatycznego odzyskiwania ClusterControl
W przypadku awarii, ClusterControl promuje najbardziej zaawansowany węzeł podrzędny do stanu nadrzędnego oraz powiadamia o problemie. Replikuje również pozostałe węzły podrzędne z nowego serwera głównego.
Domyślnie HAProxy jest skonfigurowane z dwoma różnymi portami:do odczytu-zapisu i tylko do odczytu. Na porcie do odczytu i zapisu masz węzeł główny w trybie online, a pozostałe węzły w trybie offline, a na porcie tylko do odczytu masz zarówno węzły nadrzędne, jak i podrzędne w trybie online.
Gdy HAProxy wykryje, że jeden z Twoich węzłów jest niedostępny, automatycznie oznacza go jako offline i nie bierze pod uwagę przy wysyłaniu do niego ruchu. Wykrywanie odbywa się za pomocą skryptów sprawdzania kondycji, które są konfigurowane przez ClusterControl w czasie wdrażania. Sprawdzają one, czy instancje działają, czy są w trakcie odzyskiwania, czy są tylko do odczytu.
Gdy ClusterControl promuje węzeł podrzędny, HAProxy oznacza stary master jako offline dla obu portów i umieszcza promowany węzeł online w porcie do odczytu i zapisu.
Jeśli twój aktywny HAProxy, któremu przypisany jest wirtualny adres IP, z którym łączą się twoje systemy, ulegnie awarii, Keepalived automatycznie migruje ten adres IP do pasywnego HAProxy. Oznacza to, że Twoje systemy będą mogły dalej normalnie funkcjonować.
Wdrażanie bazy danych MariaDB za pomocą ClusterControl CLI
Jeśli wolisz wdrożyć klaster MariaDB za pomocą wiersza polecenia, możesz użyć narzędzia klienta wiersza polecenia ClusterControl o nazwie „s9s”. To narzędzie wyśle zadanie wdrożenia do serwera ClusterControl i wykona wszystkie niezbędne kroki w celu wdrożenia klastra.
Na przykład możesz uruchomić następujące polecenie na serwerze ClusterControl, aby utworzyć replikację master-slave MariaDB:
$ 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
W konsoli zobaczysz dziennik zadania, dzięki czemu będziesz mógł tam monitorować postęp wdrażania lub możesz również monitorować postęp zadania z ClusterControl UI -> Activity -> Jobs. Po zakończeniu zobaczysz go na liście w interfejsie użytkownika ClusterControl.
Wnioski
W tym blogu wspomnieliśmy o kilku opcjach wdrażania bazy danych MariaDB dla wysokiej dostępności przy użyciu ClusterControl oraz o tym, jak z niej korzystać w aplikacji Chamilo LMS.
Zastosowaliśmy proste wdrożenie typu master-slave, dodając moduły równoważenia obciążenia, aby poprawić wysoką dostępność w tej topologii, ale możesz ulepszyć to środowisko jeszcze bardziej, używając innej metody, takiej jak Galera+ProxySQL lub innej ich kombinacji .