Pour la partie repartition de charge entre les slaves, j'utilise depuis des années (2006) du LVS géré par keepalived.
En particulier une partie intéressante: MISC_CHECK { # MISC healthchecker misc_path <STRING>|<QUOTED-STRING> # External system script or program misc_timeout <INTEGER> # Script execution timeout
# If set, exit code from healthchecker is used # to dynamically adjust the weight as follows: # exit status 0: svc check success, weight # unchanged. # exit status 1: svc check failed. # exit status 2-255: svc check success, weight # changed to 2 less than exit status. # (for example: exit status of 255 would set # weight to 253) misc_dynamic
Donc en jouant bien sur ton script de monitoring, tu peux ejecter les serveurs trop en retard, et alterer le poids de chaque serveur en fonction de la charge.
En faisant du lvs-dr ca depotte pas mal, meme avec une dizaine de slaves, sans SPOF.
On 2013-09-09 09:45, Greg wrote:
Bonjour,
pour l'instant je n'ai pas trouvé mieux qu'une gestion coté applicatif pour répartir les requêtes de lecture (SELECT...) sur les slaves MySQL, et les requêtes d'écritures sur le master, avec gestion un peu plus intelligente qu'un simple load-balancer :
- regex sur la requête pour pouvoir l'orienter
- gestion des slaves down, spares
- exclusion des slaves ayant trop de délais de réplication
Pour tout ça MySQL Proxy semblait tout faire sur le papier, à l'aide de scripts LUA : http://dev.mysql.com/doc/relnotes/mysql-proxy/en/index.html
Avez vous des retours sur cet outil ? Où sur d'autres outils ?
Greg
Liste de diffusion du FRsAG http://www.frsag.org/