22
0
Fork 0

Ajout configuration proxy_protocol

This commit is contained in:
emorino 2022-03-14 11:27:16 +01:00
parent 527939e7d9
commit c5996bd9ee
1 changed files with 44 additions and 0 deletions

View File

@ -149,3 +149,47 @@ $ mysql --host <adresse du serveur maxscale> --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 |
+---------------------------------------------------+------------------------------------+
~~~