PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да внедрите високодостъпен Canvas LMS с клъстер от база данни PostgreSQL

В тези пандемични времена платформите на системата за управление на обучението (LMS) стават все по-важни, за да ви позволят да продължите да учите дистанционно, когато традиционната образователна система просто вече не е налична.

Наличието на LMS платформа без висока наличност може да бъде проблем в случай на неуспех, тъй като всичките ви усилия да поддържате системата работеща няма да имат смисъл, без базата данни да е налична по всяко време.

В този блог ще видим популярно LMS приложение, наречено Canvas LMS, и как да го разгърнем по начин с висока достъпност с помощта на PostgreSQL и ClusterControl.

Какво е Canvas?

Canvas е уеб-базирана система за управление на обучението (LMS). Използва се от учебни институции, преподаватели и студенти за достъп и управление на учебните материали за онлайн курсове и за комуникация за развитие на умения и постижения в обучението.

Canvas включва разнообразие от инструменти за създаване и управление на курсове, които могат да се персонализират, анализи и статистика на курсове и потребители, както и инструменти за вътрешна комуникация.

Разгръщане на база данни на Canvas LMS PostgreSQL

Първо, нека внедрим PostgreSQL клъстер, който ще се използва от приложението Canvas LMS. За целта ще използваме ClusterControl за разгръщане на 3 PostgreSQL възела (1 първичен и 2 резервни възела) и 2 HAProxy Load Balancer с Keepalived, конфигуриран между тях.

HAProxy е средство за балансиране на натоварването, което разпределя трафика от един източник към една или повече дестинации и може да дефинира специфични правила и/или протоколи за тази задача. Ако някоя от дестинациите спре да отговаря, тя се маркира като офлайн и трафикът се изпраща към останалите налични дестинации.

Keepalived е услуга, която ви позволява да конфигурирате виртуален IP адрес в рамките на активна/пасивна група сървъри. Този виртуален IP адрес се присвоява на активен сървър. Ако този сървър не успее, IP адресът автоматично се мигрира към „Вторичния“ пасивен сървър, което му позволява да продължи да работи със същия IP адрес по прозрачен за системите начин.

И така, нека видим как да приложим споменатата топология с помощта на ClusterControl.

Разгръщане на база данни

За да извършите внедряване от ClusterControl, просто изберете опцията „Внедряване“ и следвайте инструкциите, които се появяват.

Когато избирате PostgreSQL, трябва да посочите потребител, ключ или парола и порт за да се свържете чрез SSH към вашите сървъри. Можете също да добавите име за вашия нов клъстер и ако искате ClusterControl да инсталира съответния софтуер и конфигурации вместо вас.

След като настроите информацията за SSH достъп, трябва да дефинирате идентификационните данни за базата данни , версия и datadir (по избор). Можете също да посочите кое хранилище да използвате.

В следващата стъпка трябва да добавите вашите сървъри към клъстера, който ще създадете, използвайки IP адреса или името на хоста.

В последната стъпка можете да изберете дали репликацията ви ще бъде синхронна или Асинхронно и след това просто натиснете „Разгръщане“

След като задачата приключи, можете да видите своя нов PostgreSQL клъстер в основен екран на ClusterControl.

Сега имате създаден клъстер, можете да изпълнявате няколко задачи върху него, като добавяне на балансьор на натоварване (HAProxy) или нова реплика.

Разгръщане на Load Balancer

За да извършите разгръщане на балансиране на натоварването, изберете опцията „Добавяне на балансьор на натоварване“ в действията на клъстера и попълнете исканата информация.

Трябва само да добавите IP или име на хост, порт, политика и възли, които ще използвате.

Поддържано разполагане

За да извършите внедряване на Keepalived, изберете опцията „Добавяне на Load Balancer“ в действията на клъстера и след това отидете в раздела Keepalived.

Тук изберете HAProxy възлите и посочете виртуалния IP адрес, който ще да се използва за достъп до базата данни.

В този момент трябва да имате следната топология:

Сега нека свържем тази среда с Canvas LMS за висока достъпност.

Как да конфигурирате Canvas LMS

Първо, ще трябва да го инсталирате. Има различни начини да го направите, като използвате автоматизирана настройка на Docker, ръчно или дори като използвате различни подходи като QuickStart или Production-Oriented инсталация. Можете да проверите официалната документация, за да изберете най-добрия метод за вас.

След като сте инсталирали Canvas LMS, можете да продължите да конфигурирате файла database.yml да използва средата с висока достъпност на PostgreSQL, която току-що внедрихте.

$ cat config/database.yml

production:

  adapter: postgresql

  encoding: utf8

  database: canvas_production

  host: VIRTUAL_IPADDRESS

  username: CANVAS_USER

  password: CANVAS_PASSWD

  timeout: 5000

Тук заменете:

  • VIRTUAL_IPADDRESS за виртуален IP адрес, конфигуриран в Keepalived

  • CANVAS_USER за потребителя на базата данни Canvas

  • CANVAS_PASSWD за паролата на базата данни Canvas

Уверете се, че имате достъп до вашата база данни, като използвате вашия виртуален IP адрес като хост и това е разрешено в pg_hba.conf PostgreSQL конфигурационния файл. Можете да го тествате, като изпълните следната команда от вашия сървър на приложения:

$ psql -h VIRTUAL_IPADDRESS -U CANVAS_USER canvas_production

Функция за автоматично възстановяване на ClusterControl

И така, въпросът е, освен процеса на внедряване, каква е ролята на ClusterControl тук?

В случай на неуспех, ClusterControl ще повиши най-напредналия резервен възел до основен, както и ще ви уведоми за проблема. Освен това не успява да се репликира върху останалата част от възела в режим на готовност от новия първичен сървър.

По подразбиране HAProxy е конфигуриран с два различни порта:за четене-запис и само за четене. В порта за четене и запис имате основния си възел като онлайн, а останалите възли като офлайн, а в порта само за четене имате онлайн както основния, така и резервния възел.

Когато HAProxy открие, че един от вашите възли не е достъпен, той автоматично го маркира като офлайн и не го взема предвид за изпращане на трафик към него. Откриването се извършва чрез скриптове за проверка на състоянието, които са конфигурирани от ClusterControl в момента на внедряването. Те проверяват дали екземплярите са актуални, дали са в процес на възстановяване или са само за четене.

Когато ClusterControl популяризира възел в режим на готовност, HAProxy маркира стария първичен като офлайн за двата порта и поставя повишения възел онлайн в порта за четене и запис.

Ако вашият активен HAProxy, на който е присвоен виртуален IP адрес, към който се свързват системите ви, не успее, Keepalived мигрира този IP адрес към вашия пасивен HAProxy автоматично. Това означава, че вашите системи могат да продължат да функционират нормално.

Заключение

В този блог говорихме за важността на наличието на PostgreSQL среда с висока достъпност, която да използвате с вашата Canvas LMS платформа, и как ClusterControl може да ви помогне както със задачи за внедряване, така и за автоматично възстановяване. Споменахме също как да подобрим тази среда чрез добавяне на HAProxy и Keepalived за целите на високата достъпност.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Инсталирайте Postgres.app на Mac

  2. Как да увеличим максималните връзки в postgres?

  3. Една система за сигурност за приложения, пул на връзки и PostgreSQL - Случаят за LDAP

  4. Сравнение на типовете колони на базата данни в MySQL, PostgreSQL и SQLite? (Кръстосано картографиране)

  5. Как да броим дните с изключение на неделята между две дати в Postgres?