From 173d176d38cdd7c598538c7664418c55317f501d Mon Sep 17 00:00:00 2001 From: jlecour Date: Wed, 15 Mar 2017 21:57:49 +0100 Subject: [PATCH] =?UTF-8?q?Pr=C3=A9cisions=20pour=20MySQL=20(check=20simpl?= =?UTF-8?q?e=20et=20avanc=C3=A9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HowtoHaproxy.md | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/HowtoHaproxy.md b/HowtoHaproxy.md index c3d4614d..71e96660 100644 --- a/HowtoHaproxy.md +++ b/HowtoHaproxy.md @@ -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é :