MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment installer et configurer MaxScale pour MariaDB

Il existe différentes raisons d'ajouter un équilibreur de charge entre votre application et votre base de données. Si vous avez un trafic élevé (et que vous souhaitez équilibrer le trafic entre différents nœuds de base de données) ou si vous souhaitez utiliser l'équilibreur de charge comme point de terminaison unique (donc en cas de basculement, cet équilibreur de charge fera face à ce problème en envoyant le trafic vers le nœud disponible/sain.) Il se peut également que vous souhaitiez utiliser différents ports pour écrire et lire des données dans votre base de données.

Dans tous ces cas, un équilibreur de charge vous sera utile, et si vous avez un cluster MariaDB, une option pour cela consiste à utiliser MaxScale qui est un proxy de base de données pour les bases de données MariaDB.

Dans ce blog, nous allons vous montrer comment l'installer et le configurer manuellement, et comment ClusterControl peut vous aider dans cette tâche. Pour cet exemple, nous utiliserons un cluster de réplication MariaDB avec 1 nœud maître et 1 nœud esclave, et CentOS8 comme système d'exploitation.

Comment installer MaxScale

Nous supposerons que votre base de données MariaDB est opérationnelle, ainsi qu'une machine (virtuelle ou physique) pour installer MaxScale. Nous vous recommandons d'utiliser un hôte différent, donc en cas de défaillance du maître, MaxScale peut basculer vers le nœud esclave, sinon, MaxScale ne peut prendre aucune mesure si le serveur sur lequel il s'exécute tombe en panne.

Il existe différentes façons d'installer MaxScale, dans ce cas, nous utiliserons les référentiels MariaDB. Pour l'ajouter au serveur MaxScale, vous devez exécuter :

$ 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

Maintenant, installez le package MaxScale :

$ yum install maxscale

Maintenant que votre nœud MaxScale est installé, avant de commencer, vous devez le configurer.

Comment configurer MaxScale

Alors que MaxScale effectue des tâches telles que l'authentification, la surveillance, etc., vous devez créer un utilisateur de base de données avec certains privilèges spécifiques :

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

Gardez à l'esprit que les versions 10.2.2 à 10.2.10 de MariaDB nécessitent également :

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

Maintenant que l'utilisateur de la base de données est prêt, voyons les fichiers de configuration. Lorsque vous installez MaxScale, le fichier maxscale.cnf sera créé sous /etc/. Il existe plusieurs variables et différentes manières de le configurer, voyons donc un exemple :

$ 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

Dans cette configuration, nous avons 2 nœuds de base de données, 192.168.100.126 (Maître) et 192.168.100.127 (Esclave), comme vous pouvez le voir dans la section Définition des serveurs.

Nous avons également 2 services différents, un pour la lecture seule, où se trouve le nœud esclave, et un autre pour la lecture-écriture où se trouve le nœud maître.

Enfin, nous avons 2 écouteurs, un pour chaque service. L'écouteur en lecture seule, à l'écoute sur le port 4008, et celui en lecture-écriture, à l'écoute sur le port 4006.

Ceci est un fichier de configuration de base. Si vous avez besoin de quelque chose de plus spécifique, vous pouvez suivre la documentation officielle de MariaDB.

Vous êtes maintenant prêt à le démarrer, alors lancez :

$ systemctl start maxscale.service

Et vérifiez :

$ maxctrl list services
ff
$ maxctrl list servers

Vous pouvez trouver une liste de commandes maxctrl ici, ou vous pouvez même utiliser maxadmin pour le gérer.

Testons maintenant la connexion. Pour cela, vous pouvez essayer d'accéder à votre base de données en utilisant l'adresse IP MaxScale et le port que vous souhaitez tester. Dans notre cas, le trafic sur le port 4006 doit être envoyé au serveur1, et le trafic sur le port 4008 au serveur2.

$ 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   |

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

Ça marche !

Comment déployer MaxScale avec ClusterControl

Voyons maintenant comment vous pouvez utiliser ClusterControl pour simplifier cette tâche. Pour cela, nous supposerons que vous avez ajouté votre cluster MariaDB à ClusterControl.

Allez dans ClusterControl -> Sélectionnez le cluster MariaDB -> Actions du cluster -> Ajouter un équilibreur de charge -> MaxScale.

Ici, vous pouvez déployer un nouveau nœud MaxScale ou vous pouvez également importer un nœud existant une. Si vous le déployez, vous devez ajouter l'adresse IP ou le nom d'hôte, les informations d'identification MaxScale de l'administrateur et de l'utilisateur, le nombre de threads et les ports (écriture et lecture seule). Vous pouvez également spécifier le nœud de base de données que vous souhaitez ajouter à la configuration MaxScale.

Vous pouvez surveiller la tâche dans la section Activité de ClusterControl. Une fois terminé, vous aurez un nouveau nœud MaxScale dans votre cluster MariaDB.

Et exécuter les commandes MaxScale à partir de l'interface utilisateur ClusterControl sans avoir besoin d'accéder au serveur via SSH.

Cela semble plus facile que de le déployer manuellement, non ?

Conclusion

Avoir un équilibreur de charge est une bonne solution si vous souhaitez équilibrer ou diviser votre trafic, ou même pour des actions de basculement, et MaxScale, en tant que produit MariaDB, est une bonne option pour les bases de données MariaDB.

L'installation est facile, mais la configuration et l'utilisation peuvent être difficiles s'il s'agit de quelque chose de nouveau pour vous. Dans ce cas, vous pouvez utiliser ClusterControl pour le déployer, le configurer et le gérer plus facilement.