MySQL to jedna z najbardziej popularnych relacyjnych baz danych typu open-source. Jest ona wykorzystywana w wielu projektach na całym świecie, w tym tych o ogromnym zasięgu, jak np. Facebook, Twitter, YouTube, itd. Oczywiście, projekty tego typu opierają się na naprawdę niezawodnych i wysoce dostępnych systemach do przechowywania danych, dzięki którym mogą zapewnić odpowiednią jakość usług. Najbardziej podstawowym, a zarazem głównym, sposobem na jak najbardziej efektywne przechowywanie danych jest klastrowanie bazy danych. Umożliwia to przetwarzanie dużej liczby poleceń równocześnie oraz zachowuje funkcjonalność w warunkach zwiększonego obciążenia. Konfigurowanie tego rozwiązania od podstaw może wydać się dość skomplikowane.

W ramach platformy UniCloud, w celu przyspieszenia i zautomatyzowanie wszelkich prac przygotowaliśmy paczkę instalacyjną, która uruchamia wszystko za pomocą jednego kliknięcia – Skalowalny klaster MySQL (Scalable MySQL Cluster) z replikacją typu out-of-box master-slave, a nawet dystrybucją poleceń i autowykrywaniem węzłów. Ma on za zadanie natychmiastowe rozmieszczenie pary połączonych wzajemnie kontenerów MySQL, które obsługują asynchroniczną replikację danych oraz są automatycznie rekonfigurowane po skalowaniu klastra (np. zmieniając liczbę węzłów). Rozwiązanie to jest dostarczane wraz z programem równoważenia obciążeniowego Proxy SQL load balancer przed zestawami węzłów bazy danych i wbudowanym narzędziem Orchestrator, umożliwiającym wygodne zarządzanie za pomocą interfejsu GUI.

Na początku, przypomnimy sobie parę szczegółów implementacji rozwiązań Skalowalnego Klastra MySQL (Scalable MySQL Cluster) i sprawdzimy, jak działa. Następnie przejdziemy do instrukcji opisującej jego rozmieszczanie, przeanalizujemy możliwości wbudowanego panelu zarządzania oraz zapoznamy się z wdrożonym trybem mechanizmu failover (przełączania awaryjnego) bazy danych z symulowaną awarią węzła.

Specyfikacje skalowalnego pakietu klastra MySQL (MySQL Cluster Package)

Po zainstalowaniu pakietu Scalable MySQL Cluster with Load Balancing otrzymasz środowisko opierające się na Dokerze, zawierające następujące specyfikacje wdrożeniowe:

  • topologia domyślna zawiera 1 węzeł równoważenia obciążeniowego ProxySQL (na podstawie obrazu jelastic/proxysql) oraz parę asynchronicznie replikowanych instancji serwera MySQL DB (zbudowanych na szablonie jelastic/mysql:5.7 i późniejszym),
  • początkowo utworzony kontener MySQL ma nadaną rolę master, podczas gdy drugi (i wszystkie pozostałe ręcznie dodane węzły) będą służyć jako slaves,
  • domyślnie, każdy kontener ma przypisane 8 cloudletów (a więc łącznie 1 GIB RAM oraz 3.2 GHz CPU) do automatycznego skalowania pionowego.

proxySQL

Obecna wersja Skalowalnego klastra MySQL zaopatrzona jest w zestaw specjalnej konfiguracji przedwstępnej. Poniżej przedstawiamy wyróżniające produkt zalety i możliwości:

  • efficient load balancing, czyli wydajne równoważenie obciążenia – ProxySQL wykorzystuje hostgroups do oddzielania master DB (z możliwością odczytu i zapisu) od slaves (z uprawnieniami tylko do odczytu). W tym przypadku, ze względu na specjalne query rules wszystkie zaznaczone żądania są przekierowywane tylko do serwerów podrzędnych (slave) i dystrybuowane między nimi za pomocą algorytmu round-robin. W ten sposób zapewniane jest równomierne obciążenie.
  • scalability and autodiscovery, czyli skalowalność i automatyczne odnajdowanie – nowe wiązania MySQL, dodawane podczas ręcznego skalowania poziomego serwera bazy danych, są włączane do klastra jako slaves ze wszystkimi automatycznie dostosowaniami wymaganymi modyfikacjami.
  • re-configuration with no downtime, czyli rekonfiguracja bez przestojów – klaster przeznaczony jest do pracy ciągłej i może być regulowany na bieżąco, bez konieczności ponownego uruchamiania działającej usługi.
  • automated failover, czyli automatyczne przełączanie awaryjne – podległe węzły bazy danych (DB slave) o wysokim opóźnieniu lub te, do których nie można dotrzeć, są tymczasowo wyłączane z klastra i ponownie dodawane po nawiązaniu połączenia.
  • comfortable GUI, czyli wygodny interfejs graficzny – rozwiązanie zawiera wstępnie zainstalowane narzędzia Orchestrator ułatwiając w ten sposób zarządzanie klastrem (np. ponowna refaktoryzacja ścieżki replikacji, naprawianie błędów topologii, itp.).

Teraz dowiesz się jak, w zaledwie paru kliknięciach, uzyskać takie zintegrowane rozwiązanie MySQL i poruszać się wśród kontenerów Dockera w UniCloud.

Jak zainstalować skalowalny klaster MySQL

Wdrożenie na platformie UniCloud skalowalnego klastra MySQL (Scalable MySQL Cluster) z Równoważeniem Obciążenia (Load Balancing) jest w pełni zautomatyzowane. Pozwala to na otrzymanie, w zaledwie parę minut, w pełni skonfigurowanego i gotowego do pracy klastra z danymi.

  1. Zaloguj się do swojego konta UniCloud i zaimportuj odpowiedni plik manifest.jps przez URL: https://github.com/jelastic-jps/mysql-cluster/blob/master/mysql-cluster-orchestrator/manifest.jps lub skorzystaj z gotowej paczki poprzez Listę Gotowych Aplikacji (menu Klastry).menu UniCloud
    import_UniCloud
    klaster-UniCloud
  2. W otwartym oknie instalacyjnym podaj szczegółowe informacje na temat instalowanego środowiska.clustered-mysql
  3. Poczekaj chwilę, aż konfiguracja zostanie zakończona.
    instalowanie-mysql-clustered

Po pomyślnym zakończeniu instalacji, otrzymasz potwierdzenie na adres e-mail. Wiadomość będzie zawierać najbardziej istotne informacje administracyjne dotyczące Twoich klastrów MySQL:

  • Skalowalny klaster bazy danych (Scalable Database Cluster) – dostarcza danych dostępowych do panelu administracyjnego PHPMyAdmin, służącego do zarządzania bazami danych.
  • Automatyczna replikacja bazy danych (Database Auto Replication) – wyświetla informacje o połączeniu klastra, aby powiązać go z Twoją aplikacją.
  • Konfiguracja Orchestrator (Orchestrator Configuration) – dostarcza dane dostępowe do panelu Orchestrator, przeznaczonego do wygodnego zarządzania klastrem.

Jesteś już gotowy do korzystania z klastra bazy danych.

Monitorowanie instancji klastra i autowykrywanie przez Orchestrator

Niezbędne informacje na temat wbudowanych możliwości zarządzania, znajdziesz we wbudowanym panelu Orchestrator. Sprawdzisz tam również możliwości działania klastra.

Narzędzie to dostępne jest po kliknięciu przycisku Otwórz w przeglądarce, znajdującego się obok warstwy Proxysql stworzonego środowiska.

proxysql

  1. Pulpit Orchestrator otworzy się w osobnej zakładce przeglądarki, rozwijając przed Tobą wiele dodatkowych opcji oraz menu.orchestrator
    W dużym obszarze roboczym powyżej, można zauważyć, że klaster bazy danych został już wykryty i jest aktualnie śledzony.
  2. Aby przejrzeć pełną topologię klastra, kliknij odpowiednią belkę (np. wszystkie instancje, z których składa się baza danych). Zgodnie z domyślnymi ustawieniami pakietu mamy parę wzajemnie połączonych węzłów MySQL, jeden na master i jeden na slave.orchestrator replica
    Tutaj, każda instancja belki wyświetla szczegóły danego serwera bazy danych, takie jak jej domena, działająca wersja stosu, role przypisane w granicach klastra, itd.
  3. Jeśli spodziewasz się dużego obciążenia, rozsądne byłoby rozszerzyć pamięć klastra o kilka dodatkowych urządzeń podrzędnych (slave) zapewniających większą trwałość. Aby to zrobić, wróć do panelu UniCloud i rozbuduj liczbę kontenerów w klastrze MySQL – na przykład dodaj dwa kolejne węzły.Rozbudowa kontenerów mysql
  4. Po pomyślnym dodaniu instancji (prześledź stan tej operacji w sekcji Dziennik zdarzeń na dole panelu zarządzania), przełącz się do zakładki przeglądarki Orchestrator i sprawdź ich obecność w wyświetlonej typologii klastra.
    Wskazówka: Pulpit Orchestrator jest automatycznie odświeżany raz na minutę podczas braku aktywności (tzn.jeśli nie pracujesz na danej zakładce przeglądarki). Więc jeśli wrócisz do zarządzania klastrem wyświetlą się najświeższe dane.
    orchestrator
    Czas, który pozostał do następnego odświeżenia wyświetlany jest w górnej części panelu. Kliknięcie na licznik zatrzyma jego automatyczne odświeżanie. Kolejne kliknięcie ponownie go uruchomi.W wyniku rozszerzenia klastra powinniśmy zobaczyć trzy węzły slave, połączone z główną bazą danych MySQL master.

Sprawdzanie trybu failover klastra przy pomocy symulowanego błędu slave

Zatrzymajmy replikację na jednym z podrzędnych serwerów bazy danych (slave), aby zasymulować jego błąd i sprawdzić, jak Orchestrator go wykryje i naprawi.

  1. Podłącz zatem jeden ze swoich podrzędnych kontenerów MySQL poprzez SSH i przejdź do powłoki bazy danych za pomocą następującego polecenia:
    mysql -u {user} -pssh-mysql
    Oczywiście, w tym miejscu {user} należy zastąpić nazwą administratora MySQL (i zatwierdzić odpowiednim hasłem). Uwierzytelni to ustanowione połączenie. Dane uwierzytelniające znajdziesz w informacji dotyczącej klastra, przesłanej e-mailem po jego stworzeniu.
  2. Sprawdźmy najpierw stan faktyczny aktualnych serwerów baz danych, wpisując następujące ścieżki:
    show slave status\Gssh-mysql-slave
    Jak widzisz, węzeł slave działa bez zarzutu.
  3. Podzielmy teraz główny proces replikacji na wybranym serwerze bazy danych i sprawdźmy jej wynik. Aby zrobić to równocześnie, wpisz dwie następujące komendy w jednej ścieżce:
    stop slave; show slave status\G
    show slave mysql
  4. Wróć do pulpitu nawigacyjnego Orchestrator. Sprawdź, czy nasza symulowana niedostępność serwera została wykryta – odpowiedni węzeł powinien być wyróżniony kolorem czerwonym.Ponadto, w prawym górnym rogu obszaru roboczego wyświetli się czerwona ikona ostrzeżenia. Dla zachowania przejrzystości wszystkie problemy dotyczące klastra wyświetlają się na jednej liście.
  5. Aby ujawnić przyczynę problemu, kliknij ikonę koła zębatego w odpowiednim pasku węzła, w którym pojawił się błąd. W otwartych okienku zostanie wyświetlona dodatkowa informacja dotycząca instancji bazy danych (np. status replikacji i opóźnienia, identyfikator serwera, uprawnienia do odczytu / zapisu, czas trwania pracy itp.) oraz opcje, dzięki którym będzie można wykonać podstawowe czynności związane z zarządzaniem.W naszym przypadku widać, że replikacja nie działa. Aby przywrócić pełną funkcjonalność klastra, kliknij przycisk Start slave dla danych węzła master, które zostaną ponownie replikowane do wszystkich klastrów podrzędnych.

Po zakończeniu tego procesu zarówno zaznaczona belka ostrzegawcza węzła, jak i lista problemów, znajdująca się do tej pory po prawej stronie, znikną – oznacza to, że wszystkie węzły działają zgodnie z planem.

Teraz możesz już samodzielnie kontynuować odkrywanie rozwiązań Skalowalnego Klastra MySQL z Równoważeniem Obciążenia (Scalable MySQL Cluster with Load Balancing) oferowanego przez UniCloud. Twórz dokładnie takie bazy danych, jakich potrzebujesz. Pakiet jest już dostępny dla wszystkim użytkowników w części Klastry na Liście Gotowych Aplikacji.