MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Wprowadzenie do administracji MaxScale Korzystanie z maxctrl dla klastra MariaDB

Klaster MariaDB składa się z serwera MariaDB z klastrem Galera i MariaDB MaxScale. Jako rozwiązanie replikacji z wieloma wzorcami każdy serwer MariaDB z klastrem Galera może działać jako serwer podstawowy. Oznacza to, że zmiany wprowadzone w dowolnym węźle w klastrze są replikowane w każdym innym węźle w klastrze, wykorzystując replikację opartą na certyfikacji i globalną kolejność transakcji dla silnika pamięci masowej InnoDB. MariaDB MaxScale to serwer proxy bazy danych umieszczony na szczycie serwera MariaDB Server, który zwiększa wysoką dostępność, skalowalność i bezpieczeństwo, jednocześnie upraszczając tworzenie aplikacji poprzez oddzielenie jej od podstawowej infrastruktury bazy danych.

W tej serii blogów przyjrzymy się administracji MaxScale przy użyciu maxctrl dla naszego klastra MariaDB. W pierwszej części serii blogów omówimy wprowadzenie i podstawowe informacje o narzędziu wiersza poleceń maxctrl. Nasza konfiguracja składa się z jednego serwera MaxScale i 3-węzłowego MariaDB 10.4 z Galera 4, jak pokazano na poniższym diagramie:

Nasz klaster MariaDB został wdrożony i zarządzany przez ClusterControl, podczas gdy nasz host MaxScale jest nowy host w klastrze i nie został wdrożony przez ClusterControl na potrzeby tego przewodnika.

Instalacja MaxScale

Instalacja MaxScale jest dość prosta. Wybierz odpowiedni system operacyjny ze strony pobierania MariaDB dla MaxScale i pobierz go. Poniższy przykład pokazuje, jak zainstalować MaxScale na hoście CentOS 8:

$ wget https://dlm.mariadb.com/1067156/MaxScale/2.4.10/centos/8/x86_64/maxscale-2.4.10-1.centos.8.x86_64.rpm
$ yum localinstall maxscale-2.4.10-1.centos.8.x86_64.rpm
$ systemctl enable maxscale
$ systemctl start maxscale

Po uruchomieniu demona komponenty MaxScale będą domyślnie uruchomione na następujących portach:

  • 0.0.0.0:4006 — Domyślny odbiornik dzielenia odczytu i zapisu.
  • 0.0.0.0:4008 — Domyślny odbiornik round-robin.
  • 127.0.0.1:8989 - MaxScale Rest API.

Powyższe porty są zmienne. Często zdarza się, że samodzielny serwer MaxScale w środowisku produkcyjnym działa z podziałem odczytu/zapisu na porcie 3306 i round-robin na porcie 3307. Ta konfiguracja jest tym, co zamierzamy wdrożyć w tym poście na blogu.

Ważne pliki i struktura katalogów

Po zainstalowaniu pakietu otrzymasz następujące narzędzia/programy:

  • maxscale - Sama MaxScale.
  • maxctrl - Klient administracyjny wiersza poleceń dla MaxScale, który używa interfejsu API MaxScale REST do komunikacji.
  • maxadmin - Przestarzały klient administracyjny i monitorujący MaxScale. Zamiast tego użyj maxctrl.
  • maxkeys — To narzędzie zapisuje w pliku .secrets, w określonym katalogu, klucz szyfrowania AES i wektor init, który jest używany przez narzędzie maxpasswd podczas szyfrowania haseł używanych w pliku konfiguracyjnym MariaDB MaxScale.
  • maxpasswd - To narzędzie tworzy zaszyfrowane hasło za pomocą pliku .secrets, który został wcześniej utworzony przy użyciu maxkeys.

MaxScale załaduje wszystkie opcje konfiguracyjne z następujących lokalizacji, w określonej kolejności:

  1. /etc/maxscale.cnf
  2. /etc/maxscale.cnf.d/*.cnf
  3. /var/lib/maxscale/maxscale.cnf.d/*.cnf

Aby lepiej zrozumieć konfigurację MaxScale, zapoznaj się z przewodnikiem po konfiguracji MaxScale.

Po zainicjowaniu MaxScale domyślne pliki i struktury katalogów to:

  • Katalog danych MaxScale:/var/lib/maxscale
  • Plik MaxScale PID:/var/run/maxscale/maxscale.pid
  • Plik dziennika MaxScale:/var/log/maxscale/maxscale.log
  • Dokumentacja MaxScale:/usr/share/maxscale

MaxCtrl — interfejs wiersza polecenia

Po uruchomieniu możemy użyć klienta wiersza poleceń MaxCtrl do administrowania MaxScale przy użyciu MaxScale REST API nasłuchuje na porcie 8989 na hoście lokalnym. Domyślne poświadczenia interfejsu API REST to „admin:mariadb”. Użytkownicy wykorzystywani przez REST API są tymi samymi użytkownikami, których używa interfejs sieciowy MaxAdmin. Oznacza to, że wszyscy użytkownicy stworzeni dla interfejsu sieciowego MaxAdmin powinni pracować z MaxScale REST API i MaxCtrl.

Możemy użyć narzędzia maxctrl w trybie interaktywnym, podobnym do klienta mysql. Po prostu wpisz "maxctrl" i przejdziesz do trybu interaktywnego (gdzie znak zachęty zmienił się z zachęty powłoki na zachętę maxctrl), tak jak na poniższym zrzucie ekranu:

Alternatywnie możemy wykonać to samo polecenie bezpośrednio w wierszu poleceń powłoki, na przykład:

Opcje polecenia MaxCtrl zależą od wersji MaxScale, która jest z nim dołączona. W chwili pisania tego tekstu wersja MaxScale to 2.4 i powinieneś zajrzeć do tej dokumentacji, aby uzyskać pełną listę poleceń. MaxCtrl wykorzystuje interfejs MaxScale REST API, który szczegółowo wyjaśniono tutaj.

Dodawanie serwerów MariaDB do MaxScale

Kiedy po raz pierwszy uruchomimy naszą MaxScale, wygeneruje ona plik konfiguracyjny w /etc/maxscale.cnf z kilkoma domyślnymi parametrami i przykładami. Nie będziemy używać tej konfiguracji i zamiast tego stworzymy własną. Utwórz kopię zapasową tego pliku, ponieważ chcemy go później opróżnić:

$ mv /etc/maxscale.cnf /etc/maxscale.cnf.bak
$ cat /dev/null > /etc/maxscale.cnf # empty the file

Uruchom ponownie MaxScale, aby zacząć wszystko od nowa:

$ systemctl restart maxscale

Termin „serwer” w MaxScale zasadniczo oznacza serwer zaplecza MariaDB, tak jak w tym przypadku wszystkie 3 węzły naszego klastra MariaDB. Aby dodać wszystkie 3 serwery MariaDB Cluster do środowiska wykonawczego MaxScale, użyj następujących poleceń:

$ maxctrl create server mariadbgalera1 192.168.0.221 3306
$ maxctrl create server mariadbgalera2 192.168.0.222 3306
$ maxctrl create server mariadbgalera3 192.168.0.222 3306

Aby zweryfikować dodane serwery, użyj polecenia list:

$ maxctrl list servers

Powinieneś zobaczyć następujące dane wyjściowe:

Dodawanie monitorowania do MaxScale

Następną rzeczą jest skonfigurowanie usługi monitorowania do użycia MaxScale. MaxScale obsługuje wiele modułów monitorujących w zależności od typu bazy danych, a mianowicie:

  • Monitor MariaDB
  • Monitor Galery
  • Monitor klastrowy
  • Monitor kolumnowy
  • Monitor zorzy

W tej konfiguracji użyjemy modułu Galera Monitor o nazwie „galeramon”. Najpierw musimy utworzyć użytkownika bazy danych, który będzie używany przez MaxScale na jednym z serwerów w Klastrze MariaDB. W tym przykładzie wybraliśmy mariadbgalera1, 192.168.0.221 do uruchomienia następujących instrukcji:

MariaDB> CREATE USER [email protected]'192.168.0.220' IDENTIFIED BY 'MaXSc4LeP4ss';
MariaDB> GRANT SELECT ON mysql.* TO 'maxscale_monitor'@'192.168.0.220';
MariaDB> GRANT SHOW DATABASES ON *.* TO 'maxscale_monitor'@'192.168.0.220';

Gdzie 192.168.0.220 to adres IP naszego serwera MaxScale.

Przechowywanie hasła użytkownika maxscale_monitor w postaci zwykłego tekstu nie jest bezpieczne. Zdecydowanie zaleca się przechowywanie hasła w postaci zaszyfrowanej. Aby to osiągnąć, musimy wygenerować tajny klucz specjalnie dla tej instancji MaxScale. Użyj narzędzia „maxkeys”, aby wygenerować tajny klucz, który będzie używany przez MaxScale do celów szyfrowania i deszyfrowania:

$ maxkeys
Generating .secrets file in /var/lib/maxscale.

Teraz możemy użyć narzędzia maxpasswd do wygenerowania zaszyfrowanej wartości naszego hasła:

$ maxpasswd MaXSc4LeP4ss
D91DB5813F7C815B351CCF7D7F1ED6DB

Zawsze użyjemy powyższej wartości podczas przechowywania danych uwierzytelniających użytkownika monitorującego w MaxScale. Teraz jesteśmy gotowi do dodania usługi monitorowania Galera do MaxScale za pomocą maxctrl:

maxctrl> create monitor galera_monitor galeramon servers=mariadbgalera1,mariadbgalera2,mariadbgalera3 user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB

Zweryfikuj za pomocą następującego polecenia:

Dodawanie usług do MaxScale

Usługa to zasadniczo sposób, w jaki MaxScale powinien kierować zapytania do serwerów zaplecza. MaxScale 2.4 obsługuje wiele usług (lub routerów), a mianowicie:

  • Avrorouter
  • Binlogrouter
  • Kot
  • CLI
  • WskazówkaRouter
  • Readconnroute
  • Podział odczytu i zapisu
  • SchemaRouter
  • SmartRouter

W przypadku naszego klastra MariaDB potrzebujemy tylko dwóch usług routingu — podziału odczytu i zapisu oraz równoważenia obciążenia w trybie round-robin. W przypadku dzielenia odczytu i zapisu zapytania zapisu będą przekazywane tylko do jednego serwera MariaDB, dopóki serwer nie będzie nieosiągalny, gdzie MaxScale przekaże następnie zapytania zapisu do następnego dostępnego węzła. W przypadku równoważenia okrężnego zapytania będą przekazywane do wszystkich węzłów zaplecza w sposób okrężny.

Utwórz usługę routingu dla round-robin (lub multi-master):

maxctrl> create service Round-Robin-Service readconnroute user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB --servers mariadbgalera1 mariadbgalera2 mariadbgalera3

Utwórz inną usługę routingu dla dzielenia odczytu i zapisu (lub pojedynczego wzorca):

maxctrl> create service Read-Write-Service readwritesplit user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB --servers mariadbgalera1 mariadbgalera2 mariadbgalera3

Weryfikuj za pomocą:

Wszystkie pomyślnie utworzone komponenty przez MaxCtrl wygenerują swój własny plik konfiguracyjny w / var/lib/maxscale/maxscale.cnf.d. W tym momencie katalog wygląda tak:

$ ls -l /var/lib/maxscale/maxscale.cnf.d
total 24
-rw-r--r--. 1 maxscale maxscale  532 Jul  5 13:18 galera_monitor.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera1.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera2.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:56 mariadbgalera3.cnf
-rw-r--r--. 1 maxscale maxscale 1128 Jul  5 16:01 Read-Write-Service.cnf
-rw-r--r--. 1 maxscale maxscale  477 Jul  5 16:00 Round-Robin-Service.cnf

Dodawanie słuchaczy do MaxScale

Odbiorniki reprezentują porty, na których usługa będzie nasłuchiwać połączeń przychodzących. Może to być port lub plik gniazda UNIX, a typem komponentu musi być „nasłuchiwanie”. Zazwyczaj słuchacze są związani z usługami. W naszej konfiguracji utworzymy dwa odbiorniki — odbiornik odczytu i zapisu na porcie 3306 i odbiornik typu Round-Robin na porcie 3307:

maxctrl> create listener Read-Write-Service Read-Write-Listener 3306 --interface=0.0.0.0 --authenticator=MariaDBAuth
maxctrl> create listener Round-Robin-Service Round-Robin-Listener 3307 --interface=0.0.0.0 --authenticator=MariaDBAuth

Zweryfikuj za pomocą następujących poleceń:

W tym momencie nasz MaxScale jest gotowy do równoważenia obciążenia zapytań do nasz Klaster MariaDB. Z aplikacji wyślij zapytania do hosta MaxScale na porcie 3306, gdzie zapytania dotyczące zapisu zawsze trafią do tego samego węzła bazy danych, podczas gdy zapytania dotyczące odczytu zostaną wysłane do pozostałych dwóch węzłów. Jest to również znane jako konfiguracja z jednym zapisem. Jeśli chcesz użyć konfiguracji multi-writer, w której zapisy będą przekazywane do wszystkich węzłów zaplecza MariaDB w oparciu o algorytmy równoważenia round-robin. Możesz dalej dostroić wyważenie, używając priorytetu i wagi.

Ponownie, podczas zmiany opcji konfiguracyjnych za pomocą maxctrl, wszystkie pomyślnie utworzone komponenty będą miały swój własny plik konfiguracyjny w /var/lib/maxscale/maxscale.cnf.d, jak pokazano na poniższym wyjściu:

$ ls -l /var/lib/maxscale/maxscale.cnf.d
-rw-r--r--. 1 maxscale maxscale  532 Jul  5 13:18 galera_monitor.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera1.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera2.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:56 mariadbgalera3.cnf
-rw-r--r--. 1 maxscale maxscale  259 Jul  5 16:06 Read-Write-Listener.cnf
-rw-r--r--. 1 maxscale maxscale 1128 Jul  5 16:06 Read-Write-Service.cnf
-rw-r--r--. 1 maxscale maxscale  261 Jul  5 16:06 Round-Robin-Listener.cnf
-rw-r--r--. 1 maxscale maxscale  477 Jul  5 16:06 Round-Robin-Service.cnf

Powyższe opcje konfiguracyjne można bezpośrednio modyfikować w celu dalszego dostosowania do własnych potrzeb, ale w celu załadowania nowych zmian wymagane jest ponowne uruchomienie usługi MaxScale. Jeśli chcesz zacząć od nowa, możesz wyczyścić wszystko w tym katalogu i ponownie uruchomić MaxScale.

W następnym odcinku przyjrzymy się poleceniom zarządzania i monitorowania MaxCtrl dla naszego klastra MariaDB.


  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 działa WEIGHT_STRING() w MariaDB

  2. MariaDB DZIEŃ () Wyjaśnione

  3. MariaDB JSON_INSERT() Objaśnienie

  4. Porównanie wysokiej dostępności bazy danych — replikacja MySQL/MariaDB i Oracle Data Guard

  5. Korzystaj z mycli i ucz się MariaDB/MySQL wygodnie w terminalu!