diff --git a/HowtoMaxScale.md b/HowtoMaxScale.md index 1ff231bd..3474dda9 100644 --- a/HowtoMaxScale.md +++ b/HowtoMaxScale.md @@ -149,3 +149,47 @@ $ mysql --host --user=USER --password base_de_donn Cela se fait au niveau du routeur et n'est possible que pour le routeur `Readwritesplit`, `readconnroute` étant trop léger pour permettre ce genre de configurations. Pour que le routage ne se fasse pas du tout sur un serveur secondaire ayant un trop grand retard il faut préciser la valeur de l'option `max_slave_replication_lag` avec le nombre de secondes de lags autorisées. Pour que le routeur "attende" que le serveur secondaire puisse retourner une valeur consistente lors d'une lecture suivant des modifications de données, il faut définir l'option `causal_reads` à `true` et que les serveurs ai le paramètre `session_track_system_variables` défini à `last_gtid`. + +### Configuration du mode proxy_protocol + +Si on a plusieurs serveurs qui doivent se connecter vers plusieurs serveurs SQL, on peux activé le mode `proxy_protocol` pour deux raisons : + +* De pouvoir se connecter avec un utilisateur SQL, sans devoir recréer des utilisateurs `user@ip_server_maxscale` +* De savoir quels hôtes est a l'origine d'une requête + +Côté serveur MariaDB, on doit autorisé l'ip du serveur Maxscale, dans la variable `proxy_protocol_networks` : + +~~~ +proxy-protocol-networks=::1, 192.168.2.90, localhost +~~~ + +La variable `proxy_protocol_networks` peut prendre des ips séparé par des virgules, ou alors on peux autorisé tout un sous-réseau par exemple `192.168.0.0/16` +A partir de MariaDB 10.3.6, la variable est dynamique, on peux la modifié comme ceci : + +~~~ +MariaDB [(none)]> SET GLOBAL proxy_protocol_networks='::1, 192.168.2.90, localhost'; +~~~ + +Côté Maxscale, on doit rajouter l'option `proxy_protocol=true` dans la définition de chaque serveurs : + +~~~ +[dbserver1] +type = server +address = 192.0.2.100 +port = 3306 +protocol = MariaDBBackend +proxy_protocol=true +~~~ + +Si on se connecte directement depuis le serveur applicatif a Maxscale on voit que c'est bien l'ip d'origine qui est vu (192.0.2.50), et pas l'ip du serveur Maxscale (192.168.2.90) : + +~~~ +root@192.0.2.50:~# mysql -h 192.168.2.90 -P4006 -u evotest -p + +MariaDB [dbtest]> select user(), current_user(); ++---------------------------------------------------+------------------------------------+ +| user() | current_user() | ++---------------------------------------------------+------------------------------------+ +| evotest@192.0.2.50 | evotest@192.0.2.50 | ++---------------------------------------------------+------------------------------------+ +~~~ \ No newline at end of file