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

Introduction à l'administration de MaxScale Utilisation de maxctrl pour le cluster MariaDB

MariaDB Cluster se compose de MariaDB Server avec Galera Cluster et MariaDB MaxScale. En tant que solution de réplication multimaître, tout serveur MariaDB avec Galera Cluster peut fonctionner comme serveur principal. Cela signifie que les modifications apportées à n'importe quel nœud du cluster sont répliquées sur tous les autres nœuds du cluster, en utilisant la réplication basée sur la certification et l'ordre global des transactions pour le moteur de stockage InnoDB. MariaDB MaxScale est un proxy de base de données, situé au-dessus du serveur MariaDB, qui étend la haute disponibilité, l'évolutivité et la sécurité tout en simplifiant le développement d'applications en le dissociant de l'infrastructure de base de données sous-jacente.

Dans cette série de blogs, nous allons examiner l'administration de MaxScale à l'aide de maxctrl pour notre cluster MariaDB. Dans ce premier article de la série de blogs, nous allons couvrir l'introduction et quelques bases de l'utilitaire de ligne de commande maxctrl. Notre configuration se compose d'un serveur MaxScale et d'un MariaDB 10.4 à 3 nœuds avec Galera 4, comme illustré dans le schéma suivant :

Notre cluster MariaDB a été déployé et géré par ClusterControl, tandis que notre hôte MaxScale est un nouvel hôte dans le cluster et n'a pas été déployé par ClusterControl dans le cadre de cette procédure pas à pas.

Installation MaxScale

L'installation de MaxScale est assez simple. Choisissez le bon système d'exploitation sur la page de téléchargement de MariaDB pour MaxScale et téléchargez-le. L'exemple suivant montre comment installer MaxScale sur un hôte 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

Après le démarrage du démon, par défaut, les composants MaxScale s'exécutent sur les ports suivants :

  • 0.0.0.0:4006 - Écouteur de fractionnement en lecture-écriture par défaut.
  • 0.0.0.0:4008 - Écouteur circulaire par défaut.
  • 127.0.0.1:8989 - API de repos MaxScale.

Les ports ci-dessus sont modifiables. Il est courant qu'un serveur MaxScale autonome en production s'exécute avec la séparation lecture/écriture sur le port 3306 et le tourniquet sur le port 3307. C'est cette configuration que nous allons déployer dans cet article de blog.

Fichiers importants et structure de répertoires

Une fois le package installé, vous obtiendrez les utilitaires/programmes suivants :

  • maxscale - Le MaxScale lui-même.
  • maxctrl - Le client d'administration en ligne de commande pour MaxScale qui utilise l'API REST MaxScale pour la communication.
  • maxadmin - Le client d'administration et de surveillance MaxScale obsolète. Utilisez maxctrl à la place.
  • maxkeys - Cet utilitaire écrit dans le fichier .secrets, dans le répertoire spécifié, la clé de chiffrement AES et le vecteur d'initialisation utilisés par l'utilitaire maxpasswd, lors du chiffrement des mots de passe utilisés dans le fichier de configuration MariaDB MaxScale.
  • maxpasswd - Cet utilitaire crée un mot de passe crypté à l'aide d'un fichier .secrets précédemment créé à l'aide de maxkeys.

MaxScale chargera toutes les options de configuration à partir des emplacements suivants, dans l'ordre particulier :

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

Pour en savoir plus sur la configuration de MaxScale, consultez le Guide de configuration de MaxScale.

Une fois MaxScale initialisé, les fichiers et structures de répertoires par défaut sont :

  • Répertoire de données MaxScale :/var/lib/maxscale
  • Fichier PID MaxScale :/var/run/maxscale/maxscale.pid
  • Fichier journal MaxScale :/var/log/maxscale/maxscale.log
  • Documentation MaxScale :/usr/share/maxscale

MaxCtrl - La CLI

Une fois démarré, nous pouvons utiliser le client de ligne de commande MaxCtrl pour administrer MaxScale en utilisant l'API MaxScale REST écoute sur le port 8989 sur l'hôte local. Les identifiants par défaut pour l'API REST sont "admin:mariadb". Les utilisateurs utilisés par l'API REST sont les mêmes que ceux utilisés par l'interface réseau MaxAdmin. Cela signifie que tous les utilisateurs créés pour l'interface réseau MaxAdmin doivent travailler avec l'API REST MaxScale et MaxCtrl.

Nous pouvons utiliser l'utilitaire maxctrl en mode interactif, similaire au client mysql. Tapez simplement "maxctrl" et vous passerez en mode interactif (où l'invite est passée de l'invite du shell à l'invite maxctrl), comme dans la capture d'écran suivante :

Alternativement, nous pouvons exécuter la même commande directement dans l'invite du shell, par exemple :

Les options de la commande MaxCtrl dépendent de la version de MaxScale qui l'accompagne. Au moment d'écrire ces lignes, la version MaxScale est 2.4 et vous devriez consulter cette documentation pour une liste complète des commandes. MaxCtrl utilise l'interface de l'API MaxScale REST, qui est expliquée en détail ici.

Ajout de serveurs MariaDB dans MaxScale

Lorsque nous démarrons notre MaxScale pour la première fois, il génère un fichier de configuration sur /etc/maxscale.cnf avec des paramètres par défaut et des exemples. Nous n'allons pas utiliser cette configuration et nous allons créer la nôtre à la place. Créez une sauvegarde de ce fichier car nous voulons le vider plus tard :

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

Redémarrez le MaxScale pour tout recommencer :

$ systemctl restart maxscale

Le terme "serveur" dans MaxScale signifie essentiellement le serveur backend MariaDB, comme dans ce cas, les 3 nœuds de notre cluster MariaDB. Pour ajouter tous les 3 serveurs MariaDB Cluster dans l'environnement d'exécution MaxScale, utilisez les commandes suivantes :

$ 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

Pour vérifier les serveurs ajoutés, utilisez la commande list :

$ maxctrl list servers

Et vous devriez voir le résultat suivant :

Ajout de la surveillance dans MaxScale

La prochaine étape consiste à configurer le service de surveillance pour l'utilisation de MaxScale. MaxScale prend en charge un certain nombre de modules de surveillance en fonction du type de base de données, à savoir :

  • Moniteur MariaDB
  • Moniteur Galera
  • Moniteur de cluster
  • Moniteur ColumnStore
  • Moniteur Aurora

Dans cette configuration, nous allons utiliser le module Galera Monitor appelé "galeramon". Tout d'abord, nous devons créer un utilisateur de base de données à utiliser par MaxScale sur l'un des serveurs du cluster MariaDB. Dans cet exemple, nous avons choisi mariadbgalera1, 192.168.0.221 pour exécuter les instructions suivantes :

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

Où 192.168.0.220 est l'adresse IP de notre serveur MaxScale.

Il n'est pas sûr de stocker le mot de passe utilisateur maxscale_monitor en texte brut. Il est fortement recommandé de stocker le mot de passe dans un format crypté à la place. Pour ce faire, nous devons générer une clé secrète spécifiquement pour cette instance MaxScale. Utilisez l'utilitaire "maxkeys" pour générer la clé secrète qui sera utilisée par MaxScale à des fins de chiffrement et de déchiffrement :

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

Nous pouvons maintenant utiliser l'utilitaire maxpasswd pour générer la valeur chiffrée de notre mot de passe :

$ maxpasswd MaXSc4LeP4ss
D91DB5813F7C815B351CCF7D7F1ED6DB

Nous utiliserons toujours la valeur ci-dessus à la place lors du stockage de nos identifiants d'utilisateur de surveillance dans MaxScale. Nous sommes maintenant prêts à ajouter le service de surveillance Galera dans MaxScale en utilisant maxctrl :

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

Vérifiez avec la commande suivante :

Ajout de services dans MaxScale

Le service est essentiellement la manière dont MaxScale doit acheminer les requêtes vers les serveurs principaux. MaxScale 2.4 prend en charge plusieurs services (ou routeurs), à savoir :

  • Avrouteur
  • Binlogrouteur
  • Chat
  • CLI
  • HintRouter
  • Readconnroute
  • Readwritesplit
  • SchemaRouter
  • SmartRouter

Pour notre cluster MariaDB, nous n'avons besoin que de deux services de routage :le fractionnement en lecture-écriture et l'équilibrage de charge à tour de rôle. Pour le fractionnement lecture-écriture, les requêtes d'écriture seront transmises à un seul serveur MariaDB jusqu'à ce que le serveur soit inaccessible, où MaxScale transmettra ensuite les requêtes d'écriture au prochain nœud disponible. Pour l'équilibrage à tour de rôle, les requêtes seront transmises à tous les nœuds principaux de manière circulaire.

Créer un service de routage pour round-robin (ou multi-maître) :

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

Créer un autre service de routage pour le fractionnement en lecture-écriture (ou maître unique) :

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

Vérifier avec :

Tous les composants créés avec succès par MaxCtrl généreront leur propre fichier de configuration sous / var/lib/maxscale/maxscale.cnf.d. À ce stade, le répertoire ressemble à ceci :

$ 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

Ajout d'écouteurs dans MaxScale

Les écouteurs représentent les ports sur lesquels le service écoutera les connexions entrantes. Il peut s'agir d'un port ou d'un fichier socket UNIX et le type de composant doit être "listener". Généralement, les auditeurs sont liés aux services. Dans notre configuration, nous allons créer deux écouteurs - Read-Write Listener sur le port 3306 et Round-Robin Listener sur le port 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

Vérifiez avec les commandes suivantes :

À ce stade, notre MaxScale est maintenant prêt à équilibrer la charge des requêtes pour notre cluster MariaDB. Depuis les applications, envoyez les requêtes à l'hôte MaxScale sur le port 3306, où les requêtes d'écriture toucheront toujours le même nœud de base de données tandis que les requêtes de lecture seront envoyées aux deux autres nœuds. Ceci est également connu sous le nom de configuration à écrivain unique. Si vous souhaitez utiliser une configuration multi-écrivain, où les écritures seront transmises à tous les nœuds backend MariaDB basés sur des algorithmes d'équilibrage à tour de rôle. Vous pouvez encore affiner l'équilibrage en utilisant la priorité et le poids.

Encore une fois, lors de la modification des options de configuration via maxctrl, tous les composants créés avec succès auront leur propre fichier de configuration dans /var/lib/maxscale/maxscale.cnf.d, comme indiqué dans la sortie suivante :

$ 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

Les options de configuration ci-dessus peuvent être directement modifiées pour mieux répondre à vos besoins, mais cela nécessite le redémarrage du service MaxScale pour charger les nouvelles modifications. Si vous souhaitez recommencer à zéro, vous pouvez tout effacer dans ce répertoire et redémarrer MaxScale.

Dans le prochain épisode, nous examinerons les commandes de gestion et de surveillance de MaxCtrl pour notre cluster MariaDB.