отказоустойчивость HAproxy mysql

отказоустойчивость HAproxy mysql

Я пытаюсь настроить кластер высокой доступности с Percona xtraDB Cluster для репликации MySQL и HAproxy для балансировки нагрузки.

HAproxy отлично работает с Apache. Если Apache дает сбой или не отвечает, HAproxy переключается на другой узел.

Моя проблема началась с MySQL, я также настроил MySQL в том же HAproxy, но когда MySQL не отвечает, HAproxy не переключается на другой узел. Однако HAproxy видит, что MySQL не отвечает, потому что когда я проверяю статистику HAproxy, сервер MySQL не работает.

Мой вопрос: возможно ли настроить два ресурса в HAproxy? Может ли он проверить, запущен ли Apache, и переключиться на другой узел, если нет, И проверить, запущен ли MySQL, и переключиться на другой узел, если нет?

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
[...]

решение1

Ваш HAProxy не тестирует работоспособность MySQL, так как в разделе MySQL вы указываете на необходимость проведения тестов для http (строкой option httpchk), вы должны использоватьопция mysql-checkпоэтому это должно читаться как

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

И у вас в базе данных MySQL должен быть пользователь a_test_user, разрешающий соединения с HAProxy.

Связанный контент