Failover do mysql do HAproxy

2

Eu tento configurar um cluster de alta disponibilidade com o Percona xtraDB Cluster para replicação do MySQL e o HAproxy para balanceamento de carga.

O haproxy funciona muito bem com o apache, quando o apache falha ou, se não estiver respondendo, o HAproxy ativa outro nó.

Meu problema começa com o MySQL, eu configurei também o MySQL no mesmo HAproxy mas quando o MySQL não está respondendo, o HAproxy não liga outro nó. No entanto, o HAproxy vê que o MySQL não responde porque quando eu verifico as estatísticas do HAproxy, o servidor MySQL está inativo.

A minha pergunta é, é possível configurar dois recursos no HAproxy? Ele pode verificar se o apache está ativo e ligar outro nó se não estiver E verifique se o MySQL está ativo e ligue outro nó, se não estiver?

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
[...]
    
por CharlesS 19.06.2015 / 17:05

1 resposta

2

Seu HAProxy não está testando a integridade do MySQL, pois na sua seção do MySQL você está solicitando testes para http (com a linha option httpchk ), você deve usar option mysql-check então deve ser lido 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

E você deve ter em seu banco de dados MySQL o usuário a_test_user permitindo conexões do HAProxy.

    
por 19.06.2015 / 17:54