Précisions pour MySQL (check simple et avancé)

This commit is contained in:
jlecour 2017-03-15 21:57:49 +01:00
parent 67b29a233f
commit 173d176d38

View file

@ -204,6 +204,29 @@ listen memcached 127.0.0.1:11211
### Exemple pour MySQL
Il existe 2 modes principaux pour un proxy MySQL :
* le mode simple, qui effectue un test de connexion au serveur MySQL ;
* le mode avancé, qui exécute des tests poussés (et personnalisés) pour valider le bon fonctionnement du serveur.
#### Mode simple
HAProxy fourni une option "mysql-check".
Il va alors faire une connexion identifiée au serveur MySQL, puis la fermer et vérifiée dans les infos renvoyées que tout semble correct.
Ce mode ne nécessite pas d'outillage supplémentaire et nous le recommandons lorsqu'HAProxy agit seulement comme un proxy et pas comme un load-balancer ou pour de la tolérance de panne.
~~~
listen mysql 127.0.0.1:3306
mode tcp
option mysql-check user haproxy_check
server sql00 192.0.2.1:3306 check
~~~
#### Mode avancé
La version avancée consiste à utiliser un check http pour déterminer l'état du serveur.
~~~
listen mysql 127.0.0.1:3306
option httpchk
@ -211,15 +234,17 @@ listen mysql 127.0.0.1:3306
server sql01 192.0.2.2:3306 check port 8306 backup
~~~
On note l'option **httpchk** qui va permettre de faire un check en HTTP et vérifier des conditions avancées (réplication OK, etc.) grâce à différents scripts (inspirés de ce [vieux blog post](http://sysbible.org/2008/12/04/having-haproxy-check-mysql-status-through-a-xinetd-script/)).
On note l'option **httpchk** qui va permettre de faire un check en HTTP et vérifier des conditions avancées (réplication OK, etc.).
`/etc/xinetd.d/mysqlchk` :
Un moyen simple (inspirés de ce [vieux blog post](http://sysbible.org/2008/12/04/having-haproxy-check-mysql-status-through-a-xinetd-script/)) est de créer un script qui sera déclenché par **xinetd**.
On ajoute un service à xinetd, dans `/etc/xinetd.d/mysqlchk` :
~~~
service mysqlchk {
flags = REUSE
socket_type = stream
port = 80
port = 8306
wait = no
user = root
server = /root/mysqlchk
@ -229,9 +254,9 @@ service mysqlchk {
}
~~~
`/root/mysqlchk` :
On crée le script a exécuter dans `/root/mysqlchk` :
~~~
~~~{.bash}
MYSQL_HOST="127.0.0.1"
MYSQL_PORT="3306"
MYSQL_USERNAME="mysqlchk"
@ -263,11 +288,14 @@ fi
`/root/nrpe-check-mysql-slave.sh` :
~~~
~~~{.bash}
#!/bin/sh
exec /usr/lib/nagios/plugins/check_mysql --check-slave -u debian-sys-maint -p PASSWORD -w 5 -c 60
~~~
Il est également possible d'utiliser tout programme ou script, pourvu qu'au final il puisse être accessible en HTTP.
### HTTP basic authentication
Pour mettre en place une authentification HTTP basique au niveau d'HAProxy, définir dans la section globale une liste d'utilisateur, soit avec un mot de passe en clair soit avec un mot de passe chiffré :