PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wdrożyć system LMS kanwy o wysokiej dostępności za pomocą klastra bazy danych PostgreSQL

W czasach pandemii platformy Learning Management System (LMS) stają się coraz ważniejsze, aby umożliwić Ci kontynuowanie nauki na odległość, gdy tradycyjny system edukacji po prostu nie jest już dostępny.

Posiadanie platformy LMS bez wysokiej dostępności może stanowić problem w przypadku awarii, ponieważ wszelkie wysiłki, aby utrzymać działanie systemu, nie będą miały sensu bez ciągłej dostępności bazy danych.

W tym blogu zobaczymy popularną aplikację LMS o nazwie Canvas LMS oraz sposób jej wdrożenia w sposób zapewniający wysoką dostępność przy użyciu PostgreSQL i ClusterControl.

Co to jest Canvas?

Canvas to internetowy system zarządzania nauką (LMS). Jest używany przez instytucje edukacyjne, edukatorów i studentów, aby uzyskać dostęp do materiałów edukacyjnych kursów online i zarządzać nimi oraz komunikować się na temat rozwoju umiejętności i osiągnięć w nauce.

Canvas zawiera różnorodne konfigurowalne narzędzia do tworzenia kursów i zarządzania nimi, analizy i statystyki kursów i użytkowników oraz narzędzia do komunikacji wewnętrznej.

Wdrożenie bazy danych LMS PostgreSQL na płótnie

Najpierw wdrożmy klaster PostgreSQL, który będzie używany przez aplikację Canvas LMS. W tym celu użyjemy ClusterControl, aby wdrożyć 3 węzły PostgreSQL (1 węzły podstawowe i 2 węzły w trybie gotowości) oraz 2 moduły równoważenia obciążenia HAProxy ze skonfigurowanym między nimi Keepalived.

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.

Zobaczmy więc, jak zaimplementować wspomnianą topologię za pomocą ClusterControl.

Wdrażanie bazy danych

Aby przeprowadzić wdrożenie z ClusterControl, po prostu wybierz opcję „Wdróż” i postępuj zgodnie z wyświetlanymi instrukcjami.

Wybierając PostgreSQL, musisz określić Użytkownika, Klucz lub Hasło oraz Port aby połączyć 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 dostępu SSH należy zdefiniować poświadczenia bazy danych , wersja i katalog danych (opcjonalnie). 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.

W ostatnim kroku możesz wybrać, czy twoja replikacja będzie synchroniczna, czy Asynchronicznie, a następnie po prostu naciśnij „Wdróż”

Po zakończeniu zadania możesz zobaczyć swój nowy klaster PostgreSQL w główny ekran ClusterControl.

Teraz masz już utworzony klaster, możesz wykonać na nim kilka zadań, jak dodanie systemu równoważenia obciążenia (HAProxy) lub nowej repliki.

Wdrażanie równoważenia obciążenia

Aby przeprowadzić wdrożenie systemu równoważenia obciążenia, wybierz opcję „Dodaj system równoważenia obciążenia” w działaniach klastra i uzupełnij wymagane informacje.

Wystarczy dodać adres IP lub nazwę hosta, port, zasady i węzły, których zamierzasz użyć.

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.

W tej chwili powinieneś mieć następującą topologię:

Teraz połączmy to środowisko z Canvas LMS w celu zapewnienia wysokiej dostępności.

Jak skonfigurować Canvas LMS

Najpierw musisz go zainstalować. Można to zrobić na różne sposoby, używając zautomatyzowanej konfiguracji w Dockerze, ręcznie, a nawet stosując różne podejścia, takie jak QuickStart lub instalacja zorientowana na produkcję. Możesz sprawdzić oficjalną dokumentację, aby wybrać najlepszą dla siebie metodę.

Po zainstalowaniu systemu Canvas LMS możesz przystąpić do konfiguracji pliku database.yml, aby korzystał ze środowiska PostgreSQL High Availability, które właśnie wdrożyłeś.

$ cat config/database.yml

production:

  adapter: postgresql

  encoding: utf8

  database: canvas_production

  host: VIRTUAL_IPADDRESS

  username: CANVAS_USER

  password: CANVAS_PASSWD

  timeout: 5000

Tutaj zastąp:

  • VIRTUAL_IPADDRESS dla wirtualnego adresu IP skonfigurowanego w Keepalive

  • CANVAS_USER dla użytkownika bazy danych Canvas

  • CANVAS_PASSWD dla hasła bazy danych Canvas

Upewnij się, że możesz uzyskać dostęp do bazy danych przy użyciu wirtualnego adresu IP jako hosta i jest to dozwolone w pliku konfiguracyjnym PostgreSQL pg_hba.conf. Możesz to przetestować, uruchamiając następujące polecenie z serwera aplikacji:

$ psql -h VIRTUAL_IPADDRESS -U CANVAS_USER canvas_production

Funkcja automatycznego odzyskiwania ClusterControl

Więc pytanie brzmi, poza procesem wdrażania, jaka jest tutaj rola ClusterControl?

W przypadku awarii, ClusterControl przeniesie najbardziej zaawansowany węzeł gotowości do stanu podstawowego, a także powiadomi Cię o problemie. Replikacja z nowego serwera głównego jest również błędna w stosunku do reszty węzła rezerwowego.

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 w trybie online węzły główny i zapasowy.

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ł rezerwowy, HAProxy oznacza stary podstawowy jako offline dla obu portów i umieszcza promowany węzeł online w porcie do odczytu i zapisu.

Jeśli Twój aktywny HAProxy, do którego 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ć.

Wnioski

W tym blogu omówiliśmy znaczenie posiadania środowiska PostgreSQL o wysokiej dostępności do użytku z platformą Canvas LMS oraz o tym, jak ClusterControl może pomóc w zadaniach wdrażania i automatycznego odzyskiwania. Wspomnieliśmy również o tym, jak ulepszyć to środowisko, dodając HAProxy i Keepalive dla celów wysokiej dostępności.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql -bash:psql:nie znaleziono polecenia

  2. Nie można połączyć się z Postgresem przez PHP, ale można połączyć się z wiersza poleceń i PgAdmina na innym komputerze

  3. cecha `diesel::Expression` nie jest zaimplementowana dla `bigdecimal::BigDecimal`

  4. Szkolenie PostgreSQL dla MySQLerów

  5. Ustawianie limitu czasu połączenia z PDO