MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

So installieren und konfigurieren Sie MaxScale für MariaDB

Es gibt verschiedene Gründe, einen Load Balancer zwischen Ihrer Anwendung und Ihrer Datenbank hinzuzufügen. Wenn Sie viel Datenverkehr haben (und Sie den Datenverkehr zwischen verschiedenen Datenbankknoten ausgleichen möchten) oder Sie den Load Balancer als einzelnen Endpunkt verwenden möchten (im Falle eines Failovers bewältigt dieser Load Balancer dieses Problem, indem er den Datenverkehr an die verfügbarer/fehlerfreier Knoten.) Es könnte auch sein, dass Sie unterschiedliche Ports zum Schreiben und Lesen von Daten aus Ihrer Datenbank verwenden möchten.

In all diesen Fällen ist ein Load Balancer für Sie nützlich, und wenn Sie einen MariaDB-Cluster haben, ist eine Option dafür die Verwendung von MaxScale, einem Datenbank-Proxy für MariaDB-Datenbanken.

In diesem Blog zeigen wir Ihnen, wie Sie es manuell installieren und konfigurieren und wie ClusterControl Ihnen bei dieser Aufgabe helfen kann. Für dieses Beispiel verwenden wir einen MariaDB-Replikationscluster mit 1 Master- und 1 Slave-Knoten und CentOS8 als Betriebssystem.

So installieren Sie MaxScale

Wir gehen davon aus, dass Sie Ihre MariaDB-Datenbank am Laufen haben und auch einen Computer (virtuell oder physisch), um MaxScale zu installieren. Wir empfehlen Ihnen, einen anderen Host zu verwenden, damit MaxScale im Falle eines Master-Ausfalls auf den Slave-Knoten umschalten kann, andernfalls kann MaxScale keine Maßnahmen ergreifen, wenn der Server, auf dem es ausgeführt wird, ausfällt.

Es gibt verschiedene Möglichkeiten, MaxScale zu installieren, in diesem Fall verwenden wir die MariaDB-Repositories. Um es zum MaxScale-Server hinzuzufügen, müssen Sie Folgendes ausführen:

$ 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

Installieren Sie jetzt das MaxScale-Paket:

$ yum install maxscale

Jetzt haben Sie Ihren MaxScale-Knoten installiert, bevor Sie beginnen, müssen Sie ihn konfigurieren.

Wie man MaxScale konfiguriert

Da MaxScale Aufgaben wie Authentifizierung, Überwachung und mehr ausführt, müssen Sie einen Datenbankbenutzer mit bestimmten Berechtigungen erstellen:

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

Beachten Sie, dass die MariaDB-Versionen 10.2.2 bis 10.2.10 außerdem Folgendes erfordern:

MariaDB [(none)]> GRANT SELECT ON mysql.* TO 'maxscaleuser'@'%';

Jetzt haben Sie den Datenbankbenutzer bereit, sehen wir uns die Konfigurationsdateien an. Bei der Installation von MaxScale wird die Datei maxscale.cnf unter /etc/ angelegt. Es gibt mehrere Variablen und verschiedene Möglichkeiten, sie zu konfigurieren, also sehen wir uns ein Beispiel an:

$ 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

In dieser Konfiguration haben wir 2 Datenbankknoten, 192.168.100.126 (Master) und 192.168.100.127 (Slave), wie Sie im Abschnitt Serverdefinition sehen können.

Wir haben auch 2 verschiedene Dienste, einen für Nur-Lesen, wo es den Slave-Knoten gibt, und einen für Lesen-Schreiben, wo es den Master-Knoten gibt.

Schließlich haben wir 2 Zuhörer, einen für jeden Dienst. Der schreibgeschützte Listener, der Port 4008 überwacht, und der Read-Write-Listener, der Port 4006 überwacht.

Dies ist eine grundlegende Konfigurationsdatei. Wenn Sie etwas Spezifischeres benötigen, können Sie der offiziellen MariaDB-Dokumentation folgen.

Jetzt können Sie es starten, also führen Sie einfach Folgendes aus:

$ systemctl start maxscale.service

Und überprüfe es:

$ maxctrl list services
ff
$ maxctrl list servers

Hier finden Sie eine Liste der maxctrl-Befehle, oder Sie können sogar maxadmin verwenden zu verwalten.

Jetzt testen wir die Verbindung. Dazu können Sie versuchen, über die IP-Adresse von MaxScale und den Port, den Sie testen möchten, auf Ihre Datenbank zuzugreifen. In unserem Fall sollte der Datenverkehr auf Port 4006 an Server1 gesendet werden und der Datenverkehr auf Port 4008 an 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   |

+------------+

Es funktioniert!

So stellen Sie MaxScale mit ClusterControl bereit

Lassen Sie uns nun sehen, wie Sie ClusterControl verwenden können, um diese Aufgabe zu vereinfachen. Dazu gehen wir davon aus, dass Sie Ihren MariaDB-Cluster zu ClusterControl hinzugefügt haben.

Gehen Sie zu ClusterControl -> Wählen Sie den MariaDB-Cluster -> Cluster-Aktionen -> Load Balancer hinzufügen -> MaxScale.

Hier können Sie einen neuen MaxScale-Knoten bereitstellen oder auch einen vorhandenen importieren ein. Wenn Sie es bereitstellen, müssen Sie die IP-Adresse oder den Hostnamen, die Administrator- und Benutzer-MaxScale-Anmeldeinformationen, die Anzahl der Threads und Ports (Schreib- und Lesezugriff) hinzufügen. Sie können auch angeben, welchen Datenbankknoten Sie der MaxScale-Konfiguration hinzufügen möchten.

Sie können die Aufgabe im Abschnitt ClusterControl-Aktivität überwachen. Wenn es fertig ist, haben Sie einen neuen MaxScale-Knoten in Ihrem MariaDB-Cluster.

Und Ausführen der MaxScale-Befehle über die ClusterControl-Benutzeroberfläche, ohne dass auf die Server über SSH.

Das sieht einfacher aus, als es manuell bereitzustellen, oder?

Fazit

Einen Load Balancer zu haben ist eine gute Lösung, wenn Sie Ihren Datenverkehr ausgleichen oder aufteilen möchten, oder sogar für Failover-Aktionen, und MaxScale als MariaDB-Produkt ist eine gute Option für MariaDB-Datenbanken.

Die Installation ist einfach, aber die Konfiguration und Verwendung könnte schwierig sein, wenn es etwas Neues für Sie ist. In diesem Fall können Sie ClusterControl verwenden, um es einfacher bereitzustellen, zu konfigurieren und zu verwalten.