Pro přidání nástroje pro vyrovnávání zatížení mezi vaši aplikaci a databázi existují různé důvody. Pokud máte vysoký provoz (a chcete vyvážit provoz mezi různými databázovými uzly) nebo chcete použít nástroj pro vyrovnávání zatížení jako jeden koncový bod (takže v případě převzetí služeb při selhání si tento nástroj pro vyrovnávání zatížení poradí s tímto problémem a odešle provoz do k dispozici/zdravý uzel.) Může se také stát, že chcete používat různé porty pro zápis a čtení dat z databáze.
Ve všech těchto případech pro vás bude užitečný nástroj pro vyrovnávání zatížení, a pokud máte cluster MariaDB, jednou z možností je použití MaxScale, což je proxy databáze pro databáze MariaDB.
V tomto blogu vám ukážeme, jak jej nainstalovat a nakonfigurovat ručně a jak vám může ClusterControl pomoci s tímto úkolem. V tomto příkladu použijeme replikační cluster MariaDB s 1 hlavním a 1 podřízeným uzlem a operačním systémem CentOS8.
Jak nainstalovat MaxScale
Předpokládáme, že máte spuštěnou a spuštěnou databázi MariaDB a také počítač (virtuální nebo fyzický) k instalaci MaxScale. Doporučujeme použít jiného hostitele, takže v případě selhání hlavního serveru může MaxScale přejít při selhání na podřízený uzel, jinak nemůže MaxScale podniknout žádnou akci, pokud dojde k výpadku serveru, na kterém běží.
Existují různé způsoby instalace MaxScale, v tomto případě použijeme úložiště MariaDB. Chcete-li jej přidat na server MaxScale, musíte spustit:
$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
[info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo
[info] Adding trusted package signing keys...
[info] Successfully added trusted package signing keys
Nyní nainstalujte balíček MaxScale:
$ yum install maxscale
Nyní máte nainstalovaný uzel MaxScale, před spuštěním jej musíte nakonfigurovat.
Jak nakonfigurovat MaxScale
Protože MaxScale provádí úkoly, jako je autentizace, monitorování a další, musíte vytvořit uživatele databáze s některými specifickými oprávněními:
MariaDB [(none)]> CREATE USER 'maxscaleuser'@'%' IDENTIFIED BY 'maxscalepassword';
MariaDB [(none)]> GRANT SELECT ON mysql.user TO 'maxscaleuser'@'%';
MariaDB [(none)]> GRANT SELECT ON mysql.db TO 'maxscaleuser'@'%';
MariaDB [(none)]> GRANT SELECT ON mysql.tables_priv TO 'maxscaleuser'@'%';
MariaDB [(none)]> GRANT SELECT ON mysql.roles_mapping TO 'maxscaleuser'@'%';
MariaDB [(none)]> GRANT SHOW DATABASES ON *.* TO 'maxscaleuser'@'%';
MariaDB [(none)]> GRANT REPLICATION CLIENT on *.* to 'maxscaleuser'@'%';
Mějte na paměti, že MariaDB verze 10.2.2 až 10.2.10 také vyžadují:
MariaDB [(none)]> GRANT SELECT ON mysql.* TO 'maxscaleuser'@'%';
Nyní máte připraveného uživatele databáze, podívejme se na konfigurační soubory. Když nainstalujete MaxScale, vytvoří se soubor maxscale.cnf v /etc/. Existuje několik proměnných a různé způsoby konfigurace, takže se podívejme na příklad:
$ cat /etc/maxscale.cnf
# Global parameters
[maxscale]
threads = auto
log_augmentation = 1
ms_timestamp = 1
syslog = 1
# Server definitions
[server1]
type=server
address=192.168.100.126
port=3306
protocol=MariaDBBackend
[server2]
type=server
address=192.168.100.127
port=3306
protocol=MariaDBBackend
# Monitor for the servers
[MariaDB-Monitor]
type=monitor
module=mariadbmon
servers=server1,server2
user=maxscaleuser
password=maxscalepassword
monitor_interval=2000
# Service definitions
[Read-Only-Service]
type=service
router=readconnroute
servers=server2
user=maxscaleuser
password=maxscalepassword
router_options=slave
[Read-Write-Service]
type=service
router=readwritesplit
servers=server1
user=maxscaleuser
password=maxscalepassword
# Listener definitions for the services
[Read-Only-Listener]
type=listener
service=Read-Only-Service
protocol=MariaDBClient
port=4008
[Read-Write-Listener]
type=listener
service=Read-Write-Service
protocol=MariaDBClient
port=4006
V této konfiguraci máme 2 databázové uzly, 192.168.100.126 (Master) a 192.168.100.127 (Slave), jak můžete vidět v sekci Definice serverů.
Máme také 2 různé služby, jednu pouze pro čtení, kde je podřízený uzel, a další pro čtení a zápis, kde je hlavní uzel.
Konečně máme 2 posluchače, jeden pro každou službu. Posluchač pouze pro čtení, který naslouchá na portu 4008, a posluchač pro čtení a zápis, naslouchající na portu 4006.
Toto je základní konfigurační soubor. Pokud potřebujete něco konkrétnějšího, můžete postupovat podle oficiální dokumentace MariaDB.
Nyní jste připraveni to spustit, takže stačí spustit:
$ systemctl start maxscale.service
A zkontrolujte:
$ maxctrl list services
ff ![](http://www.sqldat.com/article/uploadfiles/202205/2022051214064467.png)
$ maxctrl list servers
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214064535.png)
Seznam příkazů maxctrl naleznete zde nebo můžete dokonce použít maxadmin pro jeho správu.
Nyní otestujeme připojení. Za tímto účelem se můžete pokusit o přístup k databázi pomocí adresy IP MaxScale a portu, který chcete otestovat. V našem případě by měl být provoz na portu 4006 odeslán na server1 a provoz na portu 4008 na server2.
$ mysql -h 192.168.100.128 -umaxscaleuser -pmaxscalepassword -P4006 -e 'SELECT @@hostname;'
+------------+
| @@hostname |
+------------+
| server1 |
+------------+
$ mysql -h 192.168.100.128 -umaxscaleuser -pmaxscalepassword -P4008 -e 'SELECT @@hostname;'
+------------+
| @@hostname |
+------------+
| server2 |
+------------+
Funguje to!
Jak nasadit MaxScale s ClusterControl
Podívejme se nyní, jak můžete pomocí ClusterControl tento úkol zjednodušit. Za tímto účelem budeme předpokládat, že máte svůj cluster MariaDB přidán do ClusterControl.
Přejděte do ClusterControl -> Vyberte cluster MariaDB -> Akce clusteru -> Přidat Load Balancer -> MaxScale.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214064669.png)
Zde můžete nasadit nový uzel MaxScale nebo také importovat stávající jeden. Pokud jej nasazujete, musíte přidat IP adresu nebo název hostitele, pověření správce a uživatele MaxScale, počet vláken a porty (pouze pro zápis a pro čtení). Můžete také určit, který databázový uzel chcete přidat do konfigurace MaxScale.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214064649.png)
Úlohu můžete sledovat v sekci ClusterControl Activity. Po dokončení budete mít ve svém clusteru MariaDB nový uzel MaxScale.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214064712.png)
A spouštění příkazů MaxScale z uživatelského rozhraní ClusterControl bez nutnosti přístupu k server přes SSH.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214064868.png)
Vypadá to snadněji než ruční nasazení, že?
Závěr
Mít Load Balancer je dobré řešení, pokud chcete vyvážit nebo rozdělit svůj provoz nebo dokonce pro akce převzetí služeb při selhání, a MaxScale jako produkt MariaDB je dobrou volbou pro databáze MariaDB.
Instalace je snadná, ale konfigurace a použití může být obtížné, pokud je to pro vás něco nového. V takovém případě můžete ClusterControl použít k nasazení, konfiguraci a správě jednodušším způsobem.