sql >> Database >  >> RDS >> MariaDB

Inleiding tot MaxScale-beheer met maxctrl voor MariaDB Cluster

MariaDB Cluster bestaat uit MariaDB Server met Galera Cluster en MariaDB MaxScale. Als multi-master replicatie-oplossing kan elke MariaDB-server met Galera Cluster als primaire server werken. Dit betekent dat wijzigingen die aan elk knooppunt in het cluster zijn aangebracht, worden gerepliceerd naar elk ander knooppunt in het cluster, met behulp van op certificering gebaseerde replicatie en globale volgorde van transacties voor de InnoDB-opslagengine. MariaDB MaxScale is een databaseproxy die bovenop de MariaDB-server zit en de hoge beschikbaarheid, schaalbaarheid en beveiliging vergroot en tegelijkertijd de applicatie-ontwikkeling vereenvoudigt door deze los te koppelen van de onderliggende database-infrastructuur.

In deze blogserie gaan we kijken naar de MaxScale-administratie met maxctrl voor ons MariaDB-cluster. In deze eerste aflevering van de blogserie gaan we de inleiding en enkele basisprincipes van het maxctrl-opdrachtregelhulpprogramma behandelen. Onze setup bestaat uit één MaxScale-server en een MariaDB 10.4 met 3 knooppunten met Galera 4, zoals geïllustreerd in het volgende diagram:

Onze MariaDB-cluster is geïmplementeerd en beheerd door ClusterControl, terwijl onze MaxScale-host een nieuwe host in het cluster en is niet geïmplementeerd door ClusterControl voor deze oplossing.

MaxScale-installatie

De installatie van MaxScale is vrij eenvoudig. Kies het juiste besturingssysteem op de MariaDB-downloadpagina voor MaxScale en download het. Het volgende voorbeeld laat zien hoe men MaxScale op een CentOS 8-host zou installeren:

$ 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

Nadat de daemon is gestart, worden MaxScale-componenten standaard uitgevoerd op de volgende poorten:

  • 0.0.0.0:4006 - Standaard read-write splitting listener.
  • 0.0.0.0:4008 - Standaard round-robin luisteraar.
  • 127.0.0.1:8989 - MaxScale Rest API.

De bovenstaande poorten zijn veranderlijk. Het is gebruikelijk dat een stand-alone MaxScale-server in productie wordt uitgevoerd met de lees/schrijf-splitsing op poort 3306 en round-robin op poort 3307. Deze configuratie gaan we in deze blogpost implementeren.

Belangrijke bestanden en directorystructuur

Zodra het pakket is geïnstalleerd, krijgt u de volgende hulpprogramma's/programma's:

  • maxscale - De MaxScale zelf.
  • maxctrl - De opdrachtregelbeheerclient voor MaxScale die de MaxScale REST API gebruikt voor communicatie.
  • maxadmin - De verouderde MaxScale beheer- en monitorclient. Gebruik in plaats daarvan maxctrl.
  • maxkeys - Dit hulpprogramma schrijft in het bestand .secrets, in de opgegeven map, de AES-coderingssleutel en init-vector die wordt gebruikt door het hulpprogramma maxpasswd, bij het coderen van wachtwoorden die worden gebruikt in het MariaDB MaxScale-configuratiebestand.
  • maxpasswd - Dit hulpprogramma maakt een gecodeerd wachtwoord aan met behulp van een .secrets-bestand dat eerder is gemaakt met maxkeys.

MaxScale laadt alle configuratie-opties vanaf de volgende locaties, in de specifieke volgorde:

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

Raadpleeg de MaxScale-configuratiegids voor meer informatie over de MaxScale-configuratie.

Zodra MaxScale is geïnitialiseerd, zijn de standaardbestanden en directorystructuren:

  • MaxScale-gegevensmap:/var/lib/maxscale
  • MaxScale PID-bestand:/var/run/maxscale/maxscale.pid
  • MaxScale-logbestand:/var/log/maxscale/maxscale.log
  • MaxScale-documentatie:/usr/share/maxscale

MaxCtrl - De CLI

Eenmaal gestart, kunnen we de MaxCtrl-opdrachtregelclient gebruiken om de MaxScale te beheren met behulp van de MaxScale REST API die luistert op poort 8989 op de localhost. De standaardreferenties voor de REST API zijn "admin:mariadb". De gebruikers die door de REST API worden gebruikt, zijn dezelfde die worden gebruikt door de MaxAdmin-netwerkinterface. Dit betekent dat alle gebruikers die voor de MaxAdmin-netwerkinterface zijn gemaakt, moeten werken met de MaxScale REST API en MaxCtrl.

We kunnen het maxctrl-hulpprogramma in interactieve modus gebruiken, vergelijkbaar met de mysql-client. Typ gewoon "maxctrl" en u komt in de interactieve modus (waar de prompt veranderde van de shell-prompt in maxctrl-prompt), net zoals in de volgende schermafbeelding:

Als alternatief kunnen we hetzelfde commando rechtstreeks in de shell-prompt uitvoeren, bijvoorbeeld:

MaxCtrl-opdrachtopties zijn afhankelijk van de MaxScale-versie die erbij wordt geleverd. Op het moment van schrijven is de MaxScale-versie 2.4 en moet u deze documentatie raadplegen voor een volledige lijst met opdrachten. MaxCtrl maakt gebruik van de MaxScale REST API-interface, die hier in detail wordt uitgelegd.

MariaDB-servers toevoegen aan MaxScale

Als we onze MaxScale voor het eerst starten, genereert het een configuratiebestand op /etc/maxscale.cnf met enkele standaardparameters en voorbeelden. We gaan deze configuratie niet gebruiken en in plaats daarvan maken we onze eigen configuratie. Maak een back-up van dit bestand omdat we het later willen legen:

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

Start de MaxScale opnieuw om alles opnieuw te beginnen:

$ systemctl restart maxscale

De term "server" in MaxScale betekent in feite de backend MariaDB-server, zoals in dit geval alle 3 knooppunten van ons MariaDB-cluster. Gebruik de volgende opdrachten om alle 3 MariaDB Cluster-servers toe te voegen aan MaxScale-runtime:

$ 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

Gebruik het list-commando om de toegevoegde servers te verifiëren:

$ maxctrl list servers

En u zou de volgende uitvoer moeten zien:

Bewaking toevoegen aan MaxScale

Het volgende is het configureren van de bewakingsservice voor MaxScale-gebruik. MaxScale ondersteunt een aantal monitoringmodules, afhankelijk van het databasetype, namelijk:

  • MariaDB Monitor
  • Galera Monitor
  • Clustrix Monitor
  • Kolomwinkelmonitor
  • Aurora Monitor

In deze opstelling gaan we de Galera Monitor-module genaamd "galeramon" gebruiken. Ten eerste moeten we een databasegebruiker maken die door MaxScale op een van de servers in het MariaDB-cluster kan worden gebruikt. In dit voorbeeld hebben we mariadbgalera1, 192.168.0.221 gekozen om de volgende instructies uit te voeren:

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

Waar 192.168.0.220 het IP-adres van onze MaxScale-server is.

Het is niet veilig om het gebruikerswachtwoord maxscale_monitor in platte tekst op te slaan. Het wordt ten zeerste aanbevolen om het wachtwoord in plaats daarvan gecodeerd op te slaan. Om dit te bereiken, moeten we speciaal voor deze MaxScale-instantie een geheime sleutel genereren. Gebruik het hulpprogramma "maxkeys" om de geheime sleutel te genereren die door MaxScale zal worden gebruikt voor codering en decodering:

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

Nu kunnen we het hulpprogramma maxpasswd gebruiken om de versleutelde waarde van ons wachtwoord te genereren:

$ maxpasswd MaXSc4LeP4ss
D91DB5813F7C815B351CCF7D7F1ED6DB

We zullen in plaats daarvan altijd de bovenstaande waarde gebruiken bij het opslaan van onze controle-gebruikersreferenties in MaxScale. Nu zijn we klaar om de Galera-monitoringservice toe te voegen aan MaxScale met maxctrl:

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

Verifieer met het volgende commando:

Services toevoegen aan MaxScale

Service is eigenlijk hoe MaxScale de query's naar de backend-servers moet leiden. MaxScale 2.4 ondersteunt meerdere services (of routers), namelijk:

  • Avrorouter
  • Binlogrouter
  • Kat
  • CLI
  • HintRouter
  • Readconnroute
  • Readwritesplit
  • SchemaRouter
  • SmartRouter

Voor ons MariaDB-cluster hebben we slechts twee routeringsservices nodig:lezen en schrijven split en round-robin load balancing. Voor lees-schrijfsplitsing worden schrijfquery's doorgestuurd naar slechts één MariaDB-server totdat de server onbereikbaar is, waar MaxScale de schrijfquery's vervolgens doorstuurt naar het volgende beschikbare knooppunt. Voor round-robin-balancering worden de query's op een round-robin-manier doorgestuurd naar alle backend-knooppunten.

Maak een routeringsservice voor round-robin (of multi-master):

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

Maak een andere routeringsservice voor lezen-schrijven splitsen (of single-master):

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

Verifieer met:

Alle succesvol gemaakte componenten door MaxCtrl zullen een eigen configuratiebestand genereren onder / var/lib/maxscale/maxscale.cnf.d. Op dit moment ziet de map er als volgt uit:

$ 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

Luisteraars toevoegen aan MaxScale

Luisteraars vertegenwoordigen de poorten waarop de service naar inkomende verbindingen zal luisteren. Het kan een poort- of UNIX-socketbestand zijn en het componenttype moet "listener" zijn. Gewoonlijk zijn luisteraars gebonden aan services. In onze opzet gaan we twee listeners maken - Read-Write Listener op poort 3306 en Round-Robin Listener op poort 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

Verifieer met de volgende commando's:

Op dit moment is onze MaxScale nu klaar om de query's te verdelen over ons MariaDB-cluster. Stuur de query's vanuit de toepassingen naar de MaxScale-host op poort 3306, waar de schrijfquery's altijd hetzelfde databaseknooppunt raken, terwijl de leesquery's naar de andere twee knooppunten worden verzonden. Dit wordt ook wel een single-writer-opstelling genoemd. Als u een installatie met meerdere schrijvers wilt gebruiken, waarbij schrijfacties worden doorgestuurd naar alle backend MariaDB-knooppunten op basis van round-robin-balanceringsalgoritmen. U kunt de balans verder verfijnen door prioriteit en gewicht te gebruiken.

Nogmaals, bij het wijzigen van de configuratie-opties via maxctrl, hebben alle succesvol gemaakte componenten hun eigen configuratiebestand in /var/lib/maxscale/maxscale.cnf.d, zoals weergegeven in de volgende uitvoer:

$ 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

De bovenstaande configuratie-opties kunnen direct worden aangepast aan uw behoeften, maar het vereist dat de MaxScale-service opnieuw wordt gestart om de nieuwe wijzigingen te laden. Als u opnieuw wilt beginnen, kunt u alles in deze map wissen en MaxScale opnieuw starten.

In de volgende aflevering zullen we kijken naar de beheer- en bewakingsopdrachten van MaxCtrl voor onze MariaDB-cluster.


  1. 4 functies om de maand van een datum in MariaDB te retourneren

  2. Oracle-reeks maar dan in MS SQL Server

  3. Aantal rijen beïnvloed door een UPDATE in PL/SQL

  4. Android Room-waarschuwing tijdens compileren over kolom in externe sleutel die geen deel uitmaakt van een index. Wat betekent het?