Introduction
MariaDB MaxScale est un proxy de base de données qui étend la haute disponibilité, l'évolutivité et la sécurité du serveur MariaDB tout en simplifiant le développement d'applications en le découplant de l'infrastructure de base de données sous-jacente.
MariaDB MaxScale est conçu avec une architecture extensible pour supporter des plugins, étendant ses fonctionnalités au-delà de l'équilibrage de charge transparent pour devenir, par exemple, un pare-feu de base de données. Grâce à des plugins intégrés pour plusieurs routeurs, filtres et protocoles, MariaDB MaxScale peut être configuré pour transmettre des demandes de base de données et modifier les réponses de la base de données en fonction des exigences commerciales et techniques - par exemple, pour masquer les données sensibles ou les lectures de balances.
Architecture
Pré-requis
1 Cluster MariaDB
- mariaDB01
- mariaDB02
- mariaDB03
1 Server maxscale
- 1 Cpu - 2 Go RAM
Installation
Nous allons tout d'abord ajouter le repositorie officiel pour bénéficier du package “maxscale”.
$ 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
Une fois le repositorie déclaré sur le server, on lance l'installation de maxscale.
$ yum makecache fast $ yum install -y maxscale
Configuration de MaxScale
Avant de configurer “maxscale”, il va nous falloir créer l'utilisateur (maxscale) ainsi que positionner certains droits sur le cluster de base de données MariaDB.
Création des comptes pour “maxScale” pour le monitoring et pour les applications.
MariaDB [(none)]> CREATE USER 'maxscale'@'%' IDENTIFIED BY 'maxscalepassword'; MariaDB [(none)]> GRANT SELECT ON mysql.user TO 'maxscale'@'%'; MariaDB [(none)]> GRANT SELECT ON mysql.db TO 'maxscale'@'%'; MariaDB [(none)]> GRANT SELECT ON mysql.tables_priv TO 'maxscale'@'%'; MariaDB [(none)]> GRANT SELECT ON mysql.roles_mapping TO 'maxscale'@'%'; MariaDB [(none)]> GRANT SHOW DATABASES ON *.* TO 'maxscale'@'%'; MariaDB [(none)]> GRANT REPLICATION CLIENT on *.* to 'maxscale'@'%';
Maintenant, il nous reste plus qu'a configurer “maxscale” et ajouter les nœuds du cluster MariaDB.
Éditer le fichier “/etc/maxscale/maxscale.cnf”
# MaxScale documentation: # https://mariadb.com/kb/en/mariadb-maxscale-24/ # Global parameters # # Complete list of configuration options: # https://mariadb.com/kb/en/mariadb-maxscale-24-mariadb-maxscale-configuration-guide/ [maxscale] threads=auto # LOG # logdir=/var/log/maxscale/ syslog=0 #log to syslog maxlog=1 #log to /var/log/maxscale log_warning=1 #log warnings log_notice=1 #log notices #log_info=1 #log info #log_debug=1 #log full debug for dev only # Server definitions # # Set the address of the server to the network # address of a MariaDB server. # [server1] type=server address=192.168.1.214 port=3306 protocol=MariaDBBackend [server2] type=server address=192.168.1.66 port=3306 protocol=MariaDBBackend [server3] type=server address=192.168.1.84 port=3306 protocol=MariaDBBackend # Monitor for the servers # # This will keep MaxScale aware of the state of the servers. # MariaDB Monitor documentation: # https://mariadb.com/kb/en/mariadb-maxscale-24-mariadb-monitor/ [MariaDB-Monitor] type=monitor module=mariadbmon servers=server1,server2,server3 user=maxscale password=123 monitor_interval=2000 # Service definitions # # Service Definition for a read-only service and # a read/write splitting service. # # ReadConnRoute documentation: # https://mariadb.com/kb/en/mariadb-maxscale-24-readconnroute/ [Read-Only-Service] type=service router=readconnroute servers=server1,server2,server3 user=maxscale password=123 router_options=slave # ReadWriteSplit documentation: # https://mariadb.com/kb/en/mariadb-maxscale-24-readwritesplit/ [Read-Write-Service] type=service router=readwritesplit servers=server1,server2,server3 user=maxscale password=123 master_failure_mode=fail_on_write disable_sescmd_history=true max_slave_connections=100% # Listener definitions for the services # # These listeners represent the ports the # services will listen on. # [Read-Only-Listener] type=listener service=Read-Only-Service protocol=MariaDBClient port=3306 [Read-Write-Listener] type=listener service=Read-Write-Service protocol=MariaDBClient port=3307
Une fois “maxscale” configuré, on démarre le service et on l'active au lancement du système.
$ systemctl enabled maxscale.service $ systemctl start maxscale.service
On vérifie l'état des services.
[root@maxscale maxscale]# maxctrl list services ┌────────────────────┬────────────────┬─────────────┬───────────────────┬───────────────────────────┐ │ Service │ Router │ Connections │ Total Connections │ Servers │ ├────────────────────┼────────────────┼─────────────┼───────────────────┼───────────────────────────┤ │ Read-Only-Service │ readconnroute │ 0 │ 0 │ server1, server2, server3 │ ├────────────────────┼────────────────┼─────────────┼───────────────────┼───────────────────────────┤ │ Read-Write-Service │ readwritesplit │ 0 │ 0 │ server1, server2, server3 │ └────────────────────┴────────────────┴─────────────┴───────────────────┴───────────────────────────┘
On vérifie l'état des servers.
[root@maxscale maxscale]# maxctrl list servers ┌─────────┬───────────────┬──────┬─────────────┬─────────────────┬──────┐ │ Server │ Address │ Port │ Connections │ State │ GTID │ ├─────────┼───────────────┼──────┼─────────────┼─────────────────┼──────┤ │ server1 │ 192.168.1.214 │ 3306 │ 0 │ Master, Running │ │ ├─────────┼───────────────┼──────┼─────────────┼─────────────────┼──────┤ │ server2 │ 192.168.1.66 │ 3306 │ 0 │ Running │ │ ├─────────┼───────────────┼──────┼─────────────┼─────────────────┼──────┤ │ server3 │ 192.168.1.84 │ 3306 │ 0 │ Running │ │ └─────────┴───────────────┴──────┴─────────────┴─────────────────┴──────┘
Annexe
https://mariadb.com/kb/en/mariadb-maxscale-24/
https://mariadb.com/kb/en/mariadb-maxscale-24-maxctrl/
https://mariadb.com/kb/en/mariadb-maxscale-24-mariadb-maxscale-installation-guide/
https://mariadb.com/kb/en/mariadb-maxscale-24-mariadb-maxscale-configuration-guide/
https://mariadb.com/kb/en/mariadb-maxscale-24-maxscale-failover-with-keepalived-and-maxctrl/
https://mariadb.com/kb/en/mariadb-maxscale-24-automatic-failover-with-mariadb-monitor/
https://mariadb.com/resources/blog/database-firewall-filter-in-maxscale-1-4-1/