Conmutación por error de HAproxy mysql

Conmutación por error de HAproxy mysql

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.

información relacionada