Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wdrożyć bazę danych Chamilo MySQL w celu zapewnienia wysokiej dostępności

Chamilo to, podobnie jak Open edX czy Moodle, platforma, która umożliwia instytucjom edukacyjnym przenoszenie swoich działań edukacyjnych do internetu. Biorąc pod uwagę, że większość działań edukacyjnych przeniosła się do Internetu w ciągu ostatniego roku, nie jest zaskakujące, że widzimy coraz więcej osób walczących o skalowanie swoich platform edukacyjnych i zapewnienie lepszej dostępności.

Chamilo to platforma zbudowana na stosie *AMP, na który składają się Apache, MySQL i PHP. Jak zwykle, najtrudniejszym elementem do migracji do środowiska o wysokiej dostępności jest baza danych. W tym krótkim blogu chcielibyśmy omówić, w jaki sposób możesz poprawić wysoką dostępność bazy danych Chamilo.

Jak możesz sobie wyobrazić, pojedyncza baza danych MySQL jest pojedynczym punktem awarii i jako taka powinna być unikana we wdrożeniach produkcyjnych. Na szczęście istnieje kilka sposobów na poprawę dostępności bazy danych MySQL.

Jednym ze sposobów podejścia do problemu jest użycie klastra Galera. Minimalne wdrożenie powinno składać się z trzech węzłów - takie klastry mogą automatycznie obsłużyć awarię pojedynczego węzła. Pozostałe dwa węzły będą nadal działać i reagować na zapytania pochodzące z aplikacji.

Ta konfiguracja wymagałaby pewnego rodzaju równoważenia obciążenia przed klastrem Galera. Jego zadaniem byłoby obsłużenie ruchu i przekierowanie go do właściwego miejsca docelowego.

Zobaczmy, jak ClusterControl może pomóc we wdrożeniu klastra Galera z zestawem systemów równoważenia obciążenia, których można używać na platformie Chamilo.

Wdrażanie klastra MariaDB

Tym razem spróbujemy użyć MariaDB Cluster jako naszego backendu. Chamilo obsługuje MySQL 5.6 i nowsze lub MariaDB 5.5 i nowsze. W pierwszym kroku musimy wybrać „Wdrażanie” z kreatora:

Gdy to zrobimy, musimy zdefiniować łączność SSH, bez hasła, klucz Dostęp SSH oparty na protokole SSH jest wymagany dla ClusterControl, w przeciwnym razie nie będzie w stanie zarządzać infrastrukturą bazy danych:opiera się na łączności SSH, aby wykonywać polecenia uruchamiania lub zatrzymywania usług, instalowania oprogramowania i tak dalej.

Następnie powinniśmy zdecydować się na dostawcę, wersję, hasło, hosty i kilka dodatkowe ustawienia:

Po wypełnieniu tych wszystkich szczegółów możemy kontynuować wdrażanie.

Wdrażanie ProxySQL

Jak wspomnieliśmy wcześniej, sama baza danych nie jest jedynym elementem, który chcemy wdrożyć. Moglibyśmy użyć load balancera, którego użyjemy do przeniesienia ruchu, jeśli jeden z węzłów ulegnie awarii. Wykorzystamy go również do zapewnienia podziału odczytu/zapisu, kierując wszystkie zapisy do jednego węzła MariaDB Galera i rozdzielając odczyty na pozostałe węzły MariaDB Galera. Pomoże nam to uniknąć konfliktów między zapisami wykonywanymi w różnych węzłach Galera.

W przypadku ProxySQL ClusterControl również wymaga uzupełnienia pewnych informacji - należy wybrać hosta, na którym chcesz go zainstalować, zdecyduj o wersji ProxySQL, poświadczeniach dla użytkowników administracyjnych i monitorujących. Użytkownicy ci będą wykorzystywani do zarządzania ProxySQL i monitorowania stanu Twojego klastra Galera. Należy również zaimportować istniejących użytkowników bazy danych lub utworzyć nowego dla swojej aplikacji. Wreszcie, do Ciebie należy decyzja, których węzłów bazy danych chcesz używać z ProxySQL i czy korzystasz z transakcji niejawnych.

Wdrażanie funkcji Keepalved

ProxySQL będzie działał świetnie, rozprowadzając nasz ruch w węzłach klastra. Z drugiej strony pojedynczy węzeł ProxySQL będzie działał jako pojedynczy punkt awarii. Dlatego chcemy wdrożyć co najmniej dwa z nich. Następnie pojawia się pytanie, jak wykryć awarię węzła ProxySQL i jak przenieść ruch do zdrowego ProxySQL. Nadchodzi Keepalived. Pomysł polega na tym, aby mieć wirtualny adres IP, który będzie wskazywał na działającą instancję ProxySQL. Taki adres VIP może być następnie użyty w aplikacji jako punkt końcowy połączenia z bazą danych MySQL, zapewniając, że aplikacja zawsze trafi na sprawny serwer ProxySQL, co z kolei zapewni, że ruch trafi do sprawnego węzła klastra.

Po przekazaniu szczegółów, takich jak instancje ProxySQL, które powinny być monitorowane, wirtualny adres IP i interfejs VIP powinien zostać powiązany z którym jesteśmy gotowi do wdrożenia. Po kilku minutach wszystko powinno być gotowe, a topologia powinna wyglądać jak poniżej:

To tyle, jeśli chodzi o środowisko, które tworzyliśmy. Możesz skierować Chamilo w stronę VIP i portu 6033, to powinno wystarczyć, aby uzyskać połączenie z bazą danych zaplecza. Jeśli napotkasz jakiekolwiek problemy związane z nieaktualnymi odczytami (gdy zapis uderza w jeden węzeł, a następnie Chamilo spróbuje odczytać z innego węzła, możesz rozważyć włączenie sprawdzania przyczynowości w klastrze Galera. Istnieje zmienna wsrep_sync_wait, która może umożliwić testy na kilku dostępach wzorce:odczyty, aktualizacje, wstawienia, usunięcia, zamiany i polecenia SHOW. Jeśli interesują nas tylko zapytania SELECT, ustawimy tę zmienną na „1” za pomocą zarządzania konfiguracją ClusterControl.

Spowoduje to wprowadzenie tej zmiany na wszystkich węzłach klastra MariaDB.

To prawie wszystko. Jeśli chcesz podzielić się swoimi doświadczeniami z Chamilo, możesz zostawić nam komentarz.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę powtórzyć identyfikator zasobu #6 z odpowiedzi MySql w PHP?

  2. Kolumna obliczona z innej kolumny?

  3. Połącz Metabase z MySQL w celu eksploracji danych

  4. MYSQL Wybierz MAX Date w oświadczeniu dołączenia

  5. Obliczanie rozmiaru puli buforów InnoDB dla serwera MySQL