Платформите на системата за управление на обучението (LMS) ви позволяват да учите/преподавате дистанционно, нещо, което е наистина важно поради настоящата ситуация по света.
Като казахме това, можем също да кажем, че високата наличност е задължителна в този вид платформа, в противен случай тя не би могла да бъде достъпна, когато е необходима.
В този блог ще видим как да разположим база данни на MariaDB за висока наличност, която да се използва за една от най-популярните опции за LMS платформа, Chamilo LMS.
Какво е Chamilo?
Chamilo LMS е безплатна система за управление на обучението (LMS), предназначена за онлайн обучение и разработена чрез сътрудничеството на много компании и отделни разработчици.
Като учител, използвайки Chamilo, имате достъп до серия от полезни инструменти за създаване на ефективна учебна среда. Някои от тези инструменти са:
- Импортирайте или създавайте документи (аудио, видео, изображения) и ги публикувайте
- Създавайте тестове и изпити с автоматизирани резултати и обратна връзка според изискванията
- Задаване и получаване на виртуални задачи
- Опишете компонентите на курса чрез секции с описание
- Общувайте чрез форуми или чат
- Публикуване на съобщения
- Добавяне на връзки
- Създайте работни групи или лабораторни групи
- Настройте виртуална класна стая
- Създаване на анкети
- Добавете уики за създаване на документи съвместно
- Използвайте речник и дневен ред
- Активирайте проследяването на учащите във вашите курсове
- Регистрирайте присъствие
- Изработване на дневник на класа и други
Платформата Chamilo е изключително гъвкава. Всички негови инструменти могат да бъдат персонализирани според нуждите на всеки курс. Той предоставя удобен и интуитивен потребителски интерфейс, който не изисква специални предварителни технически познания или умения.
И така, въпросът е как можете да разгърнете база данни на MariaDB за висока наличност, която да се използва за тази система?
База данни MariaDB за висока достъпност
Има различни подходи за внедряване на MariaDB база данни за висока достъпност. Нека видим двете основни опции.
MariaDB Master-Slave репликация
Можете да стартирате настройка главен-подчинен, като използвате асинхронна или полусинхронна репликация. Предимството на тази проста опция е, че когато главният е недостъпен, можете да повишите един от подчинените и да продължите да работите както обикновено. Основният проблем с тази настройка е, че преминаването на отказ трябва да се извърши ръчно или дори с помощта на външен инструмент като ClusterControl. Това означава, че ще имате (кратък) престой, което може да е приемливо или не за вашия бизнес.
Клъстер MariaDB
Друг подход би бил използването на клъстер Galera за съхраняване на данните от Chamilo LMS. Можете да започнете да го използвате с три възела и той може автоматично да се справи с повредата на един от тези възли. Останалите два възела ще продължат да работят, като получават връзки от приложението Chamilo. Това означава, че няма да имате престой в този случай, но тъй като е по-сложна топология, ще ви трябват повече познания за тази технология и в зависимост от натоварването, това не може да бъде най-добрият вариант.
Балансьори на натоварване
За да подобрят високата наличност, и двете опции ще изискват Load Balancer пред тях, който ще обработва трафика и ще го пренасочи към наличен/здрав възел.
ProxySQL е специален балансьор на натоварването за MySQL, който се предлага с различни функции, включително пренасочване на заявки, кеширане на заявки и оформяне на трафика. Може да се използва за лесно настройване на разделяне на четене-запис и пренасочване на заявки към отделни бекенд възли.
HAProxy е средство за балансиране на натоварването, което разпределя трафика от един източник към една или повече дестинации и може да дефинира специфични правила и/или протоколи за тази задача. Ако някоя от дестинациите спре да отговаря, тя се маркира като офлайн и трафикът се изпраща към останалите налични дестинации.
Keepalived е услуга, която ви позволява да конфигурирате виртуален IP адрес в рамките на активна/пасивна група сървъри. Този виртуален IP адрес се присвоява на активен сървър. Ако този сървър не успее, IP адресът автоматично се мигрира към „Вторичния“ пасивен сървър, което му позволява да продължи да работи със същия IP адрес по прозрачен за системите начин.
Използването само на един възел на Load Balancer ще добави една точка на отказ във вашата топология, така че можете да използвате комбинацията от ProxySQL+Keepalived или HAProxy+Keepalived, като използвате два възела на Load Balancer (поне) и Поддържайте живи между тях.
Сега нека видим как ClusterControl може да ви помогне да разположите добавяне на MariaDB база данни Балансьори на натоварване и виртуален IP адрес, които да се използват във вашето приложение Chamilo.
Разгръщане на база данни на Chamilo MariaDB
Като пример ще внедрим MariaDB Master-Slave репликация, която ще се използва от приложението Chamilo. За това ще използваме ClusterControl, за да разположим 2 възела на MariaDB Database (главен-подчинен) и 2 HAProxy Load Balancer с конфигуриран Keepalived между тях.
Разгръщане на база данни MariaDB
За да извършите внедряване от ClusterControl, просто изберете опцията „Внедряване“ и следвайте инструкциите, които се появяват.
Когато избирате MySQL репликация, трябва да посочите потребител, ключ или парола и Порт за свързване чрез SSH към вашите сървъри. Можете също да добавите име за вашия нов клъстер и ако искате ClusterControl да инсталира съответния софтуер и конфигурации вместо вас.
След като настроите информацията за SSH достъп, трябва да изберете доставчика на базата данни /version и дефинирайте идентификационните данни на базата данни, порта и директорията с данни. Можете също да посочите кое хранилище да използвате.
В следващата стъпка трябва да добавите вашите сървъри към клъстера, който ще създадете, използвайки IP адреса или името на хоста.
След като задачата приключи, можете да видите своя нов MariaDB клъстер в главен екран на ClusterControl.
Сега имате създаден клъстер, можете да изпълнявате няколко задачи върху него, като добавяне на Load Balancer или нова реплика.
Разгръщане на Load Balancer
За да извършите разгръщане на Load Balancer, изберете опцията „Добавяне на Load Balancer“ в действията на клъстера и попълнете исканата информация.
Трябва само да добавите IP или име на хост, порт, политика и възли, които ще използвате за балансиране на натоварването. Можете да го разгърнете, като използвате два различни порта (четене/запис и само за четене) или можете да използвате само един порт за четене/запис, за да изпратите целия трафик там.
Поддържано разполагане
За да извършите внедряване на Keepalived, изберете опцията „Добавяне на Load Balancer“ в действията на клъстера и след това отидете в раздела Keepalived.
Тук изберете HAProxy възлите и посочете виртуалния IP адрес, който ще да се използва за достъп до базата данни.
Сега нека свържем тази среда с приложението Chamilo.
Конфигурация на база данни на Chamilo
По време на внедряването на Chamilo, в стъпка 4, ще трябва да добавите конфигурацията на базата данни.
Тук трябва да използвате виртуалния IP адрес за достъп до вашата MariaDB база данни и идентификационните данни на базата данни.
За повече подробности относно конфигурацията на Chamilo можете да се обърнете към Официалната документация.
Това е! Имате вашето приложение Chamilo, използващо MariaDB база данни с висока достъпност.
Функция за автоматично възстановяване на ClusterControl
В случай на неуспех, ClusterControl ще популяризира най-модерния подчинен възел за главен, както и ще ви уведоми за проблема. Освен това не успява да се репликира над останалите подчинени възли от новия главен сървър.
По подразбиране HAProxy е конфигуриран с два различни порта:за четене-запис и само за четене. В порта за четене и запис имате своя главен възел като онлайн, а останалите възли като офлайн, а в порта само за четене имате онлайн както главния, така и подчинения възел.
Когато HAProxy открие, че един от вашите възли не е достъпен, той автоматично го маркира като офлайн и не го взема предвид за изпращане на трафик към него. Откриването се извършва чрез скриптове за проверка на здравето, които са конфигурирани от ClusterControl по време на внедряването. Те проверяват дали екземплярите са актуални, дали са в процес на възстановяване или са само за четене.
Когато ClusterControl популяризира подчинен възел, HAProxy маркира стария главен възел като офлайн за двата порта и поставя повишения възел онлайн в порта за четене и запис.
Ако вашият активен HAProxy, на който е присвоен виртуален IP адрес, към който се свързват системите ви, не успее, Keepalived мигрира този IP адрес към вашия пасивен HAProxy автоматично. Това означава, че вашите системи могат да продължат да функционират нормално.
Разгръщане на база данни MariaDB с помощта на ClusterControl CLI
Ако предпочитате да разположите MariaDB Cluster с помощта на командния ред, можете да използвате клиентския инструмент от командния ред ClusterControl, наречен "s9s". Този инструмент ще изпрати задание за разгръщане до сървъра на ClusterControl и ще изпълни всички необходими стъпки за разполагане на клъстера.
Например, можете да изпълните следната команда на сървъра ClusterControl, за да създадете 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
Ще видите дневника на заданията в конзолата, за да можете да наблюдавате напредъка на внедряването там, или можете също да наблюдавате напредъка на заданието от ClusterControl UI -> Activity -> Jobs. Когато приключи, можете да го видите в списъка в потребителския интерфейс на ClusterControl.
Заключение
В този блог споменахме някои опции за разгръщане на база данни MariaDB за висока наличност с помощта на ClusterControl и как да я използвате в приложение на Chamilo LMS.
Използвахме просто внедряване главен-подчинен, като добавихме балансьори на натоварване, за да подобрим високата наличност на тази топология, но можете да подобрите тази среда още повече, като използвате различен подход като Galera+ProxySQL или различна комбинация от тях .