Chamilo е, подобно на Open edX или Moodle, платформа, която позволява на образователните институции да прехвърлят своите образователни дейности в интернет. Като се има предвид, че по-голямата част от образователната дейност се премести онлайн през последната година, не е изненадващо, че виждаме все повече хора, които се борят да разширят своите образователни платформи и да осигурят по-добра достъпност.
Chamilo е платформа, изградена върху стека *AMP, който се състои от Apache, MySQL и PHP. Както обикновено, базата данни е най-трудният елемент за мигриране към високодостъпна среда. В този кратък блог бихме искали да обсъдим как можете да подобрите високата достъпност на базата данни на Chamilo.
Както можете да си представите, единичната база данни MySQL е единична точка на повреда и като такава трябва да се избягва при производствените внедрявания. За щастие има няколко начина, по които можете да подобрите наличността на MySQL база данни.
Един от начините, по които можете да подходите към проблема, е да използвате клъстер Galera. Минималното разгръщане трябва да се състои от три възела - такива клъстери могат автоматично да се справят с повредата на един възел. Останалите два възела ще продължат да работят и ще отговарят на заявки, идващи от приложението.
Тази настройка ще изисква някакъв вид балансьор на натоварването пред клъстера Galera. Неговата работа би била да обработва трафика и да го пренасочва към подходяща дестинация.
Нека видим как ClusterControl може да ви помогне да внедрите Galera Cluster с набор от балансьори на натоварване, които можете да използвате за вашата платформа Chamilo.
Разгръщане на MariaDB клъстер
Този път ще се опитаме да използваме MariaDB Cluster като наш бекенд. Chamilo поддържа MySQL 5.6 и по-нови или MariaDB 5.5 и по-нови. Като първа стъпка трябва да изберем „Внедряване“ от съветника:
След като направим това, трябва да дефинираме SSH свързаност, без парола, ключ -базиран SSH достъп е изискване за ClusterControl, в противен случай той няма да може да управлява инфраструктурата на базата данни:той разчита на SSH свързаност за изпълнение на команди за стартиране или спиране на услуги, инсталиране на софтуер и т.н.
След това трябва да вземем решение за доставчика, версията, паролата, хостовете и някои допълнителни настройки:
С попълнени всички тези подробности е добре да продължим с внедряването.
Разгръщане на ProxySQL
Както споменахме по-рано, самата база данни не е единственият елемент, който искаме да разположим. Бихме могли да използваме балансьор на натоварване, който ще използваме, за да преместим трафика наоколо, ако един от възлите не успее. Също така ще го използваме, за да осигурим разделяне на четене/запис, като насочваме всички записвания към един възел на MariaDB Galera и разделяме четенията между останалите възли на MariaDB Galera. Това ще ни помогне да избегнем конфликти между записвания, изпълнявани на различни възли на Galera.
За ProxySQL ClusterControl също изисква попълване на информация - трябва да изберете хост, на който да го инсталирате, вземете решение за версията на ProxySQL, идентификационни данни за административните и наблюдаващи потребители. Тези потребители ще бъдат използвани за управление на ProxySQL и наблюдение на състоянието на вашия клъстер Galera. Трябва също да импортирате съществуващи потребители на база данни или да създадете нов за вашето приложение. И накрая, от вас зависи да решите кои възли на базата данни искате да използвате с ProxySQL и да решите дали да използвате неявни транзакции.
Внедряване на Keepalived
ProxySQL ще работи чудесно, разпределяйки нашия трафик между възлите на клъстера. От друга страна, един възел на ProxySQL ще действа като единична точка на отказ. Затова искаме да разположим поне две от тях. Тогава въпросът е как да се открие неуспехът на ProxySQL възела и как да се премести трафикът към здрав ProxySQL. Идва Keepalived. Идеята тук е да имате виртуален IP, който ще сочи към работещия ProxySQL екземпляр. След това такъв VIP може да се използва в приложението като крайна точка за свързване на базата данни MySQL, като се гарантира, че приложението винаги ще удря здравия ProxySQL, което от своя страна ще гарантира, че трафикът ще достигне здравия възел на клъстера.
След предаване на подробности като ProxySQL екземпляри, които трябва да бъдат наблюдавани, виртуален IP и интерфейс VIP трябва да се обвърже с ние сме готови за внедряване. След няколко минути всичко трябва да е готово и топологията трябва да изглежда така:
Това е, когато става въпрос за средата, която изграждахме. Можете да насочите вашия Chamilo към VIP и порт 6033, това трябва да е достатъчно, за да получите свързаността към вашата база данни. Ако срещнете някакви проблеми, свързани с остарели четения (когато записът удари един възел и след това Chamilo се опита да чете от друг възел, можете да разгледате как да активирате проверки за причинно-следствена връзка в клъстера Galera. Има променлива wsrep_sync_wait, която може да активира тестове за няколко достъпа шаблони:чете, актуализира, вмъква, изтрива, заменя и SHOW команди. Ако се интересуваме само от заявките SELECT, ще зададем тази променлива на '1' с помощта на управление на конфигурацията на ClusterControl.
Това ще извърши тази промяна на всички възли на MariaDB Cluster.
Това е почти всичко. Ако искате да споделите част от опита си с Chamilo, можете да ни оставите коментар.