Intento configurar un clúster HA con Percona xtraDB Cluster para replicación MySQL y HAproxy para equilibrio de carga.
HAproxy funciona muy bien con Apache, cuando Apache falla o si no responde, HAproxy enciende otro nodo.
Mi problema comienza con MySQL, también configuré MySQL en el mismo HAproxy pero cuando MySQL no responde, HAproxy no enciende otro nodo. Sin embargo, HAproxy ve que MySQL no responde porque cuando reviso las estadísticas de HAproxy, el servidor MySQL está inactivo.
Mi pregunta es, ¿es posible configurar dos recursos en HAproxy? ¿Puede verificar si Apache está activo y encender otro nodo si no es así Y verificar si MySQL está activo y encender otro nodo si no?
HAproxy.conf:
[...]
frontend redmine
bind 192.168.7.149:80
reqadd X-Forwarded-Proto:\ http
default_backend redmine
frontend redmineS
bind 192.168.7.149:443 ssl crt /etc/ssl/private/quipment.fr.pem
reqadd X-Forwarded-Proto:\ https
default_backend redmine
backend redmine 192.168.7.149:80
redirect scheme https if !{ ssl_fc }
mode http
balance roundrobin
option http-server-close
timeout http-keep-alive 3000
option forwardfor
cookie PHPSESSID prefix
cookie SRVNAME insert
server xtra1 192.168.7.151:80 cookie x1 check
server xtra2 192.168.7.147:80 cookie x2 check
server xtra3 192.168.7.152:80 cookie x3 check
listen mysql-cluster 192.168.7.149:3306
mode tcp
balance roundrobin
option httpchk
server xtra1 192.168.7.151:3306 check port 9200 inter 1000 rise 3 fall 1
server xtra2 192.168.7.147:3306 check port 9200 inter 1000 rise 3 fall 1
server xtra3 192.168.7.152:3306 check port 9200 inter 1000 rise 3 fall 1
[...]
Respuesta1
Su HAProxy no está probando el estado de MySQL ya que en su sección de MySQL le indica que haga pruebas para http (con la línea option httpchk
), debe usaropción mysql-checkentonces debería leerse como
listen mysql-cluster 192.168.7.149:3306
mode tcp
balance roundrobin
option mysql-check user a_test_user
server xtra1 192.168.7.151:3306 check inter 1000 rise 3 fall 1
server xtra2 192.168.7.147:3306 check inter 1000 rise 3 fall 1
server xtra3 192.168.7.152:3306 check inter 1000 rise 3 fall 1
Y deberías tener en tu base de datos MySQL el usuario a_test_user que permita conexiones desde HAProxy.