sql >> Databáze >  >> RDS >> MariaDB

Úvod do správy MaxScale Použití maxctrl pro MariaDB Cluster

MariaDB Cluster se skládá ze serveru MariaDB s Galera Cluster a MariaDB MaxScale. Jako řešení replikace s více hlavními servery může jakýkoli server MariaDB s Galera Cluster fungovat jako primární server. To znamená, že změny provedené v libovolném uzlu v klastru se replikují do všech ostatních uzlů v klastru pomocí replikace založené na certifikaci a globálního řazení transakcí pro modul úložiště InnoDB. MariaDB MaxScale je databázový proxy server umístěný nad serverem MariaDB, který rozšiřuje vysokou dostupnost, škálovatelnost a zabezpečení a zároveň zjednodušuje vývoj aplikací tím, že je odděluje od základní databázové infrastruktury.

V této sérii blogů se podíváme na administraci MaxScale pomocí maxctrl pro náš cluster MariaDB. V tomto prvním pokračování série blogů se budeme zabývat úvodem a některými základy nástroje příkazového řádku maxctrl. Naše nastavení se skládá z jednoho serveru MaxScale a 3uzlového MariaDB 10.4 s Galera 4, jak ukazuje následující diagram:

Náš MariaDB Cluster byl nasazen a spravován ClusterControl, zatímco náš hostitel MaxScale je nového hostitele v clusteru a nebyl nasazen ClusterControl pro účely tohoto návodu.

Instalace MaxScale

Instalace MaxScale je docela přímočará. Vyberte správný operační systém na stránce stahování MariaDB pro MaxScale a stáhněte si jej. Následující příklad ukazuje, jak by se dal nainstalovat MaxScale na hostitele 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 spuštění démona budou komponenty MaxScale standardně spuštěny na následujících portech:

  • 0.0.0.0:4006 – Výchozí rozdělovací posluchač pro čtení a zápis.
  • 0.0.0.0:4008 – Výchozí kruhový posluchač.
  • 127.0.0.1:8989 – MaxScale Rest API.

Výše uvedené porty jsou vyměnitelné. Je běžné, že samostatný server MaxScale ve výrobě běží s rozdělením čtení/zápisu na portu 3306 a round-robin na portu 3307. Tuto konfiguraci nasadíme v tomto příspěvku na blogu.

Důležité soubory a struktura adresářů

Jakmile je balíček nainstalován, získáte následující nástroje/programy:

  • maxscale - Samotný MaxScale.
  • maxctrl – Administrativní klient příkazového řádku pro MaxScale, který ke komunikaci používá MaxScale REST API.
  • maxadmin - Zastaralý administrativní a monitorovací klient MaxScale. Místo toho použijte maxctrl.
  • maxkeys - Tento nástroj zapíše do souboru .secrets v zadaném adresáři šifrovací klíč AES a init vektor, který používá nástroj maxpasswd při šifrování hesel používaných v konfiguračním souboru MariaDB MaxScale.
  • maxpasswd – Tento nástroj vytvoří šifrované heslo pomocí souboru .secrets, který byl dříve vytvořen pomocí maxkeys.

MaxScale načte všechny možnosti konfigurace z následujících umístění v konkrétním pořadí:

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

Chcete-li více porozumět konfiguraci MaxScale, podívejte se na Průvodce konfigurací MaxScale.

Jakmile je MaxScale inicializován, výchozí soubory a adresářové struktury jsou:

  • Datový adresář MaxScale:/var/lib/maxscale
  • Soubor PID MaxScale:/var/run/maxscale/maxscale.pid
  • Soubor protokolu MaxScale:/var/log/maxscale/maxscale.log
  • Dokumentace MaxScale:/usr/share/maxscale

MaxCtrl – CLI

Po spuštění můžeme použít klienta příkazového řádku MaxCtrl ke správě MaxScale pomocí MaxScale REST API naslouchání na portu 8989 na localhost. Výchozí přihlašovací údaje pro REST API jsou „admin:mariadb“. Uživatelé, kteří používají REST API, jsou stejní jako uživatelé síťového rozhraní MaxAdmin. To znamená, že všichni uživatelé vytvoření pro síťové rozhraní MaxAdmin by měli pracovat s MaxScale REST API a MaxCtrl.

Můžeme použít utilitu maxctrl v interaktivním režimu, podobně jako mysql klient. Stačí napsat „maxctrl“ a dostanete se do interaktivního režimu (kde se výzva změnila z výzvy shellu na výzvu maxctrl), stejně jako následující snímek obrazovky:

Případně můžeme stejný příkaz provést přímo v příkazovém řádku, například:

Možnosti příkazu MaxCtrl závisí na verzi MaxScale, která je s ním dodávána. V době psaní tohoto článku je MaxScale verze 2.4 a měli byste se podívat do této dokumentace, kde najdete úplný seznam příkazů. MaxCtrl využívá rozhraní MaxScale REST API, které zde podrobně vysvětluje.

Přidání serverů MariaDB do MaxScale

Když poprvé spustíme náš MaxScale, vygeneruje konfigurační soubor na /etc/maxscale.cnf s některými výchozími parametry a příklady. Tuto konfiguraci nebudeme používat a místo toho vytvoříme vlastní. Vytvořte zálohu tohoto souboru, protože jej chceme později vyprázdnit:

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

Restartujte MaxScale, aby vše začalo znovu:

$ systemctl restart maxscale

Pojem "server" v MaxScale v podstatě znamená backendový server MariaDB, jako v tomto případě všechny 3 uzly našeho clusteru MariaDB. Chcete-li přidat všechny 3 servery MariaDB Cluster do běhového prostředí MaxScale, použijte následující příkazy:

$ 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

Pro ověření přidaných serverů použijte příkaz list:

$ maxctrl list servers

A měli byste vidět následující výstup:

Přidání monitorování do MaxScale

Další věcí je konfigurace monitorovací služby pro použití MaxScale. MaxScale podporuje řadu monitorovacích modulů v závislosti na typu databáze, konkrétně:

  • MariaDB Monitor
  • Galera Monitor
  • Clustrix Monitor
  • ColumnStore Monitor
  • Aurora Monitor

V tomto nastavení použijeme modul Galera Monitor s názvem „galeramon“. Nejprve musíme vytvořit databázového uživatele, kterého bude MaxScale používat na jednom ze serverů v clusteru MariaDB. V tomto příkladu jsme vybrali mariadbgalera1, 192.168.0.221 ke spuštění následujících příkazů:

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';

Kde 192.168.0.220 je adresa IP našeho serveru MaxScale.

Není bezpečné ukládat uživatelské heslo maxscale_monitor v prostém textu. Důrazně se doporučuje uložit heslo v zašifrovaném formátu. Abychom toho dosáhli, musíme vygenerovat tajný klíč speciálně pro tuto instanci MaxScale. Pomocí nástroje „maxkeys“ vygenerujte tajný klíč, který bude MaxScale používat pro účely šifrování a dešifrování:

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

Nyní můžeme pomocí nástroje maxpasswd vygenerovat zašifrovanou hodnotu našeho hesla:

$ maxpasswd MaXSc4LeP4ss
D91DB5813F7C815B351CCF7D7F1ED6DB

Při ukládání přihlašovacích údajů monitorovacího uživatele do MaxScale budeme místo toho vždy používat výše uvedenou hodnotu. Nyní jsme připraveni přidat monitorovací službu Galera do MaxScale pomocí maxctrl:

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

Ověřte pomocí následujícího příkazu:

Přidání služeb do MaxScale

Služba je v podstatě způsob, jakým by měl MaxScale směrovat dotazy na backendové servery. MaxScale 2.4 podporuje více služeb (nebo směrovačů), konkrétně:

  • Avrorouter
  • Binlogrouter
  • Kočka
  • CLI
  • HintRouter
  • Readconnroute
  • Rozdělení pro čtení a zápis
  • SchemaRouter
  • SmartRouter

Pro náš MariaDB Cluster potřebujeme pouze dvě směrovací služby – rozdělení pro čtení a zápis a vyrovnávání zátěže mezi sebou. Pro rozdělení čtení a zápisu budou dotazy pro zápis předávány pouze jedinému serveru MariaDB, dokud nebude server nedostupný, kde pak MaxScale předá dotazy pro zápis dalšímu dostupnému uzlu. Pro kruhové vyvažování budou dotazy předávány všem backendovým uzlům způsobem kruhového vyrovnávání.

Vytvořte směrovací službu pro round-robin (nebo multi-master):

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

Vytvořte další službu směrování pro rozdělení čtení a zápisu (nebo single-master):

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

Ověřit pomocí:

Všechny úspěšně vytvořené komponenty pomocí MaxCtrl vygenerují svůj vlastní konfigurační soubor pod / var/lib/maxscale/maxscale.cnf.d. V tomto okamžiku vypadá adresář takto:

$ 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

Přidání posluchačů do MaxScale

Posluchače představují porty, na kterých bude služba naslouchat příchozím připojením. Může to být soubor portu nebo soketu UNIX a typ komponenty musí být „posluchač“. Běžně jsou posluchači vázáni na služby. V našem nastavení vytvoříme dva posluchače – Read-Write Listener na portu 3306 a Round-Robin Listener na portu 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

Ověřte pomocí následujících příkazů:

V tuto chvíli je naše MaxScale nyní připravena vyrovnat dotazy na náš MariaDB Cluster. Z aplikací odešlete dotazy na hostitele MaxScale na portu 3306, kde dotazy pro zápis vždy zasáhnou stejný databázový uzel, zatímco dotazy pro čtení budou odeslány do ostatních dvou uzlů. Toto je také známé jako nastavení jednoho zapisovače. Pokud byste chtěli použít nastavení pro více zapisovačů, kde budou zápisy předávány všem backendovým uzlům MariaDB na základě algoritmů pro vyvažování typu round-robin. Vyvážení můžete dále doladit pomocí priority a hmotnosti.

Opět platí, že při změně konfiguračních možností pomocí maxctrl budou mít všechny úspěšně vytvořené komponenty svůj vlastní konfigurační soubor uvnitř /var/lib/maxscale/maxscale.cnf.d, jak ukazuje následující výstup:

$ 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

Výše uvedené možnosti konfigurace lze přímo upravit tak, aby dále vyhovovaly vašim potřebám, ale pro načtení nových změn vyžaduje restartování služby MaxScale. Pokud byste chtěli začít znovu, můžete vymazat vše v tomto adresáři a restartovat MaxScale.

V příští epizodě se podíváme na příkazy MaxCtrl pro správu a monitorování pro náš cluster MariaDB.


  1. C#:Objekt nelze přetypovat z DbNull na jiné typy

  2. Cheat sheet formátu data MySQL

  3. Zkontrolujte, zda tabulka existuje, a pokud neexistuje, vytvořte ji v SQL Server 2008

  4. Jak povolit TimescaleDB na existující databázi PostgreSQL